WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(9)属性页与向导 阅读

MFC程序员的WTL指南(9)属性页与向导

 2006-07-22 22:03:05 来源:WEB开发网   
核心提示: 如果用户点击OK按钮,DoModal()发挥IDOK,MFC程序员的WTL指南(9)属性页与向导(8),我们通知视图窗口使用新的图片和背景颜色,下面是几个屏幕截图显示几个不同的样式的视图: 创建一个更好的属性表类在OnOptions()中创建属性表是个好主意,将初始化代码移到属性表内部完成

如果用户点击OK按钮,DoModal()发挥IDOK,我们通知视图窗口使用新的图片和背景颜色。下面是几个屏幕截图显示几个不同的样式的视图:

创建一个更好的属性表类

在OnOptions()中创建属性表是个好主意,但是在这里使用很多初始化代码却非常糟糕,这不是CMainFrame应该做得事情。更好的方法是从CPropertySheetImpl派生一个新类,在这个类中完成这些任务。

#include "BackgroundOptsPage.h"
class CAppPropertySheet : public CPropertySheetImpl<CAppPropertySheet>
{
public:
  // Construction
  CAppPropertySheet ( _U_STRINGorID title = (LPCTSTR) NULL,
            UINT uStartPage = 0, HWND hWndParent = NULL );
  // Maps
  BEGIN_MSG_MAP(CAppPropertySheet)
    CHAIN_MSG_MAP(CPropertySheetImpl<CAppPropertySheet>)
  END_MSG_MAP()
  // Property pages
  CBackgroundOptsPage     m_pgBackground;
  CPropertyPage<IDD_ABOUTBOX> m_pgAbout;
};

我们使用这个类封装属性表中各个属性页的细节,将初始化代码移到属性表内部完成,构造函数完成添加页面,并设置其他必需的标志:

CAppPropertySheet::CAppPropertySheet ( _U_STRINGorID title, UINT uStartPage,
                    HWND hWndParent ) :
  CPropertySheetImpl<CAppPropertySheet> ( title, uStartPage, hWndParent )
{
  m_psh.dwFlags |= PSH_NOAPPLYNOW;
  AddPage ( m_pgBackground );
  AddPage ( m_pgAbout );
}

这样一来,OnOptions()处理函数就变得简单了一些:

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

Tags:MFC 程序员 WTL

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