初次使用WUI

呜,这东东看上去真美,但在实际中用起来却有一大堆问题,调试,调试……

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一下就可以了。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平