windows時刻捕獲用戶的輸入,將其轉化爲消息,消息是個結構體:
Typedef struct tagMSG{
HWND hWnd;
UINT message;
WPARAM wParam;
lPARAM lParam;
DWORD time;
POINT pt;
}MSG;
此消息記錄windows系統的消息信息,包括:句柄、消息ID標識、消息附加信息、放入隊列的時間、當時鼠標的位置。
消息類型包括:WM_CREATE(生成窗口)、WM_INITDIALOG(初始化和修改)、WM_COMMAND(具體消息、通知)、WM_QUIT(應用程序結束)、WM_LBUTTONDOWN(按下鼠標左鍵)等等。。。
WinMain() 程序入口函數用來創建該窗口並進入消息循環,獲取消息後將它們傳遞給DlgProc()函數處理。處理過程中,提取MSG數據結構中的參數,判斷是哪種消息,做何處理,併發送消息給窗口。(SendMessage()、PostMessage())。
代碼:
//窗口過程函數聲明
LRESULT CALLBACK WndPrco(HWND hDlg , UINT uMSG ,
WPARAM wParam , LPARAM lParam);
//程序入口函數
int WINAPI WinMain(HINSTANCE hinsCurrent , HINSTANCE hinstPrevious ,
LPSTR lpszCmdLine , int nCmdShow)
{
DialogBox(hinsCurrent , MAKEINTRESOURCE(IDD_DIALOG) , NULL ,
(DLGPROC)DlgProc); //根據對話框資源創建一個主窗口
return 0;
}
LRESULT CALLBACK DlgProc(HWND hDlgMain , UINT uMSG , WPARAM wParam ,
LPARAM lParam)
{
switch(uMSG)
{
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDCANCEL:
{
EndDialog(hDlg , wParam);
}
case IDOK:
{
MessageBoxA(NULL , "hello" , "fuck" ,
0);
}
break;
}
}
case WM_KEYDOWN:
{
SetDlgItemTextA(hDlg , IDC_EDIT1 , "helloworld");
}
}
return 0;
}