呜,这东东看上去真美,但在实际中用起来却有一大堆问题,调试,调试……
1.头文件顺序:
#include <atlbase.h>
#include <atlapp.h>
#include <atlmisc.h>
#include <atlcom.h>
#include <atlhost.h>
#include <atlwin.h>
#include <atlframe.h>
#include <atlctrls.h>
#include <atldlgs.h>
#include <atlctrlw.h>
#include <atlctrlx.h>
#include <commctrl.h>
//不知干什么用的,注释掉似乎还能跑
//#include "atlgdix.h"
#include <wuilib.h>
2.不能包含<windowsx.h>否则会有SubclassWindow宏少参数以及其它并发问题,有时真让人摸不着头脑。
3.实作一个PP的对话框:
(1)基类:
class CLogin :
public CDialogImpl<CLogin>, public CUpdateUI<CLogin>,
public CMessageFilter, public CIdleHandler
(2)
enum { IDD = IDD_LOGIN};
virtual BOOL PreTranslateMessage(MSG* pMsg)
{
return IsDialogMessage(pMsg);
}
virtual BOOL OnIdle()
{
return FALSE;
}
BEGIN_UPDATE_UI_MAP(CMainDlg)
END_UPDATE_UI_MAP()
BEGIN_MSG_MAP(CLogin)
COMMAND_HANDLER(IDC_RADIO2, BN_CLICKED, OnBnClickedRadio2)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
(3)成员变量
private:
WUI::CWUIButton<WUI::XPTraits, RGB(128, 128, 128)> m_OK;
WUI::CWUIButton<WUI::XPTraits, RGB(128, 128, 128)> m_Cancel;
(4)初始化的时候(OnInitDialog):
m_OK.SubclassWindow(GetDlgItem(IDC_LOGIN));
m_Cancel.SubclassWindow(GetDlgItem(IDCANCEL));
好了,你现在有PP的对话框按钮了,要美化其它控件也就加加成员变量,再SubclassWindow一下就可以了。