MFC基础知识

本文介绍了MFC的基础知识,包括在Visual Studio中创建窗口的步骤、Windows程序的入口函数WinMain,以及窗口类的设计和注册。详细讲解了窗口的各种风格,如CS_BYTEALIGNCLIENT、CS_HREDRAW等,并提供了CreateWindow函数创建窗口的例子。同时,讨论了窗口句柄的概念,以及消息循环中的GetMessage函数和MSG结构体。文章通过一个简单的实例展示了如何实现窗口的显示和关闭,适合初学者了解MFC窗口编程。
摘要由CSDN通过智能技术生成

在Visual Studio操作环境中的左侧有三个选项,它们包含应用程序的不同视图,FileView(文件视图),ClassView(类视图),ResourceView(资源视图).

窗口的创建:①、设计一个窗口类;②、注册窗口;③、创建窗口;④、显示及更新窗口

Windows程序的入口函数:WinMain函数

int WINAPI WinMain( //WinMain是由操作系统调用  
    HINSTANCE bInstance,//应用程序的实例句柄,指示当前句柄 
    HINSTANCE bPrevInstance,//指示先前句柄 
    LPSTR IpCmdLine,//字符串类型,相当于char *类型; 
    int nCmdSbow
);

句柄是资源的标识,按照资源的类型可以分为:图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE).

设计窗口类:

typedef struct_WNDCLASS{   
    UINT style;//相当于c语言中的unsigned int,无符号整形,style是指定类风格,例CS_VREDRAW: 当垂直长度改变或移动窗口时,重画整个窗口    
    WNDPROC lpfnWndProc;//指向窗口过程,也称为回调函数   
    int cbClsExtra;//指定紧随在WNDCLASS数据结构后分配的字节数,系统将其初始化为零   
    int cbWndExtra;//指定紧随在窗口实例之后分配的字节数,系统将其初始化为零  
    HANDLE hInstance;//标识了该窗口类的窗口过程所在的模块实例的句柄,不能为NULL   
    HICON hIcon;//标识了该窗口类的图标.hIcon字段必须是一个图标的句柄;若hIcon字段为NULL,则无论何时用户把应用程序缩至最小时,应用程序必须画一个图标
    HCURSOR hCursor;//标识该窗口类的光标,它是一个光标资源的句柄,若hCursor字段为NULL,则无论何时鼠标移到应用程序窗口时,应用程序必须显式设置光标形状  
    HBRUSH hbrBackground;//标识了该窗口类的背景画笔。 
    LPCTSTR lpszMenuName;//指向NULL结束的字符串,该字符串描述菜单的资源名,如同在资源文件里显示的名字一样   
    LPCTSTR lpszClassName;// 指向NULL结束的字符串,或者是一个原型(atom) 
}WNDCLASS;

窗口风格CS:

  CS_BYTEALIGNCLIENT: 在字节边界上(在x方向上)定位窗口的用户区域的位置

  CS_BYTEALIGNWINDOW: 在字节边界上(在x方向上)定位窗口的位置

  CS_CLASSDC: 该窗口类的所有窗口实例都共享一个窗口类DC

  CS_DBLCLKS: 允许向窗口发送双击鼠标键的消息

  CS_GLOBALCLASS: 当调用CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的hInstance参数和注册窗口类时传递给RegisterClass 的 hInstance参数不同。如果不指定该风格,则这两个hInstance 必须相同。

  CS_HREDRAW: 当水平长度改变或移动窗口时,重画整个窗口

  CS_NOCLOSE: 禁止系统菜单的关闭选项

  CS_OWNDC: 给予每个窗口实例它本身的DC。注意,尽管这样是很方便,但它必须慎重使用,因为每个DC大约要占800个字节的内存。

  CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是从系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值