我有一个非常古老的MFC应用程序,多年来被许多人所感动(大多数人甚至可能都不是CS人),接下来,我喜欢称之为&#34 ;无政府状态的设计模式。"
无论如何,其中一个对话框有一系列56个垂直滑块和复选框。但是,对话框中还有其他滑块和复选框,如下所示。
现在,问题是附加的滑块和复选框采用与对话框的滑块/复选框系列顺序排列的ID。我的任务是在系列中添加更多滑块和复选框(在Slider Control组框的空白处)不幸的是,由于IDC_SLIDER57
到IDC_SLIDER61
已经在对话框中(复选框也是如此) ,现有代码,例如下面的代码段将会破坏:
pVSlider = (CSliderCtrl *)GetDlgItem(IDC_SLIDER1+i);
有没有更好的方法来修改资源文件而不手动执行?我已经看到了一个名为ResOrg的第三方工具,看起来它可以帮我做我想要的,但软件有点贵,特别是因为我只使用它一次。我想我可以试试这个演示,但限制可能会限制我。
仅供参考,我使用的是Visual C ++ 6.0(是的......我知道,不要笑,它会被强加给我)。
答案 0 :(得分:7)
而不是写作:
pVSlider = (CSliderCtrl *)GetDlgItem(IDC_SLIDER1+i);
你可以写:
pVSlider = (CSliderCtrl *)GetDlgItem(GetSliderID(i));
其中GetSlider
是一个返回滑块号i的id的函数。
GetSlider功能
int GetSliderID(int nslider)
{
static int sliderids[] = {IDC_SLIDER1, IDC_SLIDER2, IDC_SLIDER3, .... IDC_SLIDERn};
ASSERT(nslider < _countof(sliderids));
return sliderids[nslider];
}
使用此方法,IDC_SLIDERn
符号不需要具有连续值。