#include <windows.h> //Win32窗口程序实例 //声明消息处理函数 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); char szClassName[]="windowsclass"; char szAppTitle[]="WinApi窗口实例"; int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { HWND hMainWnd;//窗口句柄 MSG msg;//消息 WNDCLASS winclass;//窗口结构体 if(!hPrevInstance) { winclass.style=CS_HREDRAW|CS_VREDRAW;//窗口风格 winclass.lpfnWndProc=WndProc;//注册消息处理函数 winclass.cbWndExtra=0;//附加参数 winclass.cbClsExtra=0;//附加参数 winclass.hInstance=hInstance;//当前应用程序句柄 winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载窗口图标 winclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口光标 winclass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//设置窗口背景为浅灰色 winclass.lpszMenuName=NULL;//窗口菜单为空 winclass.lpszClassName=szClassName;//给窗体结构体命名 RegisterClass(&winclass);//注册窗口 } hMainWnd=CreateWindow(szClassName,//窗口结构体名称 szAppTitle,//窗口标题 WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口 CW_USEDEFAULT,CW_USEDEFAULT,//x,y坐标 CW_USEDEFAULT,CW_USEDEFAULT,//窗口的宽度,高度 NULL,NULL,hInstance,NULL); ShowWindow(hMainWnd,SW_SHOWNORMAL);//显示窗口 UpdateWindow(hMainWnd);//更新窗口,最大化 //建立消息循环 while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_KEYDOWN://键盘按下 { MessageBox(hMainwnd,"键盘按下了","提示",MB_OK); break; } case WM_LBUTTONDOWN://鼠标按下 { MessageBox(hMainwnd,"鼠标按下了","提示",MB_OK); break; } case WM_RBUTTONDOWN://鼠标右键按下 { MessageBox(hMainwnd,"鼠标右键按下了","提示",MB_OK); break; } case WM_DESTROY://关闭窗口 { MessageBox(hMainwnd,"关闭窗口了","提示",MB_OK); PostQuitMessage(0); //exit(0); //ExitProcess(0); break; } default: break; } return DefWindowProc(hMainwnd,message,wParam,lParam); }
// 内容:一个基本的Win32程序框架 #include <windows.h> //#include <windowsx.h> //函数声明 BOOL InitWindow( HINSTANCE hInstance, int nCmdShow ); LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam ); //函数:WinMain() 功能:Win32应用程序入口函数。创建主窗口,处理消息循环 int PASCAL WinMain( HINSTANCE hInstance, //当前实例句柄 HINSTANCE hPrevInstance, //前一个实例句柄 LPSTR lpCmdLine, //命令行字符 int nCmdShow) //窗口显示方式 { MSG msg; //创建主窗口 if ( !InitWindow( hInstance, nCmdShow ) ) return FALSE; //进入消息循环: //从该应用程序的消息队列中检取消息,送到消息处理过程, //当检取到WM_QUIT消息时,退出消息循环。 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } //程序结束 return msg.wParam; } //函数:InitWindow() //功能:创建窗口。 static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow ) { HWND hwnd; //窗口句柄 WNDCLASS wc; //窗口类结构 //填充窗口类结构 wc.style = CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = (WNDPROC)WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "EasyWin"; RegisterClass( &wc ); //注册窗口类 hwnd = CreateWindow( //创建主窗口 "EasyWin", //窗口类名称 "一个基本的Win32程序", //窗口标题 WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型 100, //窗口位置的x坐标 100, //窗口位置的y坐标 400, //窗口的宽度 300, //窗口的高度 NULL, //父窗口句柄 NULL, //菜单句柄 hInstance, //应用程序实例句柄 NULL ); //窗口创建数据指针 if( !hwnd ) return FALSE; //显示并更新窗口 ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); return TRUE; } //函数:WinProc() //功能:处理主窗口消息 LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam ) { switch( message ) { case WM_KEYDOWN://击键消息 switch( wParam ) { case VK_ESCAPE: MessageBox(hWnd,"ESC键按下了!","Keyboard",MB_OK); break; } break; case WM_RBUTTONDOWN://鼠标消息 { MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK); break; } case WM_PAINT://窗口重画消息 { char hello[]="你好,我是EasyWin !"; HDC hdc; PAINTSTRUCT ps; hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄 SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色 TextOut( hdc, 20, 10, hello, strlen(hello) );//输出文字 EndPaint( hWnd, &ps ); //释放资源 break; } case WM_DESTROY://退出消息 PostQuitMessage( 0 );//调用退出函数 break; } //调用缺省消息处理过程 return DefWindowProc(hWnd, message, wParam, lParam); }