#include <stdio.h> #include <windows.h> LRESULT CALLBACK WinProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); #define BUF_LEN 256 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state ) { HWND hWnd ; WNDCLASS wcs ; MSG msg ; int r ; char szbuf[BUF_LEN]; //注册窗口类 wcs.style = CS_HREDRAW | CS_VREDRAW ; wcs.lpfnWndProc = WinProc ; wcs.cbClsExtra = 0 ; wcs.cbWndExtra = 0 ; wcs.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wcs.hCursor = LoadCursor(hInstance,IDC_ARROW); wcs.hIcon = LoadIcon(hInstance,IDI_APPLICATION); wcs.hInstance = hInstance ; wcs.lpszMenuName = NULL ; wcs.lpszClassName ="WndClass"; r = RegisterClass(&wcs); if ( 0 == r ) { sprintf(szbuf,"register class error:%d",GetLastError()); MessageBox(NULL,szbuf,"error",MB_OK); exit(0); return FALSE ; } //创建窗口 hWnd = CreateWindow("WndClass","test it",WS_OVERLAPPEDWINDOW&~WS_THICKFRAME,100,100,600,600,NULL,NULL,hInstance,NULL); if ( NULL == hWnd ) { sprintf(szbuf,"createWindow error:%d",GetLastError()); MessageBox(NULL,szbuf,"error",MB_OK); exit(0); } //显示窗口和更新窗口 ShowWindow(hWnd,SW_SHOW); UpdateWindow(hWnd); //消息队列 while( (r = GetMessage(&msg,NULL,0,0)) != 0 ) { if( r < 0 ) { sprintf(szbuf,"GetMessage error:%d",GetLastError()); MessageBox(NULL,szbuf,"error",MB_OK); exit(0); } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0 ; } LRESULT CALLBACK WinProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { switch( uMsg) { case WM_CLOSE: //点击窗口关闭时的消息 { DestroyWindow(hwnd); break; } case WM_DESTROY: //destroywindow发送的消息 { PostQuitMessage(0); break ; } default: return ::DefWindowProc(hwnd,uMsg,wParam,lParam); } return 0 ; } |