C语言创建windows窗口实例
耐得住寂寞,禁得起诱惑,这就是程序人生
步骤:
1.在WinMain中定义各种变量
2.注册窗口类RegisterClass
3.创建窗口CreateWindow
4.显示窗口和更新窗口
ShowWindow(hwnd,iCmdShow); UpdateWindow(hwnd);
5.消息循环
while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
完整代码:
#include<windows.h> LRESULTCALLBACKMyProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam); intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd) { MSG msg; HWND hwnd; staticTCHARszAppName[]="hl"; WNDCLASSwndclass; wndclass.style =CS_HREDRAW|CS_VREDRAW; wndclass.cbClsExtra =0; wndclass.cbWndExtra =0; wndclass.lpfnWndProc =MyProc; wndclass.hInstance =hInstance; wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor =LoadCursor(NULL,IDC_ARROW); wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName=NULL; wndclass.lpszClassName=szAppName; if(!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT("error"),TEXT("title"),MB_ICONERROR); return0; } hwnd=CreateWindow(szAppName, TEXT("Hello"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd,nShowCmd); UpdateWindow(hwnd); while(GetMessage(&msg,hwnd,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } returnmsg.wParam; } LRESULTCALLBACKMyProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam) { switch(message) { caseWM_DESTROY: PostQuitMessage(0); return0; } returnDefWindowProc(hwnd,message,wParam,lParam); }