对某工程的学习

今天我的任务是学习一下,别人写的人脸识别工程:(我想用3~4天的时间学完这个工程)

1、CDialog:

介绍:

CDialog类是在屏幕上显示的对话框基类。对话框有两类:模态对话框和非模态对话框。模态对话框在应用继续进行之前必须关闭,非模态对话框允许用户执行另外的操作而不必取消或者删除该对话框。当构造了一个CDialog对象之后,调用CreateIndirect创建非模态对话框,或调用InitModallndirect和DoModal来创建模态对话框。

头文件:#include<afxwin.h>

初始化:

Create初始化CDialog对象,创建非模态对话框和附在其上的对话框控件
CreateIndirect 从内存中的对话框模板创建非模态对话框
InitModallndirect 从内存中的对话框模板创建模态对话框。保存参数直到调用DoModal函数
操作DoModal 调用模态对话框,使用后返回
MapDialogRect 将对话框的矩形单位转换为屏幕单位
NextDlgCtrl 在对话框中将焦点移到下一个对话框控件上
PrevDlgCtrl 在对话框中将焦点移到前一个对话框控件上
GotoDlgCtrl 在对话框 中将焦点移到指定的对话框控件上
SetDefID 改变对话框的缺省按钮
GetDefID 获得对话框的缺省按钮
SetHelpID为对话框设置上下文的help ID
EndDialog关闭模态对话框

覆盖函数:

OnInitDialog 覆盖该函数可改变对话框初始设置
OnSetFont覆盖该函数可指定在对话框控件中输入文本时使用的字体
OnOK覆盖该函数可在对话框中进行OK按钮操作。缺省值是关闭对话框,DoModal返回IDOK
OnCancel覆盖该函数可在对话框中进行Cancel按钮操作或者按ESC键。缺省值是关闭对话框,DoModal返回IDCANCEL。

2、CDataExchange:

头文件:#include<afxwin.h>
CDataExchange没有基类。
CDataExchange支持Microsoft基本类使用的对话数据交换(DDX)和对话框数据验证(DDV)例程。当要为自定义数据类型或控件写数据交换例程时使用这个类。
CDataExchange对象提供了发生DDX和DDX所需要的上下文信息。DDX用于填充来自数据成员到对话控件的初始值时,标记m_bSaveAndValidate为FALSE。如果DDX用来设置对话控件的当前值到数据成员并且用DDV验证数据值有效性,标志m_bSaveAndValidate为TRUE。如果DDV有效性失败,DDV过程将显示解释输入错误的消息框。然后DDV调用Fail重设置到违规控件的焦点,并且产生一个异常终止有效性过程


3、afx_msg

Afx前缀是微软MFC一个小组的名称简写,并没有别的意义。MFC的很多代码,包括全局函数名、宏、头文件名都使用了"Afx"。  Afx*.h是一组MFC的核心头文件,
比如:
afxwin.h 定义MFC的核心和标准组件 
afxext.h 定义MFC的扩展  
afxdisp.h 是MFC自动化支持的类定义头文件  
afxdb.h 是MFC的ODBC类封装
afx_msg宏表示声明的是一个消息响应函数,
afx_msg消息函数,
应用程序框架产生的信息映射函数。
如:afx_msg void OnBnClickButton1();其中afx_msg为消息标志,它向系统声明:有消息映射到函数实现体;而在map宏定义中,就有具体信息和此函数的映射定义。

4、DECLARE_MESSAGE_MAP()

每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息。在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏。然后,在实现了类成员函数的.cpp文件中加入BEGIN_MESSAGE_MAP宏,再加入每个消息处理函数的宏入口,最后使用END_MESSAGE_MAP宏。
注意:如果你在DECLARE_MESSAGE_MAP之后定义了成员,那么你必须为它们指定新的访问类型(public,private,protected)。
示例:
//DECLARE_MESSAGE_MAP的例子
class CMWnd:public CFrameWnd{
//成员声明
DECLARE_MESSAGE_MAP()
}
DECLARE_MESSAGE_MAP()宏的作用是向类中加入消息映射必要的结构体和函数声明,只需要添加一次,放在声明位置不重要,就如同类里面其他普通函数的声明可以相互交换顺序一样。函数的修饰符也是可以自己决定的,遵循一般原则。比如你需要的类外部也可以调用该信息响应函数,就可以定义成Public。

5、BEGIN_MESSAGE_MAP()

这个是宏定义的一种,在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间添加你的消息响应函数,为每个消息处理函数加入一个入口。
BEGIN_MESSAGE_MAP(CpassApp,CWinApp)
ON_COMMAND(ID_HELP,CWinApp::OnHelp)
END_MESSAGE_MAP();
这些都是宏定义,不是函数
在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间添加你的消息响应函数,为每个消息处理函数加入一个入口
BEGIN_MESSAGE_MAP( theClass, baseClass )
参数:
theClass            指定消息映射所属的类的名字。
baseClass         指定theClass的基类的名字。
DoDataExchange:当UpdateData时候
OnInitDialog:对话框类已经构造,但是对话框还没有显示出来的时候


6、AfxGetApp():

这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到进程中的对象:

7、void AFXAPI DDX_Text(CDataExchange* pDX,int nIDC,Object& value)

DDX_Text函数管理着对话框、表格视或控件视对象中的编辑控件与对话框、表格视或控件视对象的CString型数据成员之间的int,UINT,long,DWORD,CString ,float,或者是double类型数据交换。
pDX 指向CDataExchange对象的指针。框架提供了这个对象,用于建立数据交换的环境,包括其方向。
nIDC 对话框、表格视图或控件视图中编辑控件的ID。
value 对对话框、表格视图或控件视图对象的成员变量的引用,其类型取决于你使用了DDX_Text的哪一个重载版本。

8、WM_SYSCOMMAND
将光标改为一个问题标识样式。
获得屏幕坐标系下的位置坐标,可以使用下面的代码:
xPos = GET_X_LPARAM(lParam);      // horizontal position
yPos = GET_Y_LPARAM(lParam);      // vertical position
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值