WEB开发网
开发学院软件开发VC MFC程序员WTL指南(6)高级对话框用户界面类 阅读

MFC程序员WTL指南(6)高级对话框用户界面类

 2008-01-19 20:25:19 来源:WEB开发网   
核心提示:只是这次我们不是调用UIAddToolbar()或UIAddStatusBar(),而是调用UIAddChildWindowContainer(),MFC程序员WTL指南(6)高级对话框用户界面类(10),它告诉CUpdateUI我们的对话框含有需要updating的字窗口,只要看看OnIdle(),还加了对数字的最大

只是这次我们不是调用UIAddToolbar()或UIAddStatusBar(),而是调用UIAddChildWindowContainer(),它告诉CUpdateUI我们的对话框含有需要updating的字窗口,只要看看OnIdle(),你会怀疑少了写什么:

BOOL CMainDlg::OnIdle()
{
   return FALSE;
}

你可能猜想这里应该调用另一个CUpdateUI的方法做一些实在的updating工作,你是对的,应该是这样的,向导在OnIdle()中漏掉了一行代码,现在加上:

BOOL CMainDlg::OnIdle()
{
   UIUpdateChildWindows();
   return FALSE;
}

为了演示UI updating,我们设定鼠标点击左边的位图按钮,使得右边的按钮变得可用或禁用。先在update UI链中添加一个消息入口,使用UPDUI_CHILDWINDOW标志表示此入口是子窗口类型:

BEGIN_UPDATE_UI_MAP(CMainDlg)
     UPDATE_ELEMENT(IDC_ALYSON_BMPBTN, UPDUI_CHILDWINDOW)
   END_UPDATE_UI_MAP()

在左边的按钮的单击事件处理中,我们调用UIEnable()来翻转另一个按钮的使能状态:

void CMainDlg::OnAlysonODBtn ( UINT uCode, int nID, HWND hwndCtrl )
{
static bool s_bBtnEnabled = true;
   s_bBtnEnabled = !s_bBtnEnabled;
   UIEnable ( IDC_ALYSON_BMPBTN, s_bBtnEnabled );
}
DDV

WTL的对话框数据验证(DDV)比MFC简单一些,在MFC中你需要分别使用DDX(对话框数据交换)宏和DDV(对话框数据验证)宏,在WTL中只需一个宏就可以了,WTL包含基本的数据验证支持,在DDV链中可以使用三个宏:

DDX_TEXT_LEN 和DDX_TEXT一样,只是还要验证字符串的长度(不包含结尾的空字符)小于或等于限制长度。 DDX_INT_RANGE and DDX_UINT_RANGE 和DDX_INT,DDX_UINT一样,还加了对数字的最大最小值的验证。 DDX_FLOAT_RANGE 除了像DDX_FLOAT一样完成数据交换之外,还验证数字的最大最小值。

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

Tags:MFC 程序员 WTL

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