对话框程序框架可以很方便完整一些简单功能,但其背景不是很好看。
例程通过代码将指定位图设置为对话框 背景;
效果如图:
上位机MFC对话框图片背景设置
另外基于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();
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|