弱弱问一个问题:如何在非窗口类的区域得到窗口的指针?详细的说一下:我创建了一个基于对话框的MFC工程。在对话框(MyDlg)里放置了一个listbox 控件(m_list)。我想在对话框类的其他地方得到MyDlg的指针,来控制此listbox.我在另外一个类里(Myclass),声明了一个指针: MyDlg *pmydlg;我该如何得到MyDlg的地址? pmydlg=?

解决方案 »

  1.   

    你的另外一个类里(Myclass)是谁创建的?它有对话框(MyDlg)的指针吗?有就传给Myclass咯。一般那个对话框和你的另一个类都是APP类创建的吧?
      

  2.   

    确实是个很白痴的问题.楼上2位的方法都不要采用.最好的做法其实是用管理的思想.你现在有一个类需要这个对话框的指针,不能保证你有更多的类需要这个指针,最简单的方法无法就是用个全局变量,毕竟整个程序在运行的过程中只有一个实例,但是,在C++里面,用全局变量不是好的习惯.所以,可以使用注册的方法,写一个基类,类中声明 vitual void  Register(CWnd* pWnd);在实现在中保存对话框指针,然后以后写的非对话框类就从这个基类派生,需要用到对话框指针就直接从基类取出使用.最后忠告一句,根据我2年的项目经验,AfxGetWnd这个函数最好不要用,否则将会给产品维护带来不必要的麻烦.Over.