WTL 学习笔记 -- Property Sheets and Wizards

 

属性页和向导也是很常用的组件,两者表现形式大不相同,但功能差不多,无非前者所有界面同时出现,而后者要按规定的次序出现罢。MFC中提供属性页组件,实在太难用,现在还记忆犹新。

 

WTL中的属性页是否有所改进呢?答案是当然的,对于简单情况,几行代码就搞定了,对于复杂情况,使用也很直观,总之你无需要花太多精力在这种手段身上。

 

让我们先看看最很简单的情况:

         CPropertySheet sheet;

         CPropertyPage<IDD_ABOUTBOX> page;

         sheet.AddPage(page);

         sheet.DoModal();

 

怎么样,4行代码就搞定了,很简单吧。当然,实际情况决不会这么简单,因为这些对话是用来对话的,而不只是用来显示信息。这时就需要实现Page的子类:

1.         CpropertyPageImpl继承。

class CColorPage  : public CPropertyPageImpl<CColorPage>

2.         指定属性页的图标。

         CColorPage()

         {

                   m_psp.dwFlags |= PSP_USEICONID;

                   m_psp.pszIcon = MAKEINTRESOURCE(IDR_MAINFRAME); 

                   m_psp.hInstance = _Module.GetResourceInstance();

         }

3.         指定对话框资源ID

enum {IDD = IDD_COLOR};

4.         CpropertyPageImpl能接收消息

CHAIN_MSG_MAP(CPropertyPageImpl<CColorPage>)

5.         让数据修改后,让Apply按钮有效

         LRESULT OnColorChange(WORD wNotifyCode, WORD wID, HWND hWnd, BOOL& bHandled)

         {

                   this->SetModified(TRUE);

                   return 0;

         }

6.         处理Apply消息

         int OnApply()

         {

                   MessageBox("ApplyPage");

 

                   return 0;

         }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值