这个程序分层主要是这样:主框架下有个左边窗口,左边窗口里有个CTabCtrl控件,这个控件标签第三页上我动态画了几个按钮,主要目的就是为了相应单击消息。也给其添加了消息响应 :.H中afx_msg void OnButtonClicked(WPARAM   wParam,   LPARAM   lParam);           .CPP中  ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN_DOCUMENT, IDC_BTN_HELP, OnButtonClicked)        按钮创建CButton *pButton = new CButton;
pButton -> Create(_T("共享文档"), WS_GROUP |WS_CHILD |WS_VISIBLE |BS_PUSHBUTTON, 
CRect(10,20,60,40), &m_wndQuickList, IDC_BTN_DOCUMENT);函数实现:
  void CDlgLeft::OnButtonClicked(WPARAM  wParam,   LPARAM  lParam)
{
switch(HIWORD(wParam))   
{   
case BN_CLICKED:   
{
switch(LOWORD(wParam))   
{   
case   IDC_BTN_DOCUMENT:   
{
MessageBox("gan"); 
}
break;

}
}
break;
}
}按钮可以显示出来且正常,在第三页,但是我点了按钮,MSGBOX弹出来,为什么?怎么解决..跟父窗口应该没什么关系吧?

解决方案 »

  1.   

    ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN_DOCUMENT, IDC_BTN_HELP, OnButtonClicked)这个OnButtonClicked消息响应函数的原型你是不是添加错了,
    afx_msg void OnButtonClicked(UITN nID);应该是这样的
      

  2.   

    从IDC_BTN_DOCUMENT到IDC_BTN_HELP的ID连续么?
      

  3.   


    我改成  void CDlgLeft::OnButtonClicked(UINT nID)
    {
    switch (nID)
    {
    case IDC_BTN_DOCUMENT:
    {
    MessageBox("f");
    }
      break;
    }
     
    }  当然头文件也改了,还是出不来..  - -!
      

  4.   


    改了还是不行..
      
    之后试了ON_NOTIFY_RANGE 貌似也不行,也可能是我NOTIFY函数写错了..哪位大侠来说说.. 
      

  5.   

    你在switch (nID)这个位置下一个断点看看能不能断到
    我觉得应该是执行了吧
      

  6.   


    SWITCH(nID)下了个断点,没断到..一个多线程的很大的程序。
    按钮的创建那倒是断到了.. 主框架的初始化等都有到,我是不是程序位置放的不对?我把这些消息上面的一股脑放在了主框架类中.. 有必要重新重绘个BUTTON类不? 不过我觉得跟这个没太大关系..
      

  7.   

      有一点补充一下, 多线程断点,不是太会..呵呵。
    程序结构是这样的:主框架下有个左边窗口,左边窗口里有个CTabCtrl控件,这个控件标签第三页上我先用ListCtrl初始化了,然后在上面动态画的几个按钮. 然后消息响应函数等都是在左边窗口类中写的,不知道这个有没有影响..
      

  8.   

    在 PreTranslateMessage 里试一试看看能不能截获
      

  9.   

    按钮创建CButton *pButton = new CButton;
    pButton -> Create(_T("共享文档"), WS_GROUP |WS_CHILD |WS_VISIBLE |BS_PUSHBUTTON,  
    CRect(10,20,60,40), &m_wndQuickList, IDC_BTN_DOCUMENT);上面代码,楼主是写在哪的?
      

  10.   

    伪代码
    if (pMsg->message == wm_commamd && id == LOWORD(pMsg->wParam))
    {
        pButton ->OnButtonClicked(pMsg->wParam, pMsg->lParam);
    }
      

  11.   


      我写在主框架下的左对话框里在,想半天,我知道写错了。不应该在按钮的祖父类里面写,哈哈..正在改在..对MFC机制不是太熟,我现在给ListCtrl派生了个类CQukKeyListCtrl,然后用这个类给第三页标签初始化了,我现在正在这个类里面写按钮及按钮的消息处理..我给CQukKeyListCtrl类加了个成员函数CreateButton,然后在里面创建按钮..我不知道其第四个参数CWnd* pParentWnd应该怎么,我用的this好像按钮出不来.. 我该怎么弄?需要弄个按钮继承类吗??