Windows编程基础
主要内容:介绍Windows编程的一些基础概念
1.窗口的概念
<1>一个应用程序的窗口通常包括控制菜单框、下拉菜单、
工作区以及最大化按钮、最小化按钮,
还有垂直滚动条、水平滚动条
<2>窗口是系统管理应用程序的基本单位
<3>窗口是应用程序与用户之间交互的接口环境
<4>是Win应用程序的基本操作单元
2.事件驱动的概念
<1>所谓事件驱动,简单地说就是点击什么对象(即产生什么事件),
电脑就执行什么操作(即调用什么函数)
<2>Windows程序设计是针对事件驱动进行的,
事件驱动是对事件消息的描述
<3>Windows程序的执行顺序取决于事件的发生顺序,
程序的执行顺序是由顺序产生的消息驱动的
3.句柄的概念
<1>句柄是一个8字节长(相对于64位操作系统)的数值,
用于标识应用程序中不同的对象和同类对象中的不同实例
<2>应用程序通过句柄访问相应的对象信息
以下为API编程中常见句柄:
HWND 窗口句柄
HBITMAP 位图句柄
HDC 设备环境句柄
HCURSOR 光标句柄
HFONT 字体句柄
HICON 图标句柄
HMENU 菜单句柄
HPEN 画笔句柄
HBRUSH 画刷句柄
HFILE 文件句柄
HINSTANCE 当前实例句柄
4.消息的概念
<1>Windows应用程序利用Windows消息(Message)与应用程序及系统进行信息交换
<2>在Windows中消息用结构体MSG表示
- typedef struct tagMSG{
- HWND hwnd; //消息所属的窗口句柄(索引内存当中的资源)
- UINT(无符号整型) message; //消息ID,由Windows.h头文件中的宏定义来标识,常以WM_开头
- WPARAM(整型) wParam; //关于消息的附加参数,例如:按下一个键,具体是哪个按键
- LPARAM(整型) LParam; //关于消息的附加参数
- DWORD(32位整数) time;//消息被传递到消息队列的时间
- POINT(坐标结构体) pt; //消息被传递到消息队列时,光标在屏幕上的位置
- } MSG;
<3>消息的内容
<1>消息号:由事先定义好的消息名标识
<2>字参数wParam:用于提供消息的附加信息
<3>长字参数lParam:用于提供消息的附加信息
<4>附加信息与具体消息号的值有关,
<5>VC++中存在几种系统定义的消息分类,
不同的前缀符号经常用于消息宏识别消息附属的分类,
系统定义的消息宏前缀如下:
BM 表示按钮控制消息(Button Message)
CB 表示组合框控制消息(Combo Box)
DM 表示默认下压式按钮控制消息(Deafult Message)
EM 表示编辑控制消息(Edit Message)
LB 表示列表框控制消息(List Box)
SBM 表示滚动条控制消息(Scroll Bars Message)
WM 表示窗口消息(Window Message)
<6>Windows编程常用的消息有
窗口管理消息 控制通知消息
初始化消息 滚动条通知消息
输入消息 非用户区消息
系统消息 MDI消息
剪贴板消息 DDE消息
控制处理消息 应用程序自定义的消息等
具体可查询MSDN文档
Windows编程基础的更多相关文章
- 第一章 Windows编程基础(1~4课)
第一课:从main到WinMain 第二课:窗口和消息 第三课:MFC编程 第四课:MFC应用程序框架 概括: Win32的两种编程框架:SDK方式.MFC方式 1. SDK方式:使用WinMain入 ...
- WINDOWS编程基础-最简单的windows程序
流程 1 建立并注册windows类 2 使用windows类创建窗口 3 实现事件处理,主循环 PeekMessage与GetMessage的对比 相同点: PeekMessage函数与GetMes ...
- Windows 编程基础
1 Windows应用程序的分类 1.1 控制台程序 DOS程序,本身没有窗口,通过WINDOWS下的DOS窗口执行. 1.2 窗口程序 拥有自己的窗口,通过窗口可以和用户进行交互.(比如:记事本,画 ...
- MFC入门教程01 Windows编程基础
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...
- MingW环境下的windows编程
一般在进行windows编程时都使用vc++精简版,其插入菜单,图片等资源等更简单,且vc中对中文有更好的支持,win7下安装的Mingw中文并不能很好地显示,有光标显示的位置和光标实际位置不符的问题 ...
- Windows编程
本文整理自百科.知乎与 科学家的世界 问题一:为什么开发windows应用程序不用c 而用.net,java,c++? 用 c+windows API 开发windows 应用程序 比用.net, ...
- 走进windows编程的世界-----入门篇
1 Windows编程基础 1.1Win32应用程序基本类型 1) 控制台程序 不须要完好的windows窗体,能够使用DOS窗体方式显示 2) Win32窗体程序 包括窗体的程序,能够通过窗 ...
- Windows编程 Windows程序的生与死(上)
引子 “Windows 程序分为‘程序代码’和‘UI(User Interface)资源’两大部份,两部份最后以RC编译器(资源编译器)整合为一个完整的EXE 文件.所谓UI 资源是指功能菜单.对话框 ...
随机推荐
- HDU 1098 Ignatius's puzzle 费马小定理+扩展欧几里德算法
题目大意: 给定k,找到一个满足的a使任意的x都满足 f(x)=5*x^13+13*x^5+k*a*x 被65整除 推证: f(x) = (5*x^12 + 13 * x^4 + ak) * x 因为 ...
- [mr440] 崎岖的山区
极类似动归的广搜?反正各种算法傻傻分不清…写之前叹了一句,好久不写广搜了啊!呵呵真的写了好久,大约一个钟头? f[i,j,0]表示到点(i,j)且最后一步为下降的最少步数,f[i,j,1]就是上升.莫 ...
- Android 读写SD卡的文件
今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...
- java基础-001
一.区分final . finally . finalize 1.关键字final Java语言的关键字final可以用于变量.类或方法,但是含义会有所不同. -用于变量:一旦初始化,变量值就不能修 ...
- hdu 2090
PS:输入麻烦...我还以为是输入一个就输出一个...后来看了大神的才知道....暴力破解了... 代码; #include "stdio.h" int main(){ ,a,b; ...
- python中的函数调用绑定,静态方法和类方法
在C++的类中,有两种函数:普通成员函数和静态成员函数,差别是成员函数通过类实例调用,而静态成员函数通过类名调用.本质上,成员函数在调用的时候会默认把this指针作为第一个参数传入,而静态成员函数不需 ...
- 极客DIY:使用Arduino制作一块开源手表
1 – 引言 首先让我们看下这个项目要考虑到的问题: .)使用100%Arduino兼容性硬件 .)保证存储器足够大可以装下大量的稍后会扩展的新内容 .)电量最少够1天用 .)BLE既是中枢设备又是外 ...
- Linux交叉开发环境搭建 —— 效率之源
楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: V ...
- Euro Efficiency_完全背包
Description On January 1st 2002, The Netherlands, and several other European countries abandoned the ...
- 请问用Inno_Setup打包文件夹时怎么排除其中一个文件?
请问用Inno_Setup打包文件夹时怎么排除其中一个文件? 该文件夹下有几十个文件,多个文件夹,我要一个个加进去该累死,也容易出问题.不知道能不能实现我要的目的. http://www.jrsoft ...