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;
}