MFC 控制項初始化的過程

2022-04-04 01:04:16 字數 616 閱讀 3279

之前為了學習mfc下瀏覽器的用法,參考博文:雖然按照作者的方法實現了瀏覽器的功能,但是作者在on_size訊息中調整瀏覽器控制項大小的方法出現斷言錯誤,主要錯誤如下:

在進入到下面函式段時,setwindowpos()出現錯誤。

錯誤在此處,assert(::iswindow(m_hwnd) || (m_pctrlsite != null))。

bool cwnd::setwindowpos(const cwnd* pwndinsertafter, int x, int y, int cx,

int cy, uint nflags)

經過除錯發現m_pctrlsite的值是空,而此時對話方塊的oninitdialog()還沒有執行,故猜測整個瀏覽器控制項的繫結變數m_browser還沒有初始化,經過調整:

}新增獲取控制項是否已經初始化的判斷,這樣就解決了斷言的錯誤問題。

另外,新增過其他控制項測試,發現都有同樣的問題,所以記錄一下。

後繼解決方案正在發現中。。。

MFC程式的初始化過程

mfc程式是乙個windows程式,它的內部也有視窗註冊操作,視窗產生操作,訊息迴圈操作和視窗函式。mfc中類的兩個虛函式和initinstance,前者負責 每乙個程式只做一次 的操作,後者負責 每乙個例程都得做一次 的操作。通常,系統會 並且有能力 為我們註冊一些標準的視窗類 當然也準備了一些標...

MFC原理第二講 MFC的初始化過程

通過上一講.我們手工模擬了乙個mfc程式.但是上一講留下了疑問.就是winmain在哪.以及訊息處理在 也就是mfc的初始化過程.我們上一講模擬了mfc程式.要查詢winmain很簡單.1.除錯啟動.f10快捷鍵.這樣直接定位到winmain 2.因為我們的initinstance呼叫.我們可以下段...

類初始化和例項初始化過程

類初始化過程 乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行 方法 由靜態類變數賦值 和靜態 塊組成 靜態類變數賦值 和靜態 塊從上往下執行 方法只執行一次 例項初始化過程 例項初始化就是執行 方法 方法可能過載...