www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第7章/s7_2/Smain7_2.cpp
//Download by http://www.NewXing.com // 主文件smain7_2.cpp // 包含标准头文件 #include "sstdafx7_2.h" HWND g_hWnd = NULL; // 用来保存窗口句柄的变量 HINSTANCE g_hInst = NULL; // 用来保存应用程序实例的句柄变量 // 消息处理函数,Windows系统规定每个消息处理函数的定义形式都相同 LRESULT CALLBACK WndProc( HWND hWnd, // 窗口句柄 UINT nMessage, // 所发出的消息 WPARAM wParam, // 参数1 LPARAM lParam // 参数2 ) { switch(nMessage) { // 响应WM_LBUTTONDOWN消息 case WM_LBUTTONDOWN: MessageBox(hWnd, "收到WM_LBUTTONDOWN消息!", "通知", MB_OK); break; // 响应WM_RBUTTONDOWN消息 case WM_RBUTTONDOWN: MessageBox(hWnd, "收到WM_RBUTTONDOWN消息!", "通知", MB_OK); break; // 响应WM_CREATE消息 case WM_CREATE: MessageBox(hWnd, "收到WM_CREATE消息!", "通知", MB_OK); break; // 响应WM_DESTROY消息 case WM_DESTROY: MessageBox(hWnd, "收到WM_DESTROY消息!", "通知", MB_OK); PostQuitMessage(0); break; // 必须调用函数DefWindowProc( ),这是Windows系统所规定的 default: return DefWindowProc(hWnd, nMessage, wParam, lParam); } return FALSE; } // 应程序入口函数(此程序第一个被执行) int WINAPI WinMain( HINSTANCE hInstance, // 程序实例句柄 HINSTANCE hPrevInstance, // 为保持与Win16兼容的句柄 LPSTR lpCmdLIne, // 命令行参数 int nCmdShow // 初始化窗口显示方式 ) { WNDCLASS oWnd; // 窗口类,可为WNDCLASS MSG msgTmp; // Windows消息 HWND hWnd; // 窗口句柄 g_hInst = hInstance; // 定义窗口信息,以便创建窗口 oWnd.style = CS_HREDRAW|CS_VREDRAW; // 窗口类型 oWnd.lpfnWndProc = (WNDPROC)WndProc; // 窗口处理函数为WndProc( ) oWnd.cbClsExtra = NULL; // 窗口类无扩展 oWnd.cbWndExtra = NULL; // 窗口实例无扩展 oWnd.hInstance = hInstance; // 当前实例句柄 oWnd.hIcon = LoadIcon(NULL,IDI_APPLICATION); // 窗口最小化图标为默认图标 oWnd.hCursor = LoadCursor(NULL,IDC_ARROW); // 用箭头作为鼠标图标 oWnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 以白色作为窗口颜色 oWnd.lpszMenuName = NULL; // 窗口无菜单 oWnd.lpszClassName = "第一个Windows程序"; // 窗口所属类名 // 注册窗口类 if(!RegisterClass(&oWnd)) { MessageBeep(0); // 如注册失败则发出警告 return FALSE; } // 创建窗口 g_hWnd = CreateWindow( "第一个Windows程序", // 注册的窗口类名 "第一个Windows程序", // 窗口标题名 WS_OVERLAPPEDWINDOW, // 窗口的风格 CW_USEDEFAULT, // 显示窗口的左上角的X坐标,取默认值 CW_USEDEFAULT, // 显示窗口的左上角的Y坐标,取默认值 CW_USEDEFAULT, // 显示窗口的右下角的X坐标,取默认值 CW_USEDEFAULT, // 显示窗口的右下角的Y坐标,取默认值 NULL, // 此窗口无父窗口 NULL, // 菜单句柄(此处设为没有菜单句柄) hInstance, // 程序实例句柄 NULL // 指向一个传递给窗口的指针型参数,此处设置为空 ); if (g_hWnd == NULL) return FALSE; // 创建窗口失败,返回FALSE ShowWindow(g_hWnd, nCmdShow); // 显示窗口 UpdateWindow(g_hWnd); // 更新窗口 while (GetMessage(&msgTmp, NULL, 0, 0)) // 消息循环 { TranslateMessage(&msgTmp); // 翻译消息 DispatchMessage(&msgTmp); // 将消息传递给处理函数 } return msgTmp.wParam; // 返回消息的附加参数 }