// Generated message map functions
//{{AFX_MSG(CJLSetupDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSelchangeComboVersionset();
afx_msg void OnSelchangeComboModeset();
afx_msg void OnCheckAuto();
afx_msg void OnButtonSet();
afx_msg void OnButtonDefault();
afx_msg void OnButtonNext();
afx_msg void OnButtonCancel();
afx_msg void OnButtonBack();
afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnButtonCancel2();//主要是这几个函数
afx_msg void OnButtonDefault2();//
afx_msg void OnButtonOk2();//
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
..............................
BEGIN_MESSAGE_MAP(CJLSetupDlg, CDialog)
//{{AFX_MSG_MAP(CJLSetupDlg)
ON_CBN_SELCHANGE(IDC_COMBO_VERSIONSET, OnSelchangeComboVersionset)
ON_CBN_SELCHANGE(IDC_COMBO_MODESET, OnSelchangeComboModeset)
ON_BN_CLICKED(IDC_CHECK_AUTO, OnCheckAuto)
ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)
ON_BN_CLICKED(IDC_BUTTON_DEFAULT, OnButtonDefault)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
ON_BN_CLICKED(IDC_BUTTON_BACK, OnButtonBack)
ON_WM_HELPINFO()
ON_WM_SYSCOMMAND()
ON_BN_CLICKED(IDC_BUTTON_CANCEL2, OnButtonCancel2)//关联的资源
ON_BN_CLICKED(IDC_BUTTON_DEFAULT2, OnButtonDefault2)//
ON_BN_CLICKED(IDC_BUTTON_OK2, OnButtonOk2)//
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
....................................
BOOL CJLSetupDlg::OnInitDialog() 
{
CDialog::OnInitDialog(); if(PWMparam.ntype==0)
{
GetDlgItem(IDC_BUTTON_OK2)->ShowWindow(SW_HIDE);//--->调试到这出错
GetDlgItem(IDC_BUTTON_CANCEL2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_DEFAULT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_BACK)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_NEXT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_CANCEL)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_DEFAULT)->ShowWindow(SW_SHOW);
}
else
{
GetDlgItem(IDC_BUTTON_OK2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_CANCEL2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_DEFAULT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_BACK)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_NEXT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_CANCEL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_DEFAULT)->ShowWindow(SW_HIDE);
}

AddVersionName();
InitPrameters();
ChangeDataFromVersion(m_sVersion);
InitChannel();
SetRegister();
// TODO: Add extra initialization here

return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}
问题是这样的,也就是三个BUTTON按钮,取了IDC_BUTTON_OK2,IDC_BUTTON_CANCEL2,IDC_BUTTON_DEFAULT2三个ID,结果编译链接都没错,运行就崩,调试到上面那个位置就出错,结果我把IDC_BUTTON_OK2,IDC_BUTTON_CANCEL2,IDC_BUTTON_DEFAULT2改为IDC_BUTTON_OK_II,IDC_BUTTON_CANCEL_II,IDC_BUTTON_DEFAULT_II又什么都好了,我就纳闷了,我以前ID带个数字也没出现这种情况,今天还真是诡异了,求解...............

解决方案 »

  1.   

    可能是资源ID未关联对应的问题。。IDC_BUTTON_OK2,IDC_BUTTON_CANCEL2,IDC_BUTTON_DEFAULT2这三个ID仅在resource中定义了,但并未和控件相关联。clean、rebuild all下就可以找到问题了。有时不clean的话,还是链接的之前已生成好的。。
      

  2.   

    你所谓崩溃应该是ASSERT吧
    点重试断下来然后看调用堆栈
    定位到自己的代码就知道问题是什么了
    肯定和你所谓数字ID没有关系
      

  3.   

    或者注释掉这句看看,GetDlgItem(IDC_BUTTON_OK2)->ShowWindow(SW_HIDE);如果还是崩掉,那么到 DoDataExchange里面看看,是不是你什么时候删除了资源里面的控件,而对话框上面关联的变量没有删除!
      

  4.   

    是否和系统ID例如IDOK,IDCANCEL等冲突了?
      

  5.   

    你说的没错,一开始我设计按钮的时候大小不合适,结果我就直接删除了资源按钮,然后又重新设计按钮大小,取的ID和之前删除的按钮ID相同,结果就出现这个问题
      

  6.   

    可是明明resource.h定义了,消息映射中又关联了,怎么就出现这种问题,ID什么的绝对没有错
      

  7.   

    手工修改ID需要注意多个地方的对应修改,特别是该ID已经设置了消息响应后
    楼主最好先删除消息响应,再修改ID后添加消息响应