#includeint WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int); LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM); // WinMain 函数 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd; // 主窗口句柄 MSG msg; // 窗口消息 WNDCLASS wc; // 窗口类 if (!hPrevInstance) { // 填充窗口类信息 wc.style=CS_HREDRAW|CS_VREDRAW; wc.lpfnWndProc=WndProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //需要强制转换,原文:wc.hbrBackground=GetStockObject(WHITE_BRUSH); wc.lpszMenuName=NULL; wc.lpszClassName="SdkDemo1"; // 注册窗口类 RegisterClass(&wc); } // 创建应用程序主窗口 hWnd=CreateWindow ("SdkDemo1", // 窗口类名 "第一个Win32 SDK应用程序", // 窗口标题 WS_OVERLAPPEDWINDOW, // 窗口样式 CW_USEDEFAULT, // 初始化 x 坐标 CW_USEDEFAULT, // 初始化 y 坐标 CW_USEDEFAULT, // 初始化窗口宽度 CW_USEDEFAULT, // 初始化窗口高度 NULL, // 父窗口句柄 NULL, // 窗口菜单句柄 hInstance, // 程序实例句柄 NULL); // 创建参数 // 显示窗口 ShowWindow(hWnd,SW_SHOW); // 更新主窗口客户区 UpdateWindow(hWnd); // 开始消息循环 while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } // WndProc 主窗口过程 LRESULT WINAPI WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; RECT rc; HPEN hPen,hPenOld; HBRUSH hBrush,hBrushOld; switch (msg) { case WM_PAINT: hdc=GetDC(hWnd); GetClientRect(hWnd,&rc); hPen=CreatePen(PS_SOLID,0,RGB(0,0,0)); hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0)); hPenOld=(HPEN)SelectObject(hdc,hPen); //需要强制转换,原文:SelectObject(hdc,hPen); hBrushOld=(HBRUSH)SelectObject(hdc,hBrush); //需要强制转换,原文:SelectObject(hdc,hBrush); Ellipse(hdc,rc.left,rc.top,rc.right,rc.bottom); SelectObject(hdc,hPenOld); SelectObject(hdc,hBrushOld); ReleaseDC(hWnd,hdc); break; case WM_DESTROY: PostQuitMessage(0); break; default: break; } return DefWindowProc(hWnd,msg,wParam,lParam); }
1.选择File菜单下的New命令,新建一个Win32 Application工程,这里我们假设对该工程命名为SdkDemo1,而事实上这完全取决于你的意愿。这个过程已经在本书的第一章中作为介绍,这里就不再重复说明了。
2. 选择Project菜单下的Add To Project|New...命令,向工程中添加一个C++ Source File (C++源文件),可以将该文件命名为winmain.cpp,不需要键入扩展名,Microsoft Developer Studio在创建文件时会自动加上.cpp的后缀名。这个过程也已经在第一章中作过介绍。阅读过该章内容的读者不应感到陌生。然后在Wordspace窗口的FileView中双击文件名winmain.cpp (在依赖于你在前面过程中的设定),输入下面的源代码即可。如果已将源代码输入为C++源文件(以.cpp为后缀名的文件),则可以使用Project|Add To Project|Files...将其添加到工程中。3. 单击Build菜单下的Build SdkDemo1.exe或Build All或按下快捷键F7 (如果未对该快捷键做过自定义操作的话)或单击Build或BuildMinibar工具条上的按钮,编译并创建可执行文件SdkDemo1.exe,运行该可执行文件(从Developer Studio中或资源管理器均可)。使用这种方式编写的应用程序使用调试和维护的难度很大。这个问题是使用直接使用SDK编程的固有总是。但是,我们还是有办法可以使得该程序的结构更紧凑和更集中一些,从而改善代码的可读性,也使得它更接近于使用SDK编写的真正的Win32应用程序。