工控编程吧
标题:
上位机MFC对话框图片背景设置
[打印本页]
作者:
qq263946146
时间:
2017-7-1 12:58
标题:
上位机MFC对话框图片背景设置
对话框程序框架可以很方便完整一些简单功能,但其背景不是很好看。
例程通过代码将指定位图设置为对话框 背景;
效果如图:
(, 下载次数: 1)
上传
点击文件名下载附件
另外基于CFormView程序同样可用此方法实现背景图片设置,但其默认情况可缩放窗口,所以还得多一步处理。具体方法,在附件一同附有另一实例,可参阅;
实现过程:
1.首先是建立对话框工程,并准备一位图作为对话框 背景用,加载到工程中,得到位图资源ID IDB_BITMAP1
2.在对话框窗口类中添加两变量 CBitmap m_Background;//对话框背景图 CBrush m_BrushHol;//控件背景画刷
并在OnInitDialog函数中初始化
m_Background.LoadBitmap(IDB_BITMAP1);
m_BrushHol.CreateStockObject(HOLLOW_BRUSH);
3.对话框背景设置消息WM_ERASEBKGND与控件设置消息WM_CTLCOLOR的处理函数,编辑函数就可实现我们想要的功能,函数如下
BOOL CGkbc8Dlg::OnEraseBkgnd(CDC* pDC)
{
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(&m_Background);
BITMAP bm; //Create Bitmap Handle to get dimensions
m_Background.GetBitmap(&bm); //Load Bitmap into handle
CSize sBitmap = CSize(bm.bmWidth, bm.bmHeight);
pDC->BitBlt(0,0,sBitmap.cx,sBitmap.cy,&dcMemory,0,0,SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
return TRUE;
//return CDialog::OnEraseBkgnd(pDC);
}
HBRUSH CGkbc8Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// return hbr;
pDC->SetBkMode(TRANSPARENT);
if( pWnd->GetDlgCtrlID() == IDC_STATIC)//设置指定控件文本颜色
{
pDC->SetTextColor(RGB(255, 0, 0));
}
return m_BrushHol;
}
复制代码
4.最后是程序退出时,对两个变量的清理工作,当然不清理也行,程序退出,系统会自动清理程序的全部资源
m_Background.DeleteObject();
m_BrushHol.DeleteObject();
(, 下载次数: 7)
上传
点击文件名下载附件
(, 下载次数: 2)
上传
点击文件名下载附件
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4