#include <windows.h>
#include <stdio.h>
HWND hWnd=NULL; // 保存 Windows 分配給程序的窗口句柄,它是全局的
LRESULT APIENTRY MainWndProc(HWND,UINT,WPARAM,LPARAM);
void MyMsgLoop();
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char clsName[]="myWnd";
WNDCLASS wc; //創(chuàng )建一個(gè)Windows窗體
wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;// 窗體風(fēng)格
wc.lpfnWndProc = MainWndProc; // 窗體進(jìn)程的指針
wc.cbClsExtra = 0L;
wc.cbWndExtra = 0L;
wc.hInstance = hInstance;// 窗體進(jìn)程實(shí)例的句柄,通過(guò)WinMain主函數傳遞進(jìn)來(lái)
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);// 背景畫(huà)刷,也就是窗口顯示背景顏色
wc.lpszMenuName = NULL;
wc.lpszClassName = clsName;// 注冊的Windows類(lèi)名稱(chēng)
RegisterClass(&wc);//調用RegisterClass函數進(jìn)行注冊
/ /具備了創(chuàng )建一個(gè)窗體的信息,開(kāi)始調用API函數CreateWindow來(lái)進(jìn)行窗體的創(chuàng )建工作
hWnd = CreateWindow(clsName,"主窗口",
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
100, 100,400, 300,NULL,NULL,hInstance,NULL); // 創(chuàng )建窗口
ShowWindow( hWnd, SW_SHOWDEFAULT ); // 顯示窗口
UpdateWindow( hWnd ); // 刷新窗口
//UpdateWindow函數用于更新窗口,該函數更新窗口的時(shí)候會(huì )向指定的窗體的進(jìn)程發(fā)送消息,如果被更新的客戶(hù)區為空,說(shuō)明窗體沒(méi)有接收到消息。
MyMsgLoop(); // 進(jìn)入消息循環(huán)
return 0;
}
LRESULT APIENTRY MainWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam )
{// 消息處理
switch(message)
{
case WM_CREATE: // 當收到建立窗口的消息時(shí),進(jìn)行處理...
return 0;
break;
case WM_CLOSE: // 當收到關(guān)閉窗口的消息時(shí),進(jìn)行處理...
MessageBox(NULL,"窗口要關(guān)閉了","消息提示",MB_OK|MB_ICONEXCLAMATION);
PostQuitMessage(0);
return 0;
break;
case WM_DESTROY: // 當退出消息的時(shí)候,進(jìn)行處理...
MessageBox(NULL,"退出消息了","消息提示",MB_OK|MB_ICONEXCLAMATION);
PostQuitMessage(0);
return 0;
break;
default:
break;
}
return (DefWindowProc(hWnd, message, wParam, lParam));
}
void MyMsgLoop()
{
MSG msg;
BOOL receiveMessage;
PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE);
while(msg.message != WM_QUIT)
{ // 消息循環(huán)
receiveMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE);
if(receiveMessage)
{ // 有消息
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
聯(lián)系客服