MFC程式的初始化過程

2021-04-12 22:22:48 字數 4376 閱讀 4273

mfc程式是乙個windows程式,它的內部也有視窗註冊操作,視窗產生操作,訊息迴圈操作和視窗函式。

mfc類的兩個虛函式initinstance,前者負責「每乙個程式只做一次」的操作,後者負責「每乙個例程都得做一次」的操作。通常,系統會(並且有能力)為我們註冊一些標準的視窗類(當然也準備了一些標準的視窗函式)。程式設計者在自己的中改寫initinstance,並在其中把視窗產生出來這樣才有機會在標準的視窗類中指定自己的視窗標題和選單。下面即使我們新的main函式:

//my.cpp

void main()

請注意的操作,以及它所引發的行為:

cmyframewnd:: cmyframewnd()

bool cmyframewnd::create()

bool cwnd::crateex()

bool cframewnd::precreatewindow()

範例程式

mfc.h

#define bool int

#define true 1

#define false 0

#include

class cobject

cobject::~cobject()

};

class ccmdtarget : public cobject

ccmdtarget::~ccmdtarget ()

};

class cwinthread : public ccmdtarget

cwinthread::~ cwinthread ()

virtual bool initinstance()

virtual int run()

};

class cwnd;

virtual bool initinstance ()

virtual int run ()

};

class cdocument : public ccmdtarget

cdocument::~ cdocument()

};

class cwnd : public ccmdtarget

cwnd::~cwnd ()

};

class cframewnd : public cwnd

cframewnd::~cframewnd ()

bool create ();

virtual bool precreatewindow();

};

class cview : public cwnd

cview::~ cview ()

};

//global function

mfc.cpp

#includemy.h//本該包含mfc.h,但為了的定義

bool cwnd::create()

bool cwnd::createex()

bool cwnd::precreatewindow()

bool cframewnd::create()

bool cframewnd::precreatewindow()

my.h

#include

#includemfc.h

;

class cmyframewnd : public cframewnd

};

mfc.cpp

#includemy.h

cmyframewnd::cmyframewnd()

//main()

void main()

程式的輸出結果是:

cmyframewnd:: cmyframewnd

cframewnd::create

cwnd::createex

cframewnd::precreatewindow

cwinthread::run

MFC 控制項初始化的過程

之前為了學習mfc下瀏覽器的用法,參考博文 雖然按照作者的方法實現了瀏覽器的功能,但是作者在on size訊息中調整瀏覽器控制項大小的方法出現斷言錯誤,主要錯誤如下 在進入到下面函式段時,setwindowpos 出現錯誤。錯誤在此處,assert iswindow m hwnd m pctrlsi...

Java 程式初始化過程

之前應聘筆試的時候,遇到過很多次,給出一段 裡面有static靜態變數,static 塊以及建構函式等,在它們初始化或者是 塊中設定列印log,然後問它們的列印順序。再此之前一直不知道具體考察的是什麼,好在現在終於知道了,考察的是程式的初始化過程。那麼程式的初始化過程是怎樣的呢?main方法執行的時...

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

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