WTL 自绘按钮为什么不显示图片。。。。。。

qq_38188155 qq_38188155 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
就是在按钮上面 加一张图片,按钮设置了自绘属性
.h文件
#pragma once
#include "stdafx.h"

class CODButtonImpl : public CWindowImpl<CODButtonImpl, CButton>,
public COwnerDraw<CODButtonImpl>
{
public:
CODButtonImpl();

BEGIN_MSG_MAP(CODButtonImpl)
CHAIN_MSG_MAP_ALT(COwnerDraw<CODButtonImpl>, 1)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()

void DrawItem ( LPDRAWITEMSTRUCT lpdis );

protected:
CBitmap m_bmp;
};

.cpp
#include "stdafx.h"
#include "CODButtonImpl.h"
#include "resource.h"


CODButtonImpl::CODButtonImpl()
{
m_bmp.LoadBitmap ( IDB_ALYSON );
}

void CODButtonImpl::DrawItem ( LPDRAWITEMSTRUCT lpdis )
{
CDCHandle dc = lpdis->hDC;
CDC dcMem;

dcMem.CreateCompatibleDC ( dc );
dc.SaveDC();
dcMem.SaveDC();

// Draw the button's background, red if it has the focus, blue if not.
if ( lpdis->itemState & ODS_FOCUS )
dc.FillSolidRect ( &lpdis->rcItem, RGB(255,0,0) );
else
dc.FillSolidRect ( &lpdis->rcItem, RGB(0,0,255) );

// Draw the bitmap in the top-left, or offset by 1 pixel if the button
// is clicked.
dcMem.SelectBitmap ( m_bmp );

if ( lpdis->itemState & ODS_SELECTED )
dc.BitBlt ( 1, 1, 80, 80, dcMem, 0, 0, SRCCOPY );
else
dc.BitBlt ( 0, 0, 80, 80, dcMem, 0, 0, SRCCOPY );

dcMem.RestoreDC(-1);
dc.RestoreDC(-1);
}

maindlg.h也添加了宏
CODButtonImpl       m_wndODBtn;
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
COMMAND_ID_HANDLER_EX(IDC_ALYSON_BTN, OnAlysonODBtn)

END_MSG_MAP()

BEGIN_DDX_MAP(CMainDlg)
DDX_CONTROL(IDC_ALYSON_BTN, m_wndODBtn)
END_DDX_MAP()


为什么还不显示。。。
...全文
评论 2
收藏 已收藏
分享
返回顶部
qq_38188155
C++ 语言 65,214 成员 250,514 内容