WTL 重画CButton DrawItem不响应?

CodeProject-Jerry 2007-02-09 08:53:50
对话框上 有一个按钮m_btnOK

class CMainDlg;

typedef CImgDialogBase<CMainDlg, IDB_BITMAP_DIALOG_WAITING> CImgDialogBaseForMainDlg;

class CMainDlg : public CImgDialogBaseForMainDlg
, public CWinDataExchange<CMainDlg>

{
BEGIN_DDX_MAP(CMainDlg)
DDX_CONTROL(IDOK, m_btnOK)
END_DDX_MAP()

CImgButton<IDB_BITMAP_BTN_OK_NORMAL, IDB_BITMAP_BTN_OK_HOVER, IDB_BITMAP_BTN_OK_DOWN, IDB_BITMAP_BTN_OK_DISABLED>
m_btnOK;
};



CImgButton 类如下:
template <UINT T_NormalBitmapID, UINT T_HoverBitmapID, UINT T_DownBitmapID, UINT T_DisableBitmapID>
class CImgButton : public CWindowImpl< CImgButton< T_NormalBitmapID, T_HoverBitmapID, T_DownBitmapID, T_DisableBitmapID>, CButton>
, public COwnerDraw<CImgButton< T_NormalBitmapID, T_HoverBitmapID, T_DownBitmapID, T_DisableBitmapID> >
{
public:
CImgButton(){}

~CImgButton(){}

typedef CImgBkgndBase<CImgButton< T_NormalBitmapID, T_HoverBitmapID, T_DownBitmapID, T_DisableBitmapID>, T_NormalBitmapID> CImgBkgndForImgButton;

typedef COwnerDraw<CImgButton< T_NormalBitmapID, T_HoverBitmapID, T_DownBitmapID, T_DisableBitmapID> > COwnerDrawForImgButton;

BEGIN_MSG_MAP(CImgButton)
CHAIN_MSG_MAP_ALT( COwnerDrawForImgButton, 1)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()

void DrawItem ( LPDRAWITEMSTRUCT lpdis )
{

::MessageBox( NULL, _T("1"), _T("1"), IDOK);
}


};


我参照了 http://www.codeproject.com/wtl/WTL4MFC5.asp

在设计器里面,设置了 这个Button的 OWNER_DRAWER属性

但是
DrawItem 不响应

WTL7.5 VS2005
...全文
485 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
basketwill 2007-12-19
  • 打赏
  • 举报
回复
在CMainDlg类中添加如下
BEGIN_MSG_MAP(CMainDlg)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()

bobob 2007-02-10
  • 打赏
  • 举报
回复
增加notify的style看看
还有,这个只在按钮状态发生改变的时候才调用,先hide再show看看
mynamelj 2007-02-10
  • 打赏
  • 举报
回复
你的DrawItem是虚函数吗?
mynamelj 2007-02-10
  • 打赏
  • 举报
回复
添加BS_OWNERDRAW样式

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧