一个类生成了多个对象,操作其中一个对象(比如按下鼠标等),在类里如何获得这个正被操作的对象的指针?
举例如下:
CButton *m_btn;m_btn  = new CButton();
m_btn->Create(...,(UINT)ID);然后我在CButton类里做了ON_LBTNDOWN()等鼠标按键的消息,现在我如何在消息函数里获得对象的ID?又如何获得主线程
(CMyDLG)的指针?要求该指针能调用主线程的函数(子类的函数而不是CWND等父类里的函数)谢谢各位!

解决方案 »

  1.   

    AfxGetMainWnd()得到的就是主窗口指针.
      

  2.   


    不行诶  AfxGetMainWnd()获得的指针是CWnd类型的指针,不能调用主线程的函数。
      

  3.   

    为何不把此响应放在Dialog里面处理?MFC的标准做法是,父窗口来处理子窗口控件事件。
      

  4.   

    把ID保存为成员变量啊
    AfxGetMainWnd()获得的指针是CWnd类型的指针,但可以进行类型转换啊
    函数还有线程之分吗?不明白
      

  5.   

    AfxGetMainWnd()可以转换为Hwnd,应该是可行的。
      

  6.   


    哎,还不是放在主线程里,消息响应不好做么。new create了很多的button,每个按钮都要响应click消息,还有拖动,常规的做法是什么啊?
      

  7.   

    用CButton::GetDlgCtrlID()不能获取对象的ID吗?
    主窗体对象可以用GetParent()或者AfxGetMainWnd()获取到主窗体对象CWnd指针,再动态转换为CMyDLG指针。