WinMain初始化详细过程以及消息循环
主要内容:详细介绍WinMain函数的初始化过程以及消息循环
1.窗口类定义
通过给窗口类数据结构WNDCLASS赋值完成,
该数据结构中包含窗口类的各种属性
<1>LoadIcon
作用:在应用程序中加载一个窗口图标
原型:HICON LoadIcon(HINSTANCE hInstance, LPCTSTR lpIconName)
//第一个参数为图标资源所在的模块句柄,
//指向用户所加载图标的那个窗口
//若为NULL则使用系统预定义图标
//第二个参数为图标资源名或系统预定义图标标识名
<2>LoadCursor
作用:在应用程序中加载一个窗口光标
原型:HCURSOR LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName)
//第一个参数为光标资源所在的模块句柄,
//NULL则使用系统预定义光标
//第二个参数表示使用的是什么类型的光标
<3>调用GetStockObject函数获取系统提供的背景刷
原型:HBRUSH GetStockObject(int nBrush)
2.注册窗口类
<1>Win系统本身提供部分预定义的窗口,
程序员也可以自定义窗口类,
窗口类必须先注册后使用
<2>窗口类的注册由函数RegisterClass()实现
<3>RegisterClass(&wndclass); //wndclass为窗口类结构
<4>RegisterClass返回布尔值,注册成功返回true
3.创建窗口实例
<1>创建窗口实例由函数CreateWindow()实现
<2>函数原型:
HWND CreateWindow(
LPCTSTR lpszClassName, //窗口类名
DWORD dwStyle, //创建窗口的样式
int x, y, //窗口左上角坐标
int nWidth, nHeight, //窗口的宽度和高度
HWND hwndParent, //该窗口的父窗口句柄
HINSTANCE hInstance, //创建窗口的应用程序当前句柄
LPVOID lpParent //指向一个传递窗口的参数值的指针
)
窗口样式: 以WS_开头,如WS_OVERLAPPEDWINDOW
4.显示窗口
<1>窗口类的显示由 ShowWindow和UpdateWindow函数实现
<2>窗口显示形式标识 ShowWindow(hwnd, nCmdShow)
<3>应用程序调用ShowWindow函数在屏幕上显示窗口
SW_HIDE 隐藏窗口
SW_SHOWNORMAL 显示并激活窗口
SW_SHOWMINIMIZE 显示并最小化窗口
SW_SHOWMAXMIZE 显示并最大化窗口
SW_SHOWNOACTIVE 显示但不激活窗口
SW_RESTORE 恢复窗口的原来位置及尺寸
<4>显示窗口后,
应用程序调用UpdateWindow更新并绘制用户区,
并发出WM_PAINT消息
UpdateWindow(hwnd)
5.消息循环
<1>消息循环过程
(Windows)产生消息
---> (消息队列)WinMain函数
---> 将消息传递给窗口函数的相应过程处理(WndProc)
<2>消息循环常见格式:
MSG Msg;
...
while(GetMessage(&Msg, NULL, 0, 0)){
TranslateMessage(&Msg); //将消息的虚拟键转化为字符信息
DispatchMessage(&Msg); //将消息传送到制定窗口函数
}
GetMessage原型:
该函数从消息队列中读取一条消息,并将消息放在MSG结构体中
GetMessage(
lpMSG, //指向MSG结构体的指针
hwnd, //从哪一个窗口获取消息
nMsgFilteMin, //用于消息过滤的最小消息号值
nMsgFilteMax //用于消息过滤的最大消息号值
)
//后两个参数用于通过消息号来过滤消息
WinMain初始化详细过程以及消息循环的更多相关文章
- win32编程中消息循环和WndProc()窗口过程函数
原文地址:https://blog.csdn.net/zxxSsdsd/article/details/45504383 在win32程序的消息循环函数中 while (GetMessage (&a ...
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowse ...
- QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
使用QT也有一段时间了,有的时候需要跟踪代码到QT的源码中去查找问题.在这里我将记录一下我跟踪QT源码学习到的一些知识. 我的开发环境是VC6.0+QT4.3.3.QT已经不为VC6.0提供addin ...
- Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219
Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个 ...
- [转]Handler MessageQueue Looper消息循环原理分析
Handler MessageQueue Looper消息循环原理分析 Handler概述 Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler ...
- (转) MFC的入口点与消息循环,消息映射
博文分析的很不错,尤其是替换默认窗口过程的这块,本人觉得,所有的这些都可以参阅侯杰的<深入浅出MFC >. 来自:http://blog.csdn.net/sryan/article/de ...
- Android应用程序线程消息循环模型分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是 ...
- Dubbo中消费者初始化的过程解析
首先还是Spring碰到dubbo的标签之后,会使用parseCustomElement解析dubbo标签,使用的解析器是dubbo的DubboBeanDefinitionParser,解析完成之后返 ...
- 详谈Windows消息循环机制
一直对windows消息循环不太清楚,今天做个详细的总结,有说错的地方,请务必指出. 用VS2017新建一个win32 Application的默认代码如下: 程序入口 ...
随机推荐
- [vijos P1023] Victoria的舞会3
这… 本来想学习一下Tarjan算法的,没想到码都码好了发现这题不是求强连通分量而是简单的连通分量…图论基础都还给老师了啊啊啊!最后深搜通通解决! v标记是否被访问过,scc标记每个的祖先(本来想写T ...
- OpenCV之响应鼠标(四):在图像上绘制出矩形并标出起点的坐标
涉及到两方面的内容:1. 用鼠标画出矩形.2.在图像上绘制出点的坐标 用鼠标绘制矩形,涉及到鼠标的操作,opencv中有鼠标事件的介绍.需要用到两个函数:回调函数CvMouseCallback和注册回 ...
- IOS文件管理-NSFileMangager-NSdata
Ios下的文件管理, Ios下不像windows 文件系统那样可以访问任何的文件目录,如C盘.D盘什么的.在Ios中每个应用程序只能访问当前程序的目录,也即sandbox(沙盒模型). iOS为每个应 ...
- linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程
1.设置任务调度命令crontab 任务调度是指系统在某个时间执行的特定的命令或程序.任务调度分为:1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描.2)个别用户工作:个别用户可能希望执行某 ...
- JS获取客户端Mac和IP
JS获取硬件信息是通过ActiveX进行获取的,因此只能IE浏览器支持,火狐不支持 而且必须降低浏览器安全级别,因此不到万不得以一般不会采用这种方式 <html> <head> ...
- PHP面向对象的继承
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- matlab的正则表达式讲解[转]
引言.啥是正则表达式?正则表达式是干啥的?我理解就和我们在word或者其他编辑软件里点的查找.替换的作用是差不多的,不过功能要强大的多,当然使用起来也稍微复杂一些.书上的定义差不多是这样的:正则表达式 ...
- hdu 2047
PS:又是上课偷懒..去递推.. 代码: #include "stdio.h"#include "math.h"long long dp[55];long lo ...
- UILabel自适应宽度的函数详解
之前用Text Kit写Reader的时候,在分页时要计算一段文本的尺寸大小,之前使用了NSString类的sizeWithFont:constrainedToSize:lineBreakMode:方 ...
- 初始React Native
1.何是React Native: React-Native是:Facebook 在2015年初React.js技术研讨大会上公布的一个开源项目.支持用开源的JavaScript库React.js来开 ...