7
我在我的对话框类中有一个OnMove处理程序,它使用控件对象(即CButton)做一些事情。我发现这个处理程序在对话框OnInitDialog方法被调用之前被调用,因此当我尝试调用子控件的方法时,由于控件尚不存在,我在调试中获得了ASSERTS ...它们是在OnInitDialog中创建的。如何判断MFC对话框是否已创建/初始化?
有两件事情,我想能够检查:
- 我怎么知道对话框已初始化?
- 如何检查单个CWnd控件对象的窗口是否已创建?
在这两种情况下,我正在寻找可以使用的类成员或方法调用结果。
我不想编写自定义代码,所以2听起来最好。还有其他成员我可以测试吗? – 2010-06-04 12:18:47
GetSafeHwnd()但它只是一个包装:: IsWindow()。在面向对象方面,我认为它比手动查询句柄更好 - 我喜欢亲自检查句柄的'低级'控制。 – Roel 2010-06-05 09:09:12
'GetSafeHwnd()'不是'IsWindow()'的包装 - 它是'm_hWnd'的包装 - 非标准C++来测试this是否为null,并返回m_hWnd或null。 'm_hWnd'可以是非空的,而不是一个窗口(就像文件句柄不能为空而是文件被关闭一样) – Mordachai 2017-04-11 14:34:27