位图作为MDI主窗体的背景
Bitmap as background to MDI mainfrm
我正试图在加载任何其他帧之前将位图图像作为主机的背景,但我运气不好,我缺少什么?
BOOL CMainFrame::OnEraseBkgnd(CDC* pDC)
{
CBitmap m_cbImage;
COLORREF m_crBack;
UINT m_uImage;
m_crBack = RGB(255, 255, 255);
m_uImage = IDB_SPLASH;
if ((m_cbImage.m_hObject == NULL) && (m_uImage>0))
{
m_cbImage.LoadBitmap(m_uImage);
m_bFirst = TRUE;
}
else
{
if (m_bFirst)
{
m_bFirst = FALSE;
}
}
CRect rcClient;
GetClientRect(rcClient);
pDC->FillSolidRect(rcClient, m_crBack);
if (m_cbImage.m_hObject != NULL)
{
BITMAP sBitmap;
m_cbImage.GetBitmap(&sBitmap);
CSize szImage(sBitmap.bmWidth, sBitmap.bmHeight);
pDC->DrawState(CPoint(0, 0), szImage, &m_cbImage, DST_BITMAP | DSS_NORMAL);
}
return TRUE;
}
大型机的背景看起来确实不是。主机基本上只处理这个问题:框架。MDI客户端区域由MDI客户端窗口处理(该窗口反过来管理MDI子窗口)。
若要更改背景图形,请创建MDI客户端窗口类(CWnd
的公共派生),并在其OnEraseBkgnd
中处理图形。在MainFrame类中创建该类的实例,并在MainFrame的OnCreate
中,告诉MDI客户端将库存MDI客户端窗口子类化:
myClient.SubclassWindow(m_hWndMDIClient);
通过子类化提出的方法在最新版本的MFC中不起作用。但是,幸运的是,为这样的任务设计了一种特殊的方式:
- 确保您的CMainFrame类继承自CCD_ 4
- 覆盖其CCD_ 5虚拟方法
- 您的实现应该返回
TRUE
相关文章:
- 如何在全屏模式下(在OpenGL中)使背景透明
- 使用窗口中的QSlider更改背景音量
- SDL2 透明背景
- 如何更改窗体上所有控件的标题?[C++生成器]
- 在 Visual C++ 中以编程方式更改按钮的背景图像
- 多重采样背景不显示
- 在这种情况下,如何防止C++输出/控制台窗体关闭
- 使用非托管导出显示和关闭 C# 窗体 C++
- 直接2D用WM_ERASEBKGND擦除背景?
- 在特定时间内更改 QLabel 的背景颜色
- 如何设置与其背景图像大小相对应的窗口大小?
- 更改包含 QButton 的 Qlayout 的背景颜色
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 删除K的背景掩码-意味着Python或C++中的集群/
- SystemParametersInfo将背景设置为纯色,而不是实际设置图片
- 如何在Windows窗体应用程序中打开txt文件并将行导入文本框
- 背景任务UWP C++只触发一次
- 将变量从主窗口传递到另一个qt c++窗体
- 位图作为MDI主窗体的背景
- 如何设置Windows窗体应用程序(c++)有一个Aero/Glass背景