VC++关于WinMain程序的学习笔记(2)
来源:http://www.tudoupe.com时间:2022-04-14
目录
Windows 程序、操作系统以及计算机硬件的相互依存关系
Windows操作系统提供近1 00个API功能。
句柄
消息与消息队列
MSG结构体:
WinMain 函数描述如下:
窗口的创建
一. 创建窗口类 :
2.注册窗口类:
3.创建窗口:
4.显示及更新窗口
(1)显示窗口
(2)更新窗口
消息循环
编写窗口过程函数
变量的命名约定
摘要(制定Win32方案的程序)
Windows 程序、操作系统以及计算机硬件的相互依存关系

Windows操作系统提供近1 00个API功能。
创建窗口是一个为程序创建窗口的函数 。
显示窗口: 显示窗口 。
加载 Icon: 此类用于装入图标 。
SendMessage: 用于发送信件 。
句柄
图标处理 (HICON)
处理光标语句( HHURSOR)
刷子手柄 (HBRUSH) 。
消息与消息队列
MSG结构体:

WinMain 函数描述如下:

窗口的创建
创建完整窗口需要下列操作程序:
1. 创建窗口类;
2.注册窗口类;
3.创建窗口;
四场表演 更新窗口
一. 创建窗口类 :


第一个成员变量style通常使用的这类窗口的样式如下:
■ CS_HREDRAW
当窗口水平方向的宽度发生变化时,整个窗口将被重新油漆。当窗口被重新拖动时,窗口中的文字和图形将被擦去。如果不提供此样式,当窗口的宽度水平被改变时,窗口不会被重新拖动。
■ CS_VREDRAW
当窗口垂直方向的高度变化时,整个窗口将被重新油漆。如果不提供此样式,如果窗口垂直方向的高度变化,窗口将不会被重新绘制。
■ CS_NOCLOSE
禁用系统菜单的关闭命令,导致窗口不关闭按钮。
■ CS_DBLCLKS
当用户双击窗口中的鼠标时,它会向窗口进程发送双击消息。
2.注册窗口类:
3.创建窗口:

lpClass 指定了窗口类的名称 。
窗口的名称由 IpWindow 指定 。
生成窗口的样式由 dwStyle 指定 。
dwStyle 设置 :
要将风格成员与WNDCLASS中的创建窗口方法区分开来, 请查找 dwStyle 参数 。前者是所选窗口类的风格 。这些样式应用到使用此窗口类建立的窗口 。后者是一种指定特定窗口的样式。WS_ 覆盖的窗口是一种将许多其他窗口组合在一起的窗口类型。
窗口类型:
WS_OVELAPPD: 此函数生成一个带有标题栏和边框的层形窗口 。
WS_Option:此函数创建带有标题栏的窗口。
WS_SYSmenU:在标题栏上创建一个带有系统菜单的窗口,使用 WS_Choption 类型。
WS_THICKFRAME: 创建一个有可调整边界的窗口 。
WS_MINIMIZEBOX:在设置 WS_SYSMENU 类型的同时,用最小的按钮建立一个窗口。
WS_MAXIMIZEBOX: 设定窗口中最大的按钮, 并及时设置 WS_ SYSMENU 类型 。
x, y, nWidth, nH8: 表示左上角窗口的 x 坐标、 y 坐标、 宽度和高度 。
如果选项 x 设置为 CW_USEDEFOLT, 则会发生下列情况:系统然后使用窗口默认的左上角坐标,忽略 Y 参数。如果 nWidth 选项设置为 CW_USEDEFOLT,因此,系统选择了窗口的默认宽度和高度。nH8 参数被忽略 。
hWnd Patrent 参数表示要构造的父窗口控点 。
母窗口活动对子窗口的影响
参数 hMenu 指定了窗口菜单的控点 。
hInstance 参数指定窗口所属应用程序示例的控点 。
ipParam: 作为 WM_CREATE 电文的附加参数而给定的数据指针, 由 lParam 提供 。
如果窗口成功形成, 创意窗口方法会返回系统给窗口的控点; 否则, 它返回 NULL。 应当指出, 在建立窗口之前, 应该设置窗口控点变量以接受创建窗口时返回的字符串控点值 。
4.显示及更新窗口
(1)显示窗口
要显示窗口, 请使用“ 显示窗口” 函数 :
hnd 是前一步成功创建窗口后返回的窗口控点 。
NCMdShow已被指定 。窗口显示的状态:
SWHIDE: 激活其它窗口时隐藏窗口 。
SW_SHOW: 激活并显示窗口的原始大小和位置 。
SW_SHOWMAXIMIED:此命令激活窗口并最大化其显示 。
SW_SHOWMINIMIZED:此命令激活窗口并将其显示最小化 。
SW_SHOWNORMAL:激活并显示窗口。如果窗口被最小化或最大化,系统将恢复到原来的大小和大小。当窗口最初显示时,应用程序应该提供此指示 。
(2)更新窗口
要刷新窗口, 请在使用 ShowWindow 后拨打“ 更新窗口 ” 。
更新窗口函数的原型如下:

消息循环
在生成、显示和更新窗口后,必须建立一个信息循环,不断从信息队列中提取信息并作出回应。
要从信件队列中获取信件,请使用 GetMessage () 方法,其原型如下:

IpMsg指组合组合组合结构。
要接收的窗口由 hWnd 指定 。
wMsgFiltermin确定电文的最低值,该值一般定为零。
wMsgFilterMax 定义了要获取的最大信件值。 如果 wMsgFiltermin 和 wMsgFilter Max 都设定为零, 则所有信件都会收到 。
除了WMUIT, GetMessage 方法返回所有收到信件的非零结果 。关于WMUIT的消息,该函数返回0。如果出现了错误,该函数返回-1,例如,当参数 hWnd 是一个不正确的窗口控点或参数 lpMsg 是一个无效的指针时,发生下列错误:该函数返回-1。
以下是标准的信息循环代码:

TranslateMessage 函数负责将虚拟密钥信息转换为字符信息 。
字符信息被路由到线索的邮件队列 。当您再次调用GetMessage方法时,它将被删除。当我们在键盘上按键时WM_KEYDOWN和WM_KEYUP信息将由系统生成。两种电文的额外参数(wParam和lParam)都含有虚拟钥匙代码和扫描代码等信息。此外,我们经常需要为申请中的性格获得ASCII编码。TranslateMessage 函数将 WM_KEYDOWN 和 WM_KEYUP 信件的组合转换为 WM_CHAR 信件( 字符 ASCII 代码包含在信件的 wParam 额外参数中 ) 。这篇文章是全球之声在线特稿的一部分。(注意,原始信件不会被 TranslateMessage 方法更改 。它只是创造新消息, 并添加到新闻队列上。)
DespatchMessage 函数向窗口进程发送信息, 然后由窗口进程处理 。
United Message 将信件真正返回到操作系统, 操作系统会运行窗口处理方法( 回复) 。
Windows 程序、操作系统以及计算机硬件的相互依存关系:

Windows 应用程序中信息处理机制:

(1) 操作系统从应用程序中获取窗口信息,并将其引向应用程序的电文队列。
(2) 在信息循环中,该应用程序援引GetMessage方法从电文队列中检索电文。在取出消息后,信息可以通过应用程序预处理。例如,我不知道我能不能回答一些新闻要生成新信息, 请使用 TranslateMessage 。
(3) 本程序使用快递Message方法将信息发送回操作系统,信息由MSG结构对象定义,该结构对象包含接收信息的窗口的控点,因此,快递Message函数总是正确传输。
(4) 该系统利用WNDCLASS结构的 lpfnWndProc 元素保存的窗口的流程功能,处理电文(即“系统向应用程序发送电文”)。
对于 Windows 应用程序, 这是信件处理程序 。
也可以使用PeekMessage 函数从电文队列中获取电文,该功能有以下原型:

IpMsg指组合组合组合结构。
要接收的窗口由 hWnd 指定 。
wMsgFiltermin确定电文的最低值,该值一般定为零。
wMsgFilterMax 定义了要获取的最大信件值。 如果 wMsgFiltermin 和 wMsgFilter Max 都设定为零, 则所有信件都会收到 。
前四个参数的目的与 GetMessage 函数的四个参数相同。 最后一个参数描述了如何获取消息:
PM_NORMOVE: 信件不会从队列中删除 。
PM_REMOVE: 信件将从信件队列中删除( 符合 GetMessage 函数的行为 ) 。
使用 SendMessage 和 PostMessage 方法发送信件 。发件人发件人将信件引导到窗口 。并援引窗口的处理程序。在带信件的窗口程序完成后,此方法返回( SendMessage 传输未排队的信件) 。信件一被放在与创建窗口的线索相关的信息队列中,即用 PostMessage 方法返回 。除了这两个函数外,此外,还提供“事后消息”方法。它用来和线条沟通对于线程消息,在SG结构中,hwnd成员为NULL。
编写窗口过程函数
窗口进程函数包含 Windows 程序的大多数代码 。
此方法创建了一个窗口进程函数, 用于处理窗口收到的信件 。
窗口进程函数的写法如下:

系统使用窗口进程函数的地址(点)来调用窗口进程函数,而不是名称。
可以使用 WinSunProc 等窗口进程函数,但必须以与上述句子相同的方式指定该函数。
在窗口进程函数内,使用开关/办案语句来决定窗口进程获得的信息和如何处理:
在窗户被毁灭窗口功能摧毁后NM_DESTROY通知将发给窗口进程。在信息响应代码中,我们称之为 PostQuitMessage 函数 。PostQuitMessage 函数从应用程序的邮件队列中传输并返回 WMUIT 消息 。GetMessage 函数收到 WMUIT 消息时, 它只返回 0 。新闻循环已经结束。程序退出。如果你想正确分配软件,你必须把软件弄出去。我们必须对WM_DESTROY信号作出反应。这篇文章是「免责信条」报导的一部分。无法将信件附加到 mh 文件夹:%s:%sWParam WMUIT 消息的 wParam 参数参数参数参数将提供给 PostQuitMessage 函数 。此值通常用作 WinMain 函数的返回值 。
变量的命名约定
因为Windows程序通常很冗长,在特定时间里,程序员可能会忘记所宣布变量的含义。为了帮助您回忆和区分变量,微软为Windows做了一个命名交易, 它不会工作。"匈牙利语的注解"匈牙利立法具体规定了一套前缀字符以及前缀清单。如下所示,这些前缀也可以混合使用。

摘要(制定Win32方案的程序)
(1) 构建 WinMain 函数,可从 MSDN 中检索和复制该函数。
(2) 窗口设计等级(WNDCLASS)。
(3)注册窗口类。
(4)创建窗口。
(5) 显示和更新窗口
(6) 必须准备信息循环。
(7) 创建窗口进程函数。窗口进程函数的语法可以在成员对 WNDCLASS lpfnWndProc 成员变量的解释中找到。
(1) VC++Winmain应用研究注释
VC++MFC 应用程序向导如下。
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

