MFC编程学习心得

更新时间:2024-01-22 20:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

//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_”开头

本文来源:https://www.bwwdw.com/article/m7go.html

Top