MFC 控件与变量关联问题

问题遇到的现象和发生背景

题主在写一个有很多控件的MFC程序时,自己写了控件的类,想把控件与类的数组关联起来,但是循环内第一个控件的关联类型是类的数组了。

问题相关代码,请勿粘贴截图

这里是我定义的类:

show_static m_tabelpic[36];

这里是循环关联的部分:

    for (int i = 0; i < 36; i++)
    {
          DDX_Control(pDX, IDC_STATIC_00 + i, m_tabelpic[i]);
    }
运行结果及报错内容

一开始运行之后弹出窗口“不支持尝试支持的操作”,之后我看到第一个控件的关联变量发现了其关联的类型不对,为下图:

img

于是问一下大家,有见过这个问题的嘛?这个问题该怎么解决。

我的解答思路和尝试过的方法
我想要达到的结果

把你的DDX_Control先去掉,直接在OnInitDialog()函数中添加以下语句,实现你的目的,有帮助请采纳谢谢!

for (int i = 0; i < 36; i++)
    {
        HWND hWndCtrl;
        GetDlgItem( IDC_STATIC_00 + i, &hWndCtrl);
        m_tabelpic[i].SubclassWindow(hWndCtrl);
    }

m_tabelpic[i]有调用Create初始化么?是不是没有加载。

单独一个控件绑定一个变量,然后把所有的变量指针,放到一个数组里面进行管理。

二、手动添加变量方法:
还是以Slider控件为例,

1. 首先在头文件DlgTest.h中添加

CSliderCtrl m_slider;

2. 然后然后在对应的DlgTest.cpp文件中找到CDlgTest::DoDataExchange函数,添加代码:

DDX_Control(pDX, IDC_Slider_test, m_slider);

 

如果是关联数字(value)变量,以Slider控件为例,首先在DlgTest.h中添加

int m_Slider_value;

然后在对应DlgTest.cpp文件中找到CDlgTest::DoDataExchange函数,添加代码:

DDX_Text(pDX, IDC_Slider_test, m_Slider_value);          //IDC_Edit1为控件的ID号

即可。

你在绑定变量的时候,位置没有放在正确的位置呢?