win32项目中假如对话框有10个控件:IDC_EDIT1,IDC_EDIT2,IDC_EDIT3...如果不用枚举,如何根据用户输入的数字1,2,3来查到到控件IDC_EDIT1,IDC_EDIT2,IDC_EDIT3?

解决方案 »

  1.   

    将资源中,定义IDC_EDIT1,IDC_EDIT2,IDC_EDIT3的ID,改成连续的,比如IDC_EDIT1 为200;那么IDC_EDIT2:201,IDC_EDIT3:202
    GetDlgItem(IDC_EDIT1+i)来取得!
      

  2.   


    这个问题不难
    #define Edit_X(x) IDC_EDIT##x
    用户输入数字n,就这样调用
    GetDlgItem(Edit_X(n))->SetWindowText("成功了");
      

  3.   

    自己定义一个数组就行了10个空间就定义UINT nCtrl[10],初始化的时候将你对应的控件id赋值就行了
    到时找的时候根据你初始化的值来查找数组下标就OK了
      

  4.   


    你觉得这样能解决问题?俺倒不觉得。
    C++跟VB不一样的,宏在编译期间就展开了,而不是在运行期间匹配,没有宏替换一说。
      

  5.   

    许久了才来看这个已结贴子,发现居然吵了起来。当时为了怕自己忘记结贴就匆忙给分结贴,最终我这些方法都没有用,而是使用了枚举的办法来解决的。因为大家贴出来代码的时候我的代码已经写完,功能完成后就没有试验大家的功能,特此说明一下,防止误导。事过许久,那个程序的代码是在另外一个公司做的,本人因种种原因从那家公司离开了,代码是不允许copy的,所以无法贴出来,请大家见谅。
      

  6.   

    将资源中,定义IDC_EDIT1,IDC_EDIT2,IDC_EDIT3的ID,改成连续的,比如IDC_EDIT1 为200;那么IDC_EDIT2:201,IDC_EDIT3:202
    GetDlgItem(IDC_EDIT1+i)来取得!
    ========================================
    实际使用中感觉这个还不错。IDC_EDIT1其实就是一个整数值,只要把连续的id+上一个固定值就可以得到你想要的。刚才我试验了一下,这个挺好
      

  7.   

    如果id不是连续的,也可以用个二维数组把id记录一下也可以