WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(3)WTL 界面基类 阅读

MFC程序员的WTL指南(3)WTL 界面基类

 2006-07-22 22:03:45 来源:WEB开发网   
核心提示: CAboutDlg是CDialogImpl的派生类,它对应于ID IDD_ABOUTBOX资源,MFC程序员的WTL指南(3)WTL 界面基类(8),我在第一部分已经介绍过对话框,所以你应该能看懂CAboutDlg的代码,它提供了OnIdle()函数,CMessageLoop, CIdle

CAboutDlg是CDialogImpl的派生类,它对应于ID IDD_ABOUTBOX资源,我在第一部分已经介绍过对话框,所以你应该能看懂CAboutDlg的代码。

CWTLClockView是我们的程序的视图类,它的作用和MFC的视图类一样,没有标题栏,覆盖整个主窗口的客户区。CWTLClockView类有一个PreTranslateMessage()函数,也和MFC中的同名函数作用相同,还有一个WM_PAINT的消息响应函数。这两个函数都没有什么特别之处,只是我们会填写OnPaint()函数来显示时间。

最后是我们的CMainFrame类,它有许多有趣的新东西,这是这个类的定义缩略版本:

class CMainFrame : public CFrameWindowImpl<CMainFrame>,
          public CUpdateUI<CMainFrame>,
          public CMessageFilter,
          public CIdleHandler
{
public:
  DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
  CWTLClockView m_view;
  virtual BOOL PreTranslateMessage(MSG* pMsg);
  virtual BOOL OnIdle();
  BEGIN_UPDATE_UI_MAP(CMainFrame)
  END_UPDATE_UI_MAP()
  BEGIN_MSG_MAP(CMainFrame)
    // ...
    CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
    CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
  END_MSG_MAP()
};

CMessageFilter是一个嵌入类,它提供PreTranslateMessage()函数,CIdleHandler也是一个嵌入类,它提供了OnIdle()函数。CMessageLoop, CIdleHandler 和 CUpdateUI三个类互相协同完成界面元素的状态更新(UI update),就像MFC中的ON_UPDATE_COMMAND_UI宏一样。

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

Tags:MFC 程序员 WTL

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