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

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

 2006-07-22 22:03:05 来源:WEB开发网   
核心提示: 最简单的属性表首先用WTL的向导创建一个SDI工程,然后为关于对话框添加一个属性表,MFC程序员的WTL指南(9)属性页与向导(6),首先改变向导创建的关于对话框样式,使它用起来像个属性页,我们将其命名为CBackgroundOptsPage,这个类是从CPropertyPageImpl类
最简单的属性表

首先用WTL的向导创建一个SDI工程,然后为关于对话框添加一个属性表。首先改变向导创建的关于对话框样式,使它用起来像个属性页。

第一步就是去除OK按钮,因为属性表不希望属性页自己关闭。在Style Tab中,将对话框样式改为Child,Thin Border,选择Title Bar,在More Styles tab,选择Disabled。

第二步(也是最后一步)是在OnAppAbout()的处理函数中创建一个属性表,我们使用非定制的CPropertySheet 和 CPropertyPage类:

LRESULT CMainFrame::OnAppAbout(...)
{
CPropertySheet sheet ( _T("About PSheets") );
CPropertyPage<IDD_ABOUTBOX> pgAbout;
  sheet.AddPage ( pgAbout );
  sheet.DoModal();
  return 0;
}

结果看起来向下面这样:

创建一个有用的属性页

并不是每一个属性表中的每一个属性页都像关于对话框这么简单,大多数属性页需要使用CPropertyPageImpl的派生类,所以我们现在就看一个这样的类。我们创建了一个新的属性页用来设置客户区背景显示的图片,它是这个样子的:

这个对话框的样式和关于页面相同,我们需要一个新类来和这个属性页协同工作,我们将其命名为CBackgroundOptsPage。这个类是从CPropertyPageImpl类派生的,它有一个CWinDataExchange来支持DDX。

class CBackgroundOptsPage :
  public CPropertyPageImpl<CBackgroundOptsPage>,
  public CWinDataExchange<CBackgroundOptsPage>
{
public:
  enum { IDD = IDD_BACKGROUND_OPTS };
  // Construction
  CBackgroundOptsPage();
  ~CBackgroundOptsPage();
  // Maps
  BEGIN_MSG_MAP(CBackgroundOptsPage)
    MSG_WM_INITDIALOG(OnInitDialog)
    CHAIN_MSG_MAP(CPropertyPageImpl<CBackgroundOptsPage>)
  END_MSG_MAP()
  BEGIN_DDX_MAP(CBackgroundOptsPage)
    DDX_RADIO(IDC_BLUE, m_nColor)
    DDX_RADIO(IDC_ALYSON, m_nPicture)
  END_DDX_MAP()
  // Message handlers
  BOOL OnInitDialog ( HWND hwndFocus, LPARAM lParam );
  // Property page notification handlers
  int OnApply();
  // DDX variables
  int m_nColor, m_nPicture;
};

关于这个类需要注意几点:

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

Tags:MFC 程序员 WTL

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