从CBUTTON派生类,然后用子类化技术与对话框中的按钮相连

解决方案 »

  1.   

    class CMyButton : public CButton {...};
    // m_myButton is a CMyButton object member of CAboutDlgBOOL CXXXDlg::OnInitDialog() 
    {
      CDialog::OnInitDialog();
      // IDC_BUTTON1 is the ID for a button on the 
      // dialog template used for CAboutDlg.
      m_myButton.SubclassDlgItem(IDC_BUTTON1, this);  return TRUE;  // Return TRUE unless you set the focus to a control
                // EXCEPTION: OCX Property Pages should return FALSE
    }
      

  2.   

    agree to : masterz() (
      

  3.   

    比如我希望得到按钮的MouseDown和MouseUp消息,普通CButton只有Click,怎么办,从CButton派生一个类,叫CNotifyButton,然后在ClassView窗口,右键这个类,选择添加windows消息,弹出的窗口右下角把类类型选成window,这时可以添加所有的window消息,选择Mouse消息加以处理,比如自己定义一个窗口消息抛给主窗口
    然后在主窗口画button,然后为button建立控件成员对象,这时回到主窗口类声明中,手动把所有对象的CButton类描述改成CNotifyButton类,这时候,你的Button就自然可以把MouseDown和MouseUp消息按照你的设定抛给主窗口了,这就是你说的那句话的含义
      

  4.   

    “子类化技术”,天哪,这种翻译 ……根据我对国内翻译的了解,我猜这个“子类化技术”指的是用 subclass 把你的对象和窗口联系起来,应该就是 masterz() 给出的代码。