第一个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应用程序。
转载于:https://www.cnblogs.com/xiaocai0923/archive/2011/10/21/2220100.html
第一个Win32 SDK应用程序相关推荐
- Windows游戏设计(二)- 打砖块游戏 - 使用Win32 SDK
注:以下内容为学习笔记,多数是从书本.资料中得来,只为加深印象,及日后参考.然而本人表达能力较差,写的不好.因非翻译.非转载,只好选原创,但多数乃摘抄,实为惭愧.但若能帮助一二访客,幸甚! 前一阵子学 ...
- 纯 Win32 SDK程序为什么每次要获取设备描述表句柄
做过Win32 API程序的就会发现,要对窗口输出时,每次都要获取设备描述表句柄:都是对同一个窗口输出,设备描述表是一个:为什么每次都要获取设备描述表句柄呢?获取一次行吗? 做一个Win32 API程 ...
- 第一个 Win32 窗口程序
第一个 Win32 窗口程序 程序骨架 int WinMain(){ // 设计窗口外观及交互响应,注册,申请专利RegisterClass(...) ;// 生产窗口 CreateWindow(.. ...
- 一个Win32程序的进化
作者:刘铁猛 日期:2005-12-13 关键字: Win32 API 入门 声明:如果阁下想转载,在转载的时候烦劳阁下连同在下的姓名一起转载,并向[email]bladey@tom.com[/ema ...
- Win32控制台应用程序如何调用另一个.exe
WinExec(); 该函数只提供对16位机子的兼容.应用程序应该使用CreateProcess函数. WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指 ...
- 一个使用纯Win32 SDK和C语言实现的五子棋游戏
引言:GobangGame 这是一个使用纯Win32 SDK和C语言实现的五子棋游戏 在这个游戏中实现的功能 [x] 绘制一个15 * 15的棋盘 [x] 绘制5个着重点位置 [x] 根据鼠标左键的点 ...
- DuiLib的第一个win32程序
DuiLib主要用于创建一个漂亮的界面程序,界面的全部定义放到了xml文件中保存.程序加载xml文件中的内容就能够显示之前定义的界面.定义可以用DuiLib提供的一个工具UIDesigner.exe进 ...
- 构建meteor应用程序_我构建了一个渐进式Web应用程序并将其发布在3个应用程序商店中。 这是我学到的。...
构建meteor应用程序 by JudahGabriel Himango 犹大(Gabriel Himango) 我构建了一个渐进式Web应用程序并将其发布在3个应用程序商店中. 这是我学到的. (I ...
- Win32 SDK 访问数据库
一 ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 http://blog.csdn.net/dai_jing/article/details/8231645 // ...
最新文章
- RDKit支持PostgreSQL配置
- 全排列(递归与非递归实现)
- 计算机的发展经历阶段应用领域,计算机的发展阶段
- 2021江西高考成绩小分查询,2021江西高考成绩查分时间
- 计算机程序编辑的英语,编译程序是为把高级语言书写的计算机程序翻译成面向计算机的目标程序而使用的计算机程序...
- python视频人脸识别教程_Python学习笔记之视频人脸检测识别实例教程
- oracle11g密码效期及用户锁定
- 关闭windows自动更新小妙招
- 25句经典语录 带你成长
- 为什么全网通手机联通显示无服务器,手机卡无服务怎么回事
- NXP LPC1768最小系统板Keil开发环境流程演示
- 深度技术GhostXP专业版V9.0之初体验
- 解析几何 曲线与二次曲面 直纹面(2.4)
- 美元人民币汇率API
- 基于Android的手机安全卫士的开发
- ILSpy 无法反编译 Expression
- Oracle SQL Trace、Tkprof和10046事件
- IE10的新用户代理字符串
- Linux命令lsscsi详解
- 学习笔记_ClickHouse