aud*_*tic 1 c++ resources mfc visual-studio visual-c++
我有一个很老的MFC应用程序,多年来被很多人所感动(大多数人甚至可能都不是CS人),接下来,我喜欢称之为"无政府状态的设计模式".
无论如何,其中一个对话框有一系列56个垂直滑块和复选框.但是,对话框中还有其他滑块和复选框,如下所示.
现在,问题是附加的滑块和复选框采用与对话框的滑块/复选框系列顺序排列的ID.我的任务是在系列中添加更多的滑块和复选框(在Slider Control组框的空白处)不幸的是,由于IDC_SLIDER57through IDC_SLIDER61已经在对话框中(复选框也是如此),现有的代码,如下面的代码段将打破:
pVSlider = (CSliderCtrl *)GetDlgItem(IDC_SLIDER1+i);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来修改资源文件而不手动执行?我见过一个名为ResOrg的第三方工具,看起来它会帮助我做我想要的,但软件有点贵,特别是因为我只会使用它一次.我想我可以试试这个演示,但限制可能会限制我.
仅供参考,我使用的是Visual C++ 6.0(是的......我知道,不要笑,这是强迫我的).
而不是写:
pVSlider = (CSliderCtrl *)GetDlgItem(IDC_SLIDER1+i);
Run Code Online (Sandbox Code Playgroud)
你可以写:
pVSlider = (CSliderCtrl *)GetDlgItem(GetSliderID(i));
Run Code Online (Sandbox Code Playgroud)
where 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];
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,IDC_SLIDERn符号不需要具有顺序值.