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