WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(5)对话框与控件 阅读

MFC程序员的WTL指南(5)对话框与控件

 2006-07-22 22:03:31 来源:WEB开发网   
核心提示: CContainedWindowT<CButton> m_wndOKBtn;这样就可以使用CButton类的方法,当你把鼠标光标移到这些按钮上就可以看到WM_SETCURSOR消息处理函数的作用结果:ATL 方式 3 - 子类化(Subclassing)第三种方法创建一个CWi
CContainedWindowT<CButton> m_wndOKBtn;

这样就可以使用CButton类的方法。

当你把鼠标光标移到这些按钮上就可以看到WM_SETCURSOR消息处理函数的作用结果:

ATL 方式 3 - 子类化(Subclassing)

第三种方法创建一个CWindowImpl派生类并用它子类化一个控件。这和第二种方法有些相似,只是消息处理放在CWindowImpl类内部而不是对话框类中。

ControlMania1使用这种方法子类化主对话框的About按钮。下面是CButtonImpl类,他从CWindowImpl类派生,处理WM_SETCURSOR消息:

class CButtonImpl : public CWindowImpl<CButtonImpl, CButton>
{
  BEGIN_MSG_MAP_EX(CButtonImpl)
    MSG_WM_SETCURSOR(OnSetCursor)
  END_MSG_MAP()
  LRESULT OnSetCursor(HWND hwndCtrl, UINT uHitTest, UINT uMouseMsg)
  {
  static HCURSOR hcur = LoadCursor ( NULL, IDC_SIZEALL );
    if ( NULL != hcur )
      {
      SetCursor ( hcur );
      return TRUE;
      }
    else
      {
      SetMsgHandled(false);
      return FALSE;
      }
  }
};

接着在主对话框声明一个CButtonImpl成员变量:

class CMainDlg : public CDialogImpl<CMainDlg>
{
// ...
protected:
  CContainedWindow m_wndOKBtn, m_wndExitBtn;
  CButtonImpl m_wndAboutBtn;
};

最后,在OnInitDialog()种子类化About按钮。

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

Tags:MFC 程序员 WTL

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