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

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

 2006-07-22 22:03:31 来源:WEB开发网   
核心提示: #define _ATL_USE_DDX_FLOAT这个定义是必要的,因为默认状态为了优化程序的大小而不支持浮点数,MFC程序员的WTL指南(5)对话框与控件(10),有关 DoDataExchange()的详细内容调用DoDataExchange()方法和在MFC中使用UpdateDat
#define _ATL_USE_DDX_FLOAT

这个定义是必要的,因为默认状态为了优化程序的大小而不支持浮点数。

有关 DoDataExchange()的详细内容

调用DoDataExchange()方法和在MFC中使用UpdateData()一样,DoDataExchange()的函数原型是:

BOOL DoDataExchange ( BOOL bSaveAndValidate = FALSE, UINT nCtlID = (UINT)-1 );

参数:

bSaveAndValidate 指示数据传输方向的标志。TRUE表示将数据从控件传输给变量,FALSE表示将数据从变量传输给控件。需要注意得是这个参数的默认值是FALSE,而MFC的UpdateData()函数的默认值是TRUE。为了方便记忆,你可以使用DDX_SAVE 和 DDX_LOAD标号(它们分别被定义为TRUE和FALSE)。 nCtlID 使用-1可以更新所有控件,如果只想DDX宏作用于一个控件就使用控件的ID。

如果控件更新成功DoDataExchange()会返回TRUE,如果失败就返回FALSE,对话框类有两个重载函数处理数据交换错误。一个是OnDataExchangeError(),无论什么原因的错误都会调用这个函数,这个函数的默认实现在CWinDataExchange中,它仅仅是驱动PC喇叭发出一声蜂鸣并将出错的控件设为当前焦点。另一个函数是OnDataValidateError(),但是要到本文的第五章介绍DDV时才用得到。

使用DDX

在CMainDlg中添加几个变量,演示DDX的使用方法。

class CMainDlg : public ...
{
//...
  BEGIN_DDX_MAP(CMainDlg)
    DDX_CONTROL(IDC_EDIT, m_wndEdit)
    DDX_TEXT(IDC_EDIT, m_sEditContents)
    DDX_INT(IDC_EDIT, m_nEditNumber)
  END_DDX_MAP()
protected:
  // DDX variables
  CString m_sEditContents;
  int   m_nEditNumber;
};

在OK按钮的处理函数中,我们首先调用DoDataExchange()将将edit控件的数据传送给我们刚刚添加的两个变量,然后将结果显示在列表控件中。

上一页  5 6 7 8 9 10 

Tags:MFC 程序员 WTL

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