【VC++深入详解笔记】Note 1: Windows桌面程序介绍

本文详细介绍了Windows桌面程序的开发,包括相关概念如VC++、窗口和句柄,以及程序内部的运行机制,如创建并显示窗口的四个步骤和消息处理。此外,还探讨了如何处理常见问题及解决方案。
摘要由CSDN通过智能技术生成

1. 相关概念解释

  • VC++
    VC++是微软公司旗下的一款IDE,集成了windows桌面应用程序的开发接口(Windows API),目前VC++已经被集成到visual studio里面去了。
  • 窗口
    窗口是电脑上能够与用户进行交互的一个矩形区域,win32 SDK中实现了多种样式的窗口。
  • 句柄
    句柄相当于每个窗口的标识符,windows系统可以通过句柄来唯一识别电脑中的任意一个窗口,并通过句柄来管理每个窗口。
  • 消息
    当用户与应用程序窗口之间发生交互事件时,操作系统会感知到这一事件,然后将这个事件包装成为一条消息,并将这条消息放到应用程序的消息队列之中等待应用程序取出。
  • 消息队列
    消息队列是每个应用程序都有的,相当于消息缓冲区,里面都是等待应用取出的消息。
  • 窗口过程函数
    用来处理应用接收到的消息的处理函数。
  • WinMain函数
    WinMain函数是windows桌面程序的入口,相当于控制台程序中的main函数。

2. Windows程序内部运行机制

一个完整的windows桌面应用程序,主要由创建并显示窗口和消息处理两大部分组成的。

2.1 创建并显示窗口

创建并显示窗口,有四个主要的步骤,分别是设计窗口类、注册窗口类、创建窗口和显示及更新窗口

2.1.1 设计窗口类

windows.h 头文件中已经定义了一个窗口结构体,里面包含了所有用于表示一个窗口所需要的数据成员(如窗口句柄、窗口长和宽、窗口名称等等)。这里所谓的设计窗口类,其实是通过设定这些数据成员来设定某种具体的窗口样式,而不是重新设计一个表示窗口的结构体。

//WNDCLASS结构体定义
typedef struct tagWNDCLASSW {
    UINT        style;//指定窗口样式
    WNDPROC     lpfnWndProc;//函数指针,指向窗体过程函数,处理窗体接收到的消息
    int         cbClsExtra;//类附加内存
    int         cbWndExtra;//窗口附加内存
    HINSTANCE   hInstance;//窗口句柄
    HICON       hIcon;//窗口图标句柄
    HCURSOR     hCursor;//窗口类的光标句柄
    HBRUSH      hbrBackground;//窗口类的背景画刷句柄
    LPCWSTR     lpszMenuName;//菜单资源的名字
    LPCWSTR     lpszClassName;//窗口类的名字
} WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
2.1.2 注册窗口类

设计窗口类完成之后,需要执行的就是注册窗口类。该步骤等于告知系统已经设定了一种具体的窗口样式,只有注册了的窗口类才能创建该类型的窗口对象。注册窗口通过函数 RegisterClass(CONST WNDCLASS *lpWndClass) 来实现。

2.1.3 创建窗口

在这一步中创建的就是根据已经设计和注册好的窗口类来创建一个窗口对象,该过程利用 函数CreateWindow() 来实现。用户只需要指定创建窗口的各种属性(如位置,长和宽,窗口名称等等,而其他无法指定的属性则与窗口类设计时设定的属性值保持一致)即可,具体的创建过程由系统完成。

//CreateWindow函数的完整声明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值