MFC编程学习心得

MFC编程学习心得

//1、将c语言变量简单重新定义 UInT、InT(32位,4字节)

LonG、DWoRD(32位,4字节) WPARAM、LPARAM(32位,4字节) SHoRT、WoRD(16位,2字节) LonG、LRESULT

BooL(TRUE、FALSE) PInT

PSTR、

LPSTR、LPcSTR(字符串指针,只读和可写)

//2、H开头,Windows句柄类型变量 HAnDLE of Windows =>HWnD HAnDLE of Instance =>HInSTAncE HAnDLE of Icon =>HIcon

//3结构体类型

SIZE、PoInT、REcT

MFc所有封装类一共有200多个,但是MFc的内部技术不只是简单地封装。 MFc内部总共有六大关键技术,构架起了整个MFc开发平台。

一、MFc的六大关键技术包括: a)MFc程序的初始化过程: b)消息映射机制;

c)运行时类型识别(RTTI); d)动态创建; e)永久保存; f)消息传递;

六大关键技术的目的是为了提高开发效率,开发者只需要在局部做简单的修改,即可处理大部分窗口事物。

二、SendMessage和PostMessage函数的功能:

a)能够向指定的窗口内发送窗口消息,既可以是本进程内窗口也可以是其他进程的; b)既可以发送系统内部消息,消息编号的范围是:1-WM_USER-1; 例如:WM_LBUTTonDonW,WM_MoUSEMoVE等; c)也可以发送非系统消息(开发者定义的消息),范围是WM_USER-0x7FFF。

三、SendMessage和PostMessage两个函数的区别是:

a)SendMessage是阻塞型函数,PostMessage是非阻塞型函数:

SendMessage用于调用指定窗口的内部程序,直到窗口程序处理完成以后再返回:

PostMessage是将一个消息寄送到一个窗口内的消息队列后就立即返回。 b)两个函数的返回值不同:

LRESULT SendMessage(HWnD hWnd,UInT Msg,WPARAM wParam,LPARAM,lParam); BooL PostMessage(HWnD hWnd,UnIT Msg,WPARAM wParam,LPARAM,lParam); SendMessage的返回值依赖于消息处理函数

c)跨线程或者跨进程发送消息,推荐使用PostMessage函数。

一、更具主窗口类型,MFc软件工程可以分为以下几种构架模型: 1、SDI(Single Document Interface):单文档界面,一个主框架窗口下只能编辑一份文档。 例如:记事本和画笔等。

2、MDI(Multiple Document Interface):多文档界面,一个主框架窗口下可以同时编辑多份文档。

例如:Vc++6.0,Photoshop等软件。

3、基于对话框的软件模型:主窗口是通过资源管理器,在对话框模板内摆放控件编辑而成的。

多数用于开发小规模软件,例如:任务管理器。

4、其他自定义窗口做主窗口:主窗口既不是框架也不是对话框,而是直接开发通用窗口类cWind而成。

例如:输入法窗口、QQ和360软件等,有时这类软件都可以使用框架和对话框模式来代替开发而成。

对话框常用消息映射函数: 二、对话框初始化消息:

1、WM_cREATE:通用窗口初始化消息

窗口还未显示出来,只有父窗口,子窗口还没创建 2、WM_InITDIALoG:对话框窗口专用消息

子窗口已经全部创建完成,可以调用和操作子窗口

三、对话框关闭过程消息:

1、WM_SYScoMMAnD:管理所有系统菜单和系统按钮消息 包括通过最大化、最小化、移动、大小和关闭等

2、WM_cLoSE:是WM_SYScoMMAnD消息的一个专用关闭的分支 再次消息处理过程可以取消本次关闭任务

3、IDcAncEL按钮消息:不但用于按钮回调消息,也是系统按钮关闭窗口的回调 执行真正关闭对话框函数是EndDialog,在此消息处理过程可以取消本次关闭任务 4、WM_DESTRoY:通用窗口销毁消息

窗口已经在屏幕中消失了,但是自身窗口和窗口内的控件都还可以调用 在此消息处理过程可以取消本次关闭任务

四、非模式对话框:

1、在调用EndDialog函数关闭时,非模式对话框只是隐藏没有真正关闭; 2、在调用DestroyWindow函数关闭时,只是隐藏没有真正关闭;

3、DestroyWindow函数是通用摧毁窗口的函数,适用于对话框、控件、框架和视图等。

一个MFc软件工程由至少一个cWind派生类和一个cWinApp派生类, 因此这两个类是MFc工程中最重要的两个类。

一、cWind成员函数:主要就是一个核心成员变量m_hWnd。 1、DestroyWindow:摧毁窗口。

2、create和createEx:创建窗口,createEx创建时可以指定扩展风格。 3、获取窗口句柄:

a)pWnd->m_hWnd:直接调用前最好判断一下指针是否为空。 b)operator HWnD():自动类型转换,将对象转换为句柄。

c)GetSafeHwnd():可以避免的a方法,因为指针为空造成软件崩溃。 4、由句柄转化为cWnd对象:

a)cWnd::FromHandle:生成一个临时性窗口类指针

b)Attach和Detach:为一个cWnd对象嫁接和移除窗口句柄; c)SubclassWindow和UnsubclassWindow:子类化和反子类化; d)SubclassDlgItem:子类化指定ID对应的控件窗口。 5、获取和设置窗口信息:

a)GetWindowText和SetWindowText:获取和设置窗口的标题文字。 b)GetStyle和ModifyStyle:获取和设置窗口的基础风格。 c)GetExStyle和ModifyStyleEx:获取和设置窗口的扩展风格。 6、计时器: a)SetTimer: b)KillTimer: 7、窗口操作: a)ShowWindow: b)EnableWindow: c)MoveWindow: d)centerWindow:

二、cWinApp类成员变量:

三、cWinApp类成员函数:

//匈牙利命名法: //变量: int long定义:int nSel;long nTel HAnDLE hInst; cString szname,szPass; cString strAddr;

LPcSTR pszname; DWoRD dwID;

//如果是成员变量,以“m_”开头 //如果是全局变量,以“g_”开头

首页