非MFC对话框,修改对话框背景图片?
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这块不是很懂,请教各位一下。
...全文
相关推荐
如何给MFC对话框添加背景图片
文档提供了一种如何给MFC对话框添加背景图片的方法,希望对大家有帮助
MFC基于对话框 添加背景图片
代码添加背景图片 空间添加位图、图标 对话框添加菜单 MFC对话框加载皮肤
MFC添加背景图片MFC添加背景图片
MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片MFC添加背景图片
MFC对话框背景图片改变代码
主要把自己添加资源设置为MFC对话框显示背景
[转载]MFC对话框控件和背景图片自适应窗口最大化和拉伸缩放的实现
步骤一:把easysize.h拷贝到CMyDlg项目文件夹中,同时在CMyDlg的.h文件和.cpp文件中加 入#include "easysize.h"; 步骤二:在CMyDlg类的h文件中,加入DECLARE_EASYSIZE,注意结尾处不要加“;”


界面
