关于Windows main函数
准确地说Windows总共提供了2种main函数, 而由于字符编码的缘由, 又将2种main函数拆分成4个main函数,其函数名称及其区分如下表:
| 程序分类 | main入口点函数 | 解释说明 |
|---|---|---|
| CUI(控制台程序) | _tmain(Main) | ANSI编码控制台程序 |
| _tmain(Wmain) | Unicode编码控制台程序 | |
| GUI(窗口程序) | _tWinMain(WinMain) | ANSI编码GUI程序 |
| _tWinMain(wWinMain) | Unicode编码GUI程序 |
尝试窗机创建一个窗口
Windows操作系统处理窗口的基本逻辑是:当用户在窗口上进行操作时, Windows向应用程序发送消息告知应用程序, 应用程序做出相应的处理。所以,此逻辑表达了一个重要思想, 几乎可以成为Windows体系结构的基础: 你在Windows桌面做出的任何操作,都是操作系统调用应用程序而实现。
那么Windows操作系统将捕获到的消息如何传递给应用程序呢? 通过函数的方式传递, 而且此函数由程序开发人员定义, 并告知操作系统。 此函数就是所谓的“窗口过程”。
窗口过程的作用
窗口过程用于处理传递给窗口的消息。通常这些消息用于将用户的键盘输入或鼠标点击等操作通知给窗口。
简述消息循环
当应用程序开始执行的时候, Windows会首先为该程序创建一个“消息队列”。 而程序中通常包含一段“消息循环”的代码, 该代码用于从消息队列中取出消息,并将其分发给对应的窗口过程。还存在一些非队列消息,将直接发送给窗口过程。
创建窗口的流程
下面简述一下,创建一个窗口的基本流程:
- 定义一个窗口类。 窗口类标识了系统传递给窗口的窗口过程函数,同时指定了对应的窗口绘制风格、窗口的图标、鼠标样式等。多个窗口可以共享一个窗口类, 所以多个窗口可以公用一个窗口过程函数。
- 将窗口类向操作系统注册。
- 创建窗口。根据窗口类定义的唯一窗口类名称。
- 显示窗口并进行更新。
源码实现
#include <windows.h>
#include <exception>
#include <iostream>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
// 1. 定义一个窗口类

本文介绍了Windows GUI编程的基础,包括Windows提供的不同main函数类型,以及创建窗口的核心逻辑。重点讲解了窗口过程的重要作用,它用于处理来自操作系统的用户交互消息。文章还概述了消息循环的概念,它是如何从消息队列中取出消息并分发给窗口过程的。最后,概述了创建窗口的基本流程,包括定义窗口类、注册窗口类、创建和显示窗口等步骤。
最低0.47元/天 解锁文章
1378

被折叠的 条评论
为什么被折叠?



