windows 编程随笔——窗口和信息
2010-01-18 16:29
253 查看
1,在简单的hellowin(一个具有最小化,最大化,关闭的窗体结构)程序中简述的一个简单的win窗口程序的机制,简略概述:
a,结构,具有如下4个:
MSG 信息结构
WNDCLASS 窗口类结构
PAINTSTRUCT 绘图结构
RECT 矩形结构
b,句柄名具有如下3个:
HINSTANCE 实例(程序自身)句柄
HWND 窗口句柄
HDC 设备描述表句柄
c,在一个窗口程序中,我们第一步就是要注册窗口类,在实际注册前需做点准备工作:也就是有几个结构,有几个句柄需要使用。
在单单绘制一个窗口时我们需要结构(MSG、WNDCLASS);句柄(HWND)
接着就是需要初始化结构和句柄,但是结构是在注册窗口前需要初始化的(WNDCLASS),句柄在注册窗口之后初始化,信息(MSG)的初始化在句柄之后。
c1, WNDCLASS结构的初始化: 顾名思义是为一个结构体初始化参数。有10个域。
10个域分别代表:style样式【预处理定义了8进制的辨识码】、inpfWndProc窗口类窗口过程设置【也就是在窗口发生了动作后找谁处理,就找这个属性值的函数去处理】、cbClsExtra,cbWndExtra窗口结构中的预留空间【类似边框向内缩多少像素的意思】、hInstance句柄【也就是程序自身】、hIcon图标、hCursor鼠标句柄【通过函数赋值使鼠标进入窗口区域后变成箭头】、hbrBackground背景色【背景刷子】、IpszMenuName窗口菜单、IpseClassName类名。
c2,接下来注册窗口类:
RegisterClass函数接收一个WNDCLASS的引用。成功后进行窗口创建
d, 接着创建窗口,也就是对HWND句柄的初始化:
CreateWindow()函数有11个参数。分别为szAppName注册的窗口类名、TEXT标题栏显示【text用于文本显示】、style、x【窗口位置】、y【窗口位置】、x size【窗口大小】、y size【窗口大小】、父窗口句柄、菜单栏句柄、实例【自身】句柄、创建参数。
e,显示窗口:
ShowWindow(hwnd句柄,iCmdShow)第一个参数是创建窗口的句柄,第二个是窗口显示的方式,是最大化,最小化,还是普通。 如果你定了普通显示 那么窗口会被WNDCLASS初始化的背景刷子覆盖,所以需要UpdateWindow(hwnd句柄)把窗口移上来一层。
f,信息循环:也就是说,对在窗口区域内的所有操作程序是通过信息循环来完成的。
这个时候我们的MSG结构来了。通过GetMessage(&msg,null,0,0)函数,通过TrasnlateMessage(&msg)传送消息到队列。通过DispatchMessage(&msg)取出一个消息处理。那么处理完一个信息后怎么在回到开始出,调用和接收新一个信息呢,这个时候就有一个叫窗口过程的东西,通过一个callback函数实现回调过程。如果要中断消息的话只要让消息返回0就ok,怎么做呢?关闭窗口就会触发消息返回0.当然也是通过MSG的消息循环做到的。
a,结构,具有如下4个:
MSG 信息结构
WNDCLASS 窗口类结构
PAINTSTRUCT 绘图结构
RECT 矩形结构
b,句柄名具有如下3个:
HINSTANCE 实例(程序自身)句柄
HWND 窗口句柄
HDC 设备描述表句柄
c,在一个窗口程序中,我们第一步就是要注册窗口类,在实际注册前需做点准备工作:也就是有几个结构,有几个句柄需要使用。
在单单绘制一个窗口时我们需要结构(MSG、WNDCLASS);句柄(HWND)
接着就是需要初始化结构和句柄,但是结构是在注册窗口前需要初始化的(WNDCLASS),句柄在注册窗口之后初始化,信息(MSG)的初始化在句柄之后。
c1, WNDCLASS结构的初始化: 顾名思义是为一个结构体初始化参数。有10个域。
10个域分别代表:style样式【预处理定义了8进制的辨识码】、inpfWndProc窗口类窗口过程设置【也就是在窗口发生了动作后找谁处理,就找这个属性值的函数去处理】、cbClsExtra,cbWndExtra窗口结构中的预留空间【类似边框向内缩多少像素的意思】、hInstance句柄【也就是程序自身】、hIcon图标、hCursor鼠标句柄【通过函数赋值使鼠标进入窗口区域后变成箭头】、hbrBackground背景色【背景刷子】、IpszMenuName窗口菜单、IpseClassName类名。
c2,接下来注册窗口类:
RegisterClass函数接收一个WNDCLASS的引用。成功后进行窗口创建
d, 接着创建窗口,也就是对HWND句柄的初始化:
CreateWindow()函数有11个参数。分别为szAppName注册的窗口类名、TEXT标题栏显示【text用于文本显示】、style、x【窗口位置】、y【窗口位置】、x size【窗口大小】、y size【窗口大小】、父窗口句柄、菜单栏句柄、实例【自身】句柄、创建参数。
e,显示窗口:
ShowWindow(hwnd句柄,iCmdShow)第一个参数是创建窗口的句柄,第二个是窗口显示的方式,是最大化,最小化,还是普通。 如果你定了普通显示 那么窗口会被WNDCLASS初始化的背景刷子覆盖,所以需要UpdateWindow(hwnd句柄)把窗口移上来一层。
f,信息循环:也就是说,对在窗口区域内的所有操作程序是通过信息循环来完成的。
这个时候我们的MSG结构来了。通过GetMessage(&msg,null,0,0)函数,通过TrasnlateMessage(&msg)传送消息到队列。通过DispatchMessage(&msg)取出一个消息处理。那么处理完一个信息后怎么在回到开始出,调用和接收新一个信息呢,这个时候就有一个叫窗口过程的东西,通过一个callback函数实现回调过程。如果要中断消息的话只要让消息返回0就ok,怎么做呢?关闭窗口就会触发消息返回0.当然也是通过MSG的消息循环做到的。
相关文章推荐
- windows 编程随笔——窗口和信息补充之消息循环
- windows编程——窗口与消息2
- Windows下获取硬件信息的编程(CPU、硬盘、内存和启动时间等)
- Windows下C编程获取软件安装列表信息
- 基于visual c++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息
- 开始进行 64 位 Windows 系统编程之前需要了解的所有信息
- Windows API 编程之创建一个windows窗口
- MFC/DLL 编程时用独立的控制台窗口显示用户自定义调试信息
- Windows下GUI编程——窗口
- windows编程入门之窗口的显示窗口
- 雅阁学习笔记之windows编程——保存文件和打开浏览文件夹窗口
- C++MFC编程笔记day04 运行时类信息和窗口的动态、静态切分
- 开始进行 64 位 Windows 系统编程之前需要了解的所有信息
- [Windows编程] 如何判断一个窗口已经停止响应
- [Windows编程] 使用AttachThreadInput 来捕捉其它窗口的键盘输入
- IE编程1(.net)——读取IE窗口信息
- Windows 下编程检测显示器信息及插拔
- 初学Windows编程笔记1——窗口和消息
- windows 编程随笔——GDI>>一些内部数据结构
- windows UI Design via c#/ window窗口界面编程 (1)