关于DDX_Control的使用

.h部分

class CMFCDlg : public CDialogEx
{
// 构造
public:
    CMFCDlg(CWnd* pParent = nullptr);    // 标准构造函数
    CBitmapButton    m_WorkBtn[9];


// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_MFC_DIALOG };
#endif
    afx_msg void OnBtnWork00();
    afx_msg void OnBtnWork01();
    afx_msg void OnBtnWork02();
    afx_msg void OnBtnWork03();
    afx_msg void OnBtnWork04();
    afx_msg void OnBtnWork05();
    afx_msg void OnBtnWork06();
    afx_msg void OnBtnWork07();

......

.CPP部分

void CMFCDlg::DoDataExchange(CDataExchange* pDX)
{
    for (int i = 0; i < 8; i++)
    {
        DDX_Control(pDX, IDC_MAI_BTNWORK00 + i, m_WorkBtn[i]);
    }

    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCDlg, CDialogEx)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_MAI_BTNWORK00, &CMFCDlg::OnBtnWork00)
    ON_BN_CLICKED(IDC_MAI_BTNWORK01, &CMFCDlg::OnBtnWork01)
    ON_BN_CLICKED(IDC_MAI_BTNWORK02, &CMFCDlg::OnBtnWork02)
    ON_BN_CLICKED(IDC_MAI_BTNWORK03, &CMFCDlg::OnBtnWork03)
    ON_BN_CLICKED(IDC_MAI_BTNWORK04, &CMFCDlg::OnBtnWork04)
    ON_BN_CLICKED(IDC_MAI_BTNWORK05, &CMFCDlg::OnBtnWork05)
    ON_BN_CLICKED(IDC_MAI_BTNWORK06, &CMFCDlg::OnBtnWork06)
    ON_BN_CLICKED(IDC_MAI_BTNWORK07, &CMFCDlg::OnBtnWork07)
END_MESSAGE_MAP()

void CMFCDlg::OnBtnWork00() { }
void CMFCDlg::OnBtnWork01() { }
void CMFCDlg::OnBtnWork02() { }
void CMFCDlg::OnBtnWork03() { }
void CMFCDlg::OnBtnWork04() { }
void CMFCDlg::OnBtnWork05() { }
void CMFCDlg::OnBtnWork06() { }
void CMFCDlg::OnBtnWork07() { }

..............

这个程序在编译的时候没有问题,但是执行的时候就会报中断

 

这个循环应该是i<=8吧。

for (int i = 0; i < 8; i++)
    {
        DDX_Control(pDX, IDC_MAI_BTNWORK00 + i, m_WorkBtn[i]);
    }

请教高手指导

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y