WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(5)对话框与控件 阅读

MFC程序员的WTL指南(5)对话框与控件

 2006-07-22 22:03:31 来源:WEB开发网   
核心提示: LRESULT CMainDlg::OnInitDialog(...){// ...// Attach CContainedWindows to OK and Exit buttonsm_wndOKBtn.SubclassWindow ( GetDlgItem(IDOK) );m_wndE
LRESULT CMainDlg::OnInitDialog(...)
{
// ...
  // Attach CContainedWindows to OK and Exit buttons
  m_wndOKBtn.SubclassWindow ( GetDlgItem(IDOK) );
  m_wndExitBtn.SubclassWindow ( GetDlgItem(IDCANCEL) );
  // CButtonImpl: subclass the About button
  m_wndAboutBtn.SubclassWindow ( GetDlgItem(ID_APP_ABOUT) );
  // First DDX call, hooks up variables to controls.
  DoDataExchange(false);
  return TRUE;
}

DoDataExchange()的参数与MFC的UpdateData()函数的参数意义相同,我会在下一节详细介绍。

现在运行ControlMania1程序,可以看到子类化的效果。鼠标右键单击编辑框将弹出消息框,当鼠标通过按钮上时鼠标形状会改变。

DDX的详细内容

当然,DDX是用来做数据交换的,WTL支持在Edit控件和字符串之间交换数据,也可以将字符串解析成数字,转换成整型或浮点型变量,还支持Check box和Radio button组的状态与int型变量之间的转换。

DDX 宏

DDX可以使用6种宏,每一种宏都对应一个CWinDataExchange类的方法支持其工作,每一种宏都用相同的形式:DDX_FOO(控件ID, 变量),每一种宏都可以支持多种类型的变量,例如DDX_TEXT的重载就支持多种类型的数据。

DDX_TEXT 在字符串和edit box控件之间传输数据,变量类型可以是CString, BSTR, CComBSTR或者静态分配的字符串数组,但是不能使用new动态分配的数组。 DDX_INT 在edit box控件和数字变量之间传输int型数据。 DDX_UINT 在edit box控件和数字变量之间传输无符号int型数据。 DDX_FLOAT 在edit box控件和数字变量之间传输浮点型(float)数据或双精度型数据(double)。 DDX_CHECK 在check box控件和int型变量之间转换check box控件的状态。 DDX_RADIO 在radio buttons控件组和int型变量之间转换radio buttons控件组的状态。

DDX_FLOAT宏有一些特殊,要使用DDX_FLOAT宏需要在stdafx.h文件的所有WTL头文件包含之前添加一行定义:

上一页  4 5 6 7 8 9 10  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接