Windows程式設計 視窗和訊息

2021-08-07 17:29:07 字數 3327 閱讀 3505

#include 

lresult callback wndproc(hwnd, uint, wparam, lparam);

int winapi winmain(hinstance hinstance, hinstance hprevinstance,

pstr szcmdline, int icmdshow)

text("the hello program"), // 視窗標題

cw_usedefault,// initial x position

cw_usedefault,// initial y position

cw_usedefault,// initial x size

cw_usedefault,// initial y size

null, // parent window handle

null, // window menu handle

hinstance, // program instance handle

null); // creation parameters

// 在顯示器上顯示視窗,第二個引數:正常、最大化、最小化、隱藏

showwindow(hwnd, icmdshow);

updatewindow(hwnd); // 重畫顯示區域,傳送訊息給訊息處理程式

while (getmessage(&msg, null, 0, 0)) // 從訊息佇列獲取訊息

return msg.wparam;

}lresult callback wndproc(hwnd hwnd, uint message, wparam wparam,

lparam lparam) // 視窗訊息處理程式的四個引數與msg結構的前四個欄位是相同的

// 不予處理的所有訊息應該被傳給名為defwindowproc

return defwindowproc(hwnd, message, wparam, lparam);

}

字首

類別英文

cs視窗類別樣式

class style

cw建立視窗

create window

dt繪製文字

draw text

idi圖示id

id icon

idc游標id

id cursor

mb訊息框

message border

snd聲音

sound

wm視窗訊息

window message

ws視窗樣式

window style

結構含義

msg訊息結構

wndclass

視窗類別結構

paintstruct

繪圖結構

rect

矩形結構

/*

* 訊息資料結構

*/typedef struct tagmsg msg, *pmsg,near *npmsg,far *lpmsg;

wm_quit訊息將導致getmessage傳回0

控制代碼是乙個(通常為32位的)整數,它代表乙個物件。

識別符號含義

hinstance

執行實體(程式自身)控制代碼

hwnd

視窗控制代碼

hdc裝置內容控制代碼

hicon

圖示控制代碼 handle to an icon

hcursor

滑鼠游標控制代碼

hbrush

畫刷控制代碼

字首資料型態

cchar或wchar或tchar

bybyte (無正負號字元)

nshort

iint

x, y

int分別用作x座標和y座標

cx, cy

int分別用作x長度和y長度;c代表「計數器」

b或fbool (int);f代表「旗標」

wword (無正負號短整數)

llong (長整數)

dwdword (無正負號長整數)

fnfunction(函式)

sstring(字串)

sz以位元組值0結尾的字串h控制代碼

p指標假設使用者執行hellowin,並且使用者最終單擊了 close按鈕,或者假設用鍵盤或滑鼠從系統選單中選擇了 close, defwindowproc處理這一鍵盤或者滑鼠輸入,在檢測到使用者選擇了close選項之後,它給視窗訊息處理程式傳送一條wm_syscommand訊息。wndproc將這個訊息傳給defwindowproc。defwindowproc給視窗訊息處理程式傳送一條wm_close消 息 來 響 應 之 。 wndproc 再 次 將 它 傳 給 defwindowproc 。 destroywindow 呼 叫destroywindow來響應這條wm_close訊息。destroywindow導致windows給視窗訊息處理程式傳送一條wm_destroy訊息。wndproc再呼叫postquitmessage,將一條wm_quit訊息放入訊息佇列中,以此來響應此訊息。這個訊息導致winmain中的訊息迴圈終止,然後程式結束。

訊息能夠被分為「佇列化的」和「非佇列化的」。佇列化的訊息是由windows放入程式訊息佇列中的。在程式的訊息迴圈中,重新傳回並分配給視窗訊息處理程式。非佇列化的訊息在windows呼叫視窗時直接送給視窗訊息處理程式。也就是說,佇列化的訊息被「傳送」給訊息佇列,而非佇列化的訊息則「傳送」給視窗訊息處理程式。任何情況下,視窗訊息處理程式都將獲得視窗所有的訊息–包括佇列化的和非佇列化的。

視窗訊息處理程式是視窗的」訊息中心」。

佇列化訊息基本上是使用者輸入的結果,以擊鍵(如wm_keydown和wm_keyup訊息)、擊鍵產生的字元(wm_char)、滑鼠移動(wm_mousemove)和滑鼠按鈕(wm_lbuttondown)的形式給出。佇列化訊息還包含時鐘訊息(wm_timer)、更新訊息(wm_paint)和退出訊息wm_quit)。

非佇列化訊息則是其它訊息。在許多情況下,非佇列化訊息來自呼叫特定的windows函式。

例如,當winmain呼叫createwindow時,windows將建立視窗並在處理中給視窗訊息處理程式傳送乙個wm_create訊息。當winmain呼叫showwindow時,windows將給視窗 消 息 處 理 程 序 發 送 wm_size 和 wm_showwindow 消 息 。 當 winmain 呼 叫updatewindow時,windows將給視窗訊息處理程式傳送wm_paint訊息。鍵盤或滑鼠輸入時發出的佇列化訊息訊號,也能在非佇列化訊息中出現。例如,用鍵盤或滑鼠選擇了乙個選單項時,鍵盤或滑鼠訊息就是佇列化的,而說明選單項已選中的wm_command訊息則可能就是非佇列化的。

Windows程式設計學習筆記(三) 視窗和訊息

messagebox函式會建立乙個 視窗 在windows中,乙個視窗就是螢幕上乙個矩形區域,它接收使用者的輸入並以文字或圖形的格式顯示輸出內容。messagebox函式建立乙個視窗,但只是乙個功能有限的特殊視窗。訊息視窗有乙個帶關閉按鈕的標題列 乙個選項圖示 一行或多行文字,以及最多四個按鈕。當然...

Windows程式設計 視窗鍵盤訊息滾動事件

pragma once include define numlines int sizeof sysmetrics sizeof sysmetrics 0 struct sysmetrics numlines 巨集定義是為了得到sysmetrics的數量 include include system...

Windows視窗訊息大全

windows視窗訊息大全,全不全自己看 include afxpriv.h 訊息值的定義 include dde.h dde訊息值的定義 include cpl.h 控制面板訊息值的定義 include wfext.h 檔案管理器的訊息值的定義 include ras.h ras 遠端訪問服務 的...