提高自己网站,wordpress 首页折叠,查询建设工程施工规范网站,设计院项目管理系统第一节#xff1a;安装帮助文档
使用C语言进行Windows开发#xff0c;必然使用到WindowsSDK。Windows SDK指Windows开发人员工具包#xff0c;是为使用C语言开发Windows程序所提供的工具集。里面提供的工具异常全面丰富#xff0c;很少有人能全部了解#xff0c;在开发Wi…第一节安装帮助文档
使用C语言进行Windows开发必然使用到WindowsSDK。Windows SDK指Windows开发人员工具包是为使用C语言开发Windows程序所提供的工具集。里面提供的工具异常全面丰富很少有人能全部了解在开发Windows应用程序时应同时使用MSDN即俗称Windows开发帮助。安装好MSDN后在程序设计过程中不记得函数调用方式时可以在VC中将光标移动到函数名上按下F1帮助键即可以获得这个函数的所有信息非常方便在遇到难解的编译出错信息时也可在输出栏出错的行上按下F1获得详细的错误说明。由于MSDN有1.2G无需全部安装在课程设计阶段只需要安装全文索引、VC文档和Platform SDK即可在开始安装时可选择自定义安装。 图1 MSDN的自定义安装 图2 选择索引VC下面还有SDK
第二节简单的Windows程序一
纯粹的Windows编程代码量较大但是不少代码系统已经帮我们生成所以初学者快速掌握windows编程的方法就是利用现成的框架找到需要修改的地方然后实现设计意图。 类似C语言的学习Windows编程也应为课程设计建立一个工作空间 图 3 创建空白工作区
然后向空白工作区中添加我们第一个Windows程序 图 4 第一步创建合适的应用程序 图 5 选择典型的HelloWorld程序
直接按下Finish可创建第一个程序。不用去看具体代码直接编译执行选择调试执行可以看到这个程序执行的结果。注程序开发阶段应使用调试执行观察程序行为 图 6 框架程序
程序运行的结果是一个窗口可以放大缩小或者调整大小还具有菜单。这些内容在将来都可以由程序员来自己定义。 打开代码WinStep1.cpp首先观察到得就是一个特殊的main函数——WinMain 程序片段 1 主函数和消息循环
类似C语言下的main, WinMain是程序的入口具有固定的格式。函数前段有两个LoadString函数调用。其意义是从资源中加载一些字符串。所谓资源初步的理解可以是这样的程序员打算发布编写程序后销售的应用程序中有一些字符串常量对话框表现等素材随着发布地点不同例如在美国销售和中国销售所使用的语言提示对话框布局等均有所不同但是程序核心的逻辑是不变的。将这些素材统一提取出来专门放在叫做资源文件的文件中这样若是变更发布地点只需要将这些资源文件交给专门的翻译和美工去完成不必涉及到复杂的程序逻辑。这样将程序逻辑与资源分开使应用程序适应性和灵活性更强了。
第一个LoadString是加载窗口的标题。在图4中就是WinStep1。第二个是窗口的类别名称。关于窗口类因为我们实际上一行代码都没有改变所以WinStep实现的功能很有限但是在将来完善后会逐渐变得功能强大些从代码而言是同一个工程的源代码不停地修改从系统角度来看也许多个可执行的程序都在磁盘上为了区分这些程序可以分类叫做张三的窗口V1.0“张三的窗口V1.1”为了区分不同目的的程序还可以叫做“斗地主V2.1 by 张三”和“电脑播音员V1.1 by李四”这样的名字。这些由程序员定义的用来区别计算机中不同窗口目的的字符串就是窗口类。尝试用下面代码替换掉这两行程序 程序片段 2 小小地修改
初学者对WinMain中其他代码先不要动。下面观察第二个重要函数WndProc。
WndProc是消息处理函数当用户动动鼠标或者按下键盘或者切换窗口等任何由Windows系统预定义的动作或者是定时器系统电力不足有聊天网络消息到来等由程序定义的事件都会调用这个函数。可以想象这个函数有多么地“忙”。所以任何写在这个函数里的代码都要求非常地“快”。一旦这里某段代码“慢”了甚至“死循环”了那么后来的消息就会堆积起来无法处理从用户角度看就是这个程序停止响应了。为明确起见将程序中的WndProc改名为MainWndProc意即处理主窗口的消息的程序。在修改时请注意原始代码中有三处WndProc都需要修改——文件最前的位置函数声明在MyRegisterClass函数调用以及WndProc函数定义。
前文提到WndProc主要功能就是处理各种各样的消息显然考虑这么多大量的消息对程序员是个沉重的负担幸好Windows本身已经提供了默认的消息处理代码程序员只需要处理好自己关心的消息就可以了。下面是消息处理函数的模板。 程序片段3 消息处理函数
观察这个MainWndProc函数hWnd参数表示处理这个消息的窗口Message表示处理什么类型的消息wParam和lParam是消息的两个参数不同的消息其参数含义不同。如果程序员想要处理某个消息则一定要去翻阅对应的消息参数的含义。
在程序片段中程序员处理3个消息一个是WM_COMMAND这个消息来自于用户选择某项菜单或者触发了某个按钮。一个是WM_PAINT这个消息表示用户在窗口里显示些什么。过去学习程序设计都是用printf函数输出的但是在窗口环境下有更强大的输出功能——你可以指定输出位置颜色甚至可以输出各种图形真正做到图文并茂。绘图消息处理一定是由BeginPaint开始并由EndPaint结束的。最后是WM_DESTORY。表示将要关闭这个窗口程序可以在这里增加一些收尾工作。当然也可以什么都不做只留那个ostQuitMessage函数在那里。
注意到这个大switch~case中最后的default分句DefWindowProc调用表示其余剩下的所有消息均由系统默认处理。
我们从菜单处理项开始进入windows编程。 程序片段4 处理菜单入口