1-4-1 Windows应用程序组成及编程步骤
主要内容:介绍Windows应用程序的组成以及编程步骤
1.应用程序的组成
<1>一个完整的应用程序通常由五种类型的文件组成
1.源程序文件
2.头文件
3.模块定义文件
4.资源描述文件
5.项目文件(也称工程文件Project)
<2>源程序组成结构
1.入口函数 WinMain
<1>入口函数是所有程序的入口,类似Main函数
<2>完成定义和初始化,产生消息循环
2.窗口函数 WndProc
<1>窗口过程完成一些消息循环的响应
这是Windows应用程序的基本框架
在这个框架里包含了各种数据类型、数据结构和相应的函数
2.WinMain函数
WinMain函数的功能
<1>注册窗口类,建立窗口及执行必要的初始化
<2>进入消息循环,据接收的消息调用相应的处理过程
<3>当消息循环检索到WM_QUIT时,终止程序运行
WinMain函数的基本组成
<1>函数说明(函数参数)
int WINAPI WinMain
( HINSTANCE hThisInst, //应用程序当前实例句柄
HINSTANCE hPrebInst, //应用程序其他实例句柄
LPSTR lpszCmdLine, //指向程序命令行参数的指针
Int nCmdShow) //应用程序开始执行时窗口显示方式的整数值标识
另附上WinMain函数参数的详细介绍:点我
<2>初始化
1.窗口类定义
定义窗口的形式与功能
LoadIcon、LoadCursor以及GetStockObject等
2.窗口类的注册
窗口类必须先注册后使用
RegisterClass
3.创建窗口实例
CreateWindow
4.显示窗口
ShowWindow 和 UpdateWindow
<3>消息循环
3.窗口函数WinProc
<1>窗口函数定义了应用程序对接收到的不同消息的响应
还包含了对各种可能接收到的消息的处理过程
<2>WinProc架构 ---> switch-case结构
原型:
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){ //message为标识的消息
case ...
break;
...
case WM_DESTROY:
PostQuitMessage(0);
default :
//为未定义处理过程的消息提供缺省处理
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
消息处理程序段中一般都有对WM_DESTROY的处理,
该消息是关闭窗口时发出的,
它向应用程序发出WM_QUIT消息,请求退出处理函数,
void PostQuitMessage(int nExitCode);
//nExitCode为应用程序的退出代码
<3>数据类型介绍
LRESULT:消息处理结果的返回值的数据类型,实际上是LONG
CALLBACK:表示这个函数是给系统调用的,也称作回调
1-4-1 Windows应用程序组成及编程步骤的更多相关文章
- Windows应用程序组成及编程步骤
Windows应用程序组成及编程步骤: 1.应用程序的组成:一个完整的Windows应用程序通常由五种类型的文件组成 1.C语言源程序文件 2.头文件 3.模块定义文件 4.资源描述文件 5.项目文件 ...
- winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...
- Linux下TCP网络编程与基于Windows下C#socket编程间通信
一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...
- 在windows下的QT编程中的_TCHAR与QString之间的转换
由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef ...
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇]
原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇] 对于WCF服务端元数据架构体系来说,通过MetadataExporter将服务的终结点导出成MetadataSet(参考< ...
- Windows环境下多线程编程原理与应用读书笔记(1)————基本概念
自从学了操作系统知识后,我就对多线程比较感兴趣,总想让自己写一些有关多线程的程序代码,但一直以来,发现自己都没怎么好好的去全面学习这方面的知识,仅仅是完成了操作系统课程上的小程序,对多线程的理解也不是 ...
- 使用Windows API进行串口编程
使用Windows API进行串口编程 串口通信一般分为四大步:打开串口->配置串口->读写串口->关闭串口,还可以在串口上监听读写等事件.1.打开和关闭串口Windows中串口 ...
- Ligg.WinOa-000: Windows运维自动化编程实战--前言
本开源项目Ligg.WinOa是一个基于Ligg.EasyWinApp的Windows运维自动化应用.通过Ligg.EasyWinForm生成2个功能界面:管理员工具箱和用户工具箱:通过Lig ...
- SpringMVC_01 SpringMVC五大组件、SpringMVC编程步骤(不使用注解进行配置)、SpringMVC编程步骤(利用注解进行配置)、参数获取、响应数据
1 什么是SpringMVC 是一个mvc框架,用来简化基于mvc架构的web应用程序的 开发. 2 SpringMVC五大组件 DispatcherServlet (前端控制器) HanlderMa ...
随机推荐
- K2 BPM+Microsoft Dynamics CRM,妥妥的~
啊~~~~七夕 ▼ 你比巴西少一xi 你比山西多四xi 对有情人来说今天就是情人节,对单身汪来说,今天就是个星期四. but,软件也是要秀恩爱的! ♥ 晒晒我家亲爱的CRM,它的全名叫Microsof ...
- Cisco IOS Software Activation Command Reference
clear license agent : to clear license agent statistics counters or connection statistics (in privil ...
- spark1.3.1安装和集群的搭建
由于越来越多的人开始使用spark计算框架了,而且spark计算框架也是可以运行在yarn的平台上,因此可以利用单个集群,运行多个计算框架.这是一些大公司都是这么干的.好了,下面讲一下spark1.3 ...
- 一个有趣的IE内核检测网站
http://se.360.cn/v5/iecoretest.html 该网站能有效检测您浏览器的内核,以及版本,操作系统. 找到这个网址,是因为最近解决WebBrowser自动调节IE版本功能时发现 ...
- SecureCRT下的串口无法输入
用串口配置交换机的时候,出现的问题: 用secureCRT建了一个串口COM1后,连接上开发板后,可以正确接受和显示串口的输出,但是按键输入无效. 解决方法: Session Options -> ...
- leetcode 233 Number of Digit One
这题属于需要找规律的题.先想一下最简单的情形:N = 10^n - 1 记X[i]表示从1到10^i - 1中 1 的个数,则有如下递推公式:X[i] = 10 * X[i - 1] + 10^(i ...
- 并非然并卵的z-index
最近做一些东西的时候总觉得加上z-index和不加对于最终的显示结果并没有什么区别,开始以为一张图片把z-inde的值调小一点儿,就可以当做背景图片一样使用,跟background是一样的,在试过几次 ...
- iOS探索:对NSArray中自定义的对象进行排序
http://mobile.51cto.com/hot-434804.htm 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天 ...
- 解决:Ubuntu12.04下使用ping命令返回ping:icmp open socket: Operation not permitted的解决
ping命令在运行中采用了ICMP协议,需要发送ICMP报文.但是只有root用户才能建立ICMP报文.而正常情况下,ping命令的权限应为-rwsr-xr-x,即带有suid的文件,一旦该权限被修改 ...
- 如何在ubuntu 12.04 中安装经典的 GNOME桌面
这次介绍的是如何在ubuntu 12.04 中安装经典的 GNOME桌面,默认的 Ubuntu 12.04 默认unity桌面,一些用户不喜欢 Unity 桌面,所以想找回昔日的经典Gnome桌面. ...