把代码放到
BOOL CDlg::OnEraseBkgnd (CDC* pDC)
中显示位图
BOOL CDlg::OnEraseBkgnd (CDC* pDC)
中显示位图
解决方案 »
- CImage Draw图片显示为黑色问题
- 关于CListCtrl双击后关闭的问题,奇怪的问题,困扰多久,请指教!
- 将Gdiplus.lib文件连编到项目中去是什么意思?
- CAsyncSocket得基础问题
- 升到2星了,散200分
- 急: 高手帮我看看这个函数为什么错
- 请问:哪里有往地球表面贴制纹理的源代码(用opengl在vc下开发的)?谢谢
- 怎样运行驱动程序
- 昨晚才写完的程序,希望大家捧捧场! uaiia.d2g.com
- 高手看过来!-- 怎样在获取某种文件格式的右键菜单?
- 请问如何知道当前文档下文件的路径(在程序的C???View下)
- 请问大家,想学XML需要先学HTML吗?另外,初学XML应该看什么书?
void CTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
//载入背景
CClientDC dc(this);
CDC tempDC;
CBitmap bitmap;
BITMAP bmp;
//int x = IDB_MAIN_BG;
bitmap.LoadBitmap(IDB_MAIN_BG);
bitmap.GetObject (sizeof(BITMAP),&bmp);
tempDC.CreateCompatibleDC (&dc);
tempDC.SelectObject (bitmap);
dc.BitBlt (0,20,bmp.bmWidth ,bmp.bmHeight ,&tempDC,0,0,SRCCOPY);
//dc.BitBlt (0,20,bmp.bmWidth ,bmp.bmHeight ,&tempDC,0,0,SRCCOPY);
}
CDialog::OnPaint();
}
{
if(m_Bitmap.GetObjectType())
{
CDC dc;
BITMAP Bmp;
m_Bitmap.GetBitmap(&Bmp);
if(!dc.CreateCompatibleDC(pDC))
return CDialog::OnEraseBkgnd(pDC);
CBitmap *pOldBmp=dc.SelectObject(&m_Bitmap);
CRect rect;
GetWindowRect(&rect);
int sizex=rect.right-rect.left,sizey=rect.bottom-rect.top;
int bmpx=Bmp.bmWidth,bmpy=Bmp.bmHeight;
for(int x=0;x<=sizex;x+=bmpx)
for(int y=0;y<=sizey;y+=bmpy)
pDC->BitBlt(x,y,bmpx,bmpy,&dc,0,0,SRCCOPY);
dc.SelectObject(pOldBmp); return true;
}
else
return CDialog::OnEraseBkgnd(pDC);
//背景
m_Bitmap.LoadBitmap(IDB_MAIN_BG);
BOOL CKnightDlg::OnEraseBkgnd(CDC* pDC)
{
//m_Bitmap.
//载入BMP背景
if(m_Bitmap.GetObjectType())
{
CClientDC dc(this);
CDC tempDC;
BITMAP bmp;
m_Bitmap.GetObject (sizeof(BITMAP),&bmp);
tempDC.CreateCompatibleDC (&dc);
tempDC.SelectObject (m_Bitmap);
dc.BitBlt (0,20,bmp.bmWidth ,bmp.bmHeight ,&tempDC,0,0,SRCCOPY);
return TRUE;
}
else
return CDialog::OnEraseBkgnd(pDC);
GetWindowRect(hChildWindow,&rect)
InvalidateRect(hChildWindow, &rect, TRUE)this method is not good enough, but it work.
----------------------
Method2:
make sure all child window's Z-order is greader than Dlg window itself.Use SetWindowPos to change child window Z-Order.
do in wm_initdialog maybe safe(child has been created)-----------------------
Method3: (correct method)dealing in WM_CTLCOLOR(DLG)