我试图在加载任何其他框架之前将位图图像制作为大型机的背景,但我没有任何运气,我错过了什么?
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
的公共(public)派生类),并在其 OnEraseBkgnd
中处理绘图。在您的 MainFrame 类中创建该类的一个实例,并在您的 MainFrame 的 OnCreate
中,告诉您的 MDI 客户端子类化常用 MDI 客户端窗口:
myClient.SubclassWindow(m_hWndMDIClient);
关于c++ - 位图作为 MDI mainfrm 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25759273/