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++深入讲解这本书吧

本节程序

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • org.apache.jasperException(jasper是谁)

    该错误为所要转跳的jsp页面包含语句错误!org.apache.jasper.JasperException:Theabsoluteuri:http://java.sun.com/jsp/jstl/corecannotberesolvedineitherweb.xmlorthejarfilesdeployedwiththisapplication  

    2022年4月16日
    46
  • linux下ll命令_ubuntu bash命令

    linux下ll命令_ubuntu bash命令ubuntull命令1、用过Redhat或者Centos的朋友应该很熟悉ll这个命令,就相当于ls-l,但在Ubuntu中要么不能用,要么会显示隐藏文件,看起来很烦。2、严格来说ll不是一个命令,只是命令的别名而已。很多Linux用户都使用bashshell,对普通用户来说用得最多的就是命令补全(按tab键)和alias(别名)功能。Ubunt…

    2022年9月24日
    3
  • 如何查看redis占用内存大小

    如何查看redis占用内存大小

    2021年11月3日
    43
  • Shell Step by Step (4) —— Cron & Echo「建议收藏」

    Shell Step by Step (4) —— Cron & Echo

    2022年2月7日
    45
  • pywin32、win32api、win32gui、win32com、win32con 都是啥?「建议收藏」

    pywin32、win32api、win32gui、win32com、win32con 都是啥?「建议收藏」pywin32、win32api、win32gui、win32com、win32con名称非常类似,特别容易混淆,今天就用600字给大家区分一下文章目录pywin32win32guiwin32conwin32apiwin32com记录时间pywin32pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个模块库。该模块的另一个作用是是通过Python进行COM编程。落地场景:如果你想在Windows操作系统用Python实现自动化工作,pywin32模块经常用到

    2022年10月11日
    2
  • 安装Chrome驱动[通俗易懂]

    安装Chrome驱动[通俗易懂]相信许多小伙伴在学习selenium时候遇到驱动器无法运行的错误,就跟我一样,所以写一篇博客讲一讲如何安装这就是谷歌浏览器驱动没有安装成功而产生的报错。下面我给大家简单说说如何安装谷歌驱动器。Windows系统1.下载谷歌浏览器可以参考以下链接https://www.google.cn/intl/zh-CN/chrome然后检测自己的版本2.下载对应的Chrome驱动参考以下的链接http://npm.taobao.org/mirrors/chromedriver/应该可以看到以下

    2022年6月29日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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