Windows GUI --从main函数开始写一个Windows窗口程序

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

关于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会首先为该程序创建一个“消息队列”。 而程序中通常包含一段“消息循环”的代码, 该代码用于从消息队列中取出消息,并将其分发给对应的窗口过程。还存在一些非队列消息,将直接发送给窗口过程。

创建窗口的流程

下面简述一下,创建一个窗口的基本流程:

  1. 定义一个窗口类。 窗口类标识了系统传递给窗口的窗口过程函数,同时指定了对应的窗口绘制风格、窗口的图标、鼠标样式等。多个窗口可以共享一个窗口类, 所以多个窗口可以公用一个窗口过程函数。
  2. 将窗口类向操作系统注册。
  3. 创建窗口。根据窗口类定义的唯一窗口类名称。
  4. 显示窗口并进行更新。

源码实现

#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. 定义一个窗口类
  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值