非MFC对话框,修改对话框背景图片?

青芒Only 青芒Only 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
windows C++ 开发的二次开发平台的对话框,没有OnPaint函数,只能通过WindowResize的回调函数,通过FindWindow的方式获取到HWND进行处理,自身的Dialog类也没有提供修改对话框背景图片的方法。

void TestCmd::OnTestCmdWindSizeNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
HWND hwnd;
hwnd = FindWindow(NULL, L"TestCmd");
if(0 != hwnd)
{
CWnd *pWnd =CWnd::FromHandle(hwnd);
CBitmap * m_bitmap= new CBitmap();
CString FilePathName = "C:\\1.bmp";
HBITMAP hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if(!m_bitmap->Attach(hBitmap))
{
cout<<"导入图片失败"<<endl;
return;
}

CPaintDC dc(pWnd);
CDC *pDC = &dc;
CRect rect;
GetClientRect(hwnd,&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);

BITMAP bitmap;
m_bitmap->GetBitmap(&bitmap);
CBitmap*pbmpOld=dcMem.SelectObject(m_bitmap);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth-1,bitmap.bmHeight-1,SRCCOPY);
}
}

可以实现修改背景图片,但是必须手动修改对话框大小才能刷新,感觉就是WM_PAINT进入了消息队列但是并没有触发,下次手动修改触发了消息。试过添加Invalidate和UpdateWindow ,但是不行,GDI这块不是很懂,请教各位一下。
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
青芒Only
界面 15,976 成员 115,866 内容