CImage的一个问题

hellodudu hellodudu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想在对话框的OnEraseBkgnd函数中载入图片作为对话框的背景,代码如下:

BOOL CRussiaBlockDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
static int n = 0;
if (m_bkpFilename.size() != 0) //m_bkpFilename里面存放了图片的文件名
{
n = n % static_cast<int>(m_bkpFilename.size());

if (!m_imgBK.IsNull())
{
m_imgBK.Destroy();
}
m_imgBK.Load(m_bkpFilename[n]);

m_imgBK.Draw(pDC->GetSafeHdc(), 0, 0, m_rectClient.Width(), m_rectClient.Height());

++n;
return TRUE;
}

return CDialog::OnEraseBkgnd(pDC);
}


每次擦除背景的时候都更换一张图片,现在的问题是如果只load一次的话没有问题,图片也能显示出来,然后一旦擦除了背景重绘的话就出错了,应该是m_imgBK不能load两次吧,所以我在上面又加了个判断,但是跟踪调试后发现m_imgBK.IsNull()根本没用,因为即使load后m_imgBK的句柄也是没有初始化的,所以调用两次Load才出错吧。不知道该怎么解决了!
...全文
评论 3
收藏 已收藏
分享
返回顶部
hellodudu
VC/MFC 16,550 成员 421,606 内容