博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一个Win32 SDK应用程序
阅读量:5951 次
发布时间:2019-06-19

本文共 2708 字,大约阅读时间需要 9 分钟。

#include
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应用程序。

转载于:https://www.cnblogs.com/xiaocai0923/archive/2011/10/21/2220100.html

你可能感兴趣的文章
结对:复利美化版
查看>>
HDU_2689_Sort it
查看>>
urllib模块使用笔记
查看>>
mysql 连接慢的问题(超过了1秒)
查看>>
1297. [SCOI2009]迷路【矩阵乘法】
查看>>
Linux嵌入式GDB调试环境搭建
查看>>
java分析jvm常用指令
查看>>
【Linux】Linux 在线安装yum
查看>>
oracle 管理操作 (转)
查看>>
DEV 等待窗口
查看>>
实验03博客园总结
查看>>
VS2017发布微服务到docker
查看>>
lombok
查看>>
Dev-FAT-UAT-PRO
查看>>
Maven, IntellJ Idea 配置注意点
查看>>
Android开发学习总结(五)——Android应用目录结构分析(转)
查看>>
观察者模式
查看>>
python操作excel (openpyxl)
查看>>
[PHP]PHP rpc框架hprose测试
查看>>
Atom 编辑器系列视频课程
查看>>