win32创建窗口函数(windows程序内部运行机制)

win32创建窗口函数(windows程序内部运行机制)

利用win32创建窗口函数,主要操作步骤为:

1、设计一个窗口类
2、注册窗口类
3、创建窗口
4、显示及窗口更新
5、消息循环
6、窗口过程函数
 
(1)设计一个窗口类
设计窗口类,这样的类型已经被windows定义好了,我们只需要像选择题一样填满定义好的结构体(WNDCLASS)即可。
首先有两个一般设为0的选项:cbClsExtra和cbWndExtra,这两个是类附加内存和窗口附加内存。
hbrBackground指定窗口类的背景画刷句柄。可以用来指定一个画刷的句柄,也可以指定一个标准的系统颜色值。
hCursor指定窗口类的光标句柄
hIcon指定窗口类的图标句柄
hInstance指定包含窗口过程程序的程序的实例句柄
lpfnWndProc是一个函数指针,指向窗口过程函数
lpszClassName指定窗口类的名字
lpszMenuName指定菜单资源的名字
style指定窗口的样式
 
(2)注册窗口类
RegisterClass( xxx )里面的参数为指向窗口WNDCLASS的指针
让操作系统知道这一类型的窗口相关信息
 
(3)创建窗口
hwnd = CreateWindow(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParant,hMenu,hInstance,lpParam)
lpClassName指定窗口类的名称,即窗口类中的lpszClassName
lpWindowName指定窗口的名字
dwStyle指定创建的窗口样式,主要是窗口显示些什么东西
x,y,nWidth,nHeight左上角坐标,长、宽
hWndParant指定被创建窗口的父窗口句柄
hMenu指定窗口菜单的句柄
hInstance指定窗口所属的应用程序实例的句柄
lpParam多数窗口将这个设为NULL
 
(4)显示及更新
ShowWindow(hwnd,窗口显示状态);
UpdateWindow(hwnd);

 
(5)消息循环
创建、显示、更新窗口之后,需要有一个消息循环,不断的从消息队列中读取消息。
GetMessage( lpMsg , hWnd , wMsgFilterMin, wMsgFilterMax)
lpMsg指向一个消息结构体(MSG)
hWnd指定接收哪一个窗口的消息,通常设为NULL,接收属于调用线程所有窗口的窗口消息
wMsgFilterMin,wMsgFilterMax指定要获取的消息最小值和最大值,通常设为0
GetMessage函数对于WM_QUIT消息,返回0
TranslateMessage和DispatchMessage对收到的消息进一步处理
 
(6)窗口过程函数
用于处理发送给窗口的消息
 
 
这一章主要通过一个win32编程的例子,讲述了windows程序设计,是一种交互式的、事件驱动的程序设计模式,基于消息的。
 
详细内容,参考VC++深入讲解这本书吧

本节程序

 
 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119502.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python机器学习手写算法系列——线性回归「建议收藏」

    python机器学习手写算法系列——线性回归「建议收藏」本文致力于手把手教你实现一个最简单的机器学习模型–一元线性回归模型。短短的14行代码,就实现了。希望读完以后,你也能自己实现它。并对线性回归有更好的了解,或者从不了解到了解。

  • connectionStrings字符串连接

    connectionStrings字符串连接以前在学校学习的时候,自己曾经做过一个项目再连接数据中。碰到了很多关于connectionStrings字符串连接问题。在那时自己的印象中,mdf数据库必须附加到sqlserver2005或2008等工具上才可以使用。今天才知道原来只要有数据库文件就行,没有必要附加上去。下面是连接字符串语句:<connectionStrings><addname=”…

  • could not get lock /var/lib/apt/lists/lock_var目录满了有什么影响

    could not get lock /var/lib/apt/lists/lock_var目录满了有什么影响在Ubuntu中,有时候运用sudo apt-getinstall安装软件时,会出现一下的情况E:Couldnotgetlock/var/lib/dpkg/lock-open(11:Resourcetemporarilyunavailable)E:Unabletolocktheadministrationdirectory(/var/lib/dpk

  • 【OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)

    【OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)2.图像的保存函数cv2.imwrite()用于将图像保存到指定的文件。函数说明:retval=cv2.imwrite(filename,img[,paras])cv2.imwrite()将OpenCV图像保存到指定的文件。cv2.imwrite()基于保存文件的扩展名选择保存图像的格式。cv2.imwrite()只能保存BGR3通道图像,或8位单通道图像、或PNG/JPEG/TIFF16位无符号单通道图像。参数说明:filename:要保

  • ie浏览器无法连接到代理服务器_网页无法连接到代理服务器

    ie浏览器无法连接到代理服务器_网页无法连接到代理服务器由于工作上的需要,相信很多用户会使用IE代理服务器,但是在设置之后遇到IE代理服务器没有响应错误提示(如图所示),并且浏览器无法打开网页的问题,但使用其他浏览器是可以正常上网,出现这种情况很有可能是注册表设置问题,我们可以按照以下方式来解决。     1、打开运行窗口(系统键Win+R),输入”regedit.exe”.如下图所示,根据下边的地址逐步打开:HKE

    2022年10月23日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号