《VC 深入詳解》筆記(一)

2021-09-05 17:31:00 字數 1978 閱讀 9432

1,sendmessage

將訊息直接傳送給視窗,並呼叫視窗的視窗過程進行處理。等訊息處理完後,函式才返回(它傳送的訊息為不進隊訊息)。

postmessage

則是將訊息方到訊息佇列中就

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

返回了。

postthreadmessage

函式用於給執行緒傳送訊息。 2

,下面這段**會出問題,當關閉程式後,會出現

cpu占用

100%

的狀況。

hwnd =0

, cw_usedefault, 

0, null, null, hinstance, null);

msg msg;

while

(getmessage(

&msg, hwnd, 0, 

0)) 

原因在於:如果

hwnd

引數是無效的視窗控制代碼或

lpmsg

引數是無效的指標時,

getmessage

函式會返回

-1,當我們關閉視窗時,就呼叫了

destroywindow

來銷毀視窗,則視窗控制代碼就成為無效的控制代碼了,那麼

getmessage

就返回-1

,並且是總是返回

-1,而非

0即為真,所以就死迴圈了。所以可以修改如下:

hwnd =0

, cw_usedefault, 

0, null, null, hinstance, null);

msg msg;

bool bret;

while

(getmessage(

&msg, hwnd, 0, 

0)) 

else

程式執行的順序依次是:

全域性物件定義處,

建構函式,父類

的建構函式,然後才是

winmain

函式。而

winmain

實際上呼叫的是

afxwinmain

函式,這個函式首先呼叫

afxgetthread

獲得乙個

cwinthread

型別指標

pthread

,接著呼叫

獲得乙個

型別指標

,而實際上這兩個指標是一致的,都指向

物件。接下來

首先呼叫

函式,完成

mfc的內部管理工作,然後

pthread

呼叫子類中的

initinstance

函式,;

首先利用全域性應用程式物件

啟動應用程式,再呼叫全域性應用程式物件的建構函式,從而呼叫其父類的建構函式來完成程式的一些初始化工作,並將應用程式指標儲存起來。進入

winmain

函式,在

afxwinmain

中可以獲取子類的指標,並利用它呼叫虛函式

initinstance,

完成應用程式的一些初始化工作,包括視窗類的建立,註冊,視窗的顯示,更新,期間會多次呼叫

createx

函式。最後進入訊息迴圈,而

mfc是採用訊息對映機制來處理的,當收到

wm_quit

訊息時,退出迴圈,程式結束。

4,檢視類視窗始終覆蓋在框架類視窗之上,就好比是一張牆紙總貼在牆上,則像滑鼠單擊,移動這些操作都只能由檢視類視窗捕獲,這就是為何在框架類視窗中收不到滑鼠單擊這一訊息的原因。

5,在桌面視窗中畫圖:

cwnd

類的getdesktopwindow

函式可以獲取桌面視窗的控制代碼。

void

ctestview::onlbuttonup(uint nflags,cpoint point)

VC 深入詳解 之複習筆記 一

1.api與sdk windows 作業系統提供給應用程式程式設計的介面 主要的windows函式都在windows.h標頭檔案中進行了宣告。windows 作業系統 大約有1000多種api函式,提供的api函式大多是有意義的單詞的組合,每個單詞首字母大寫,如 createwindow,從函式的名...

VC 深入詳解 學習筆記

一 1 使用定義二進位制的值來定義相關的意義 如dword w cs hredraw cs vredraw 這樣就可以通過 或 運算來組合,同時要是不需要某個屬性可以通過 取反結合 與 運算來實現dword w cs hredraw cs vredraw dword h w cs verdraw 2...

VC 深入詳解筆記 引用

int a 5 int b a 用 表示申明乙個引用。引用必須在申明時進行初始化考慮下面 int a 5 int b a int c 3 b c 此處並不是將b變成c的引用,而是給b賦值,此時b和a的值都變成了3 引用只是乙個別名,是乙個變數或物件的替換名稱。引用的位址沒有任何意義,是所引用的變數或...