第一个Win32 SDK应用程序

#include<windows.h>
int 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应用程序。

posted @ 2011-10-21 12:54  冒牌工程师  阅读(1244)  评论(0编辑  收藏  举报