请教如何把一幅bitmap图片做成一个基于对话框的程序的背景图?谢谢! 如题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.codeguru.com/cpp/w-d/dislog/bitmapsimages/article.php/c1877/ 在对话框OnPaint()中void C***Dlg::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 { CBitmap* oldBitmap; CDC MemDC; BITMAP mBitmapInfo; CPaintDC dc(this); MemDC.CreateCompatibleDC(&dc); oldBitmap = MemDC.SelectObject(&m_Bitmap); //在头文件中定义CBitmap m_Bitmap;//在构造函数中m_Bitmap.LoadBitmap(IDB_*); m_Bitmap.GetBitmap(&mBitmapInfo); CRect rc; GetClientRect(&rc); dc.StretchBlt(0,0,rc.Width(),rc.Height(), &MemDC,0,0,mBitmapInfo.bmWidth,mBitmapInfo.bmHeight,SRCCOPY); MemDC.SelectObject(oldBitmap); MemDC.DeleteDC(); CDialog::OnPaint(); }} OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 重载这个比较好, 使用Static控件,直接在资源里编辑好。 将BMP添加到资源里,改资源名为 IDB_BMP_BACKBOOL CDialog::OnEraseBkgnd(CDC* pDC){ // 重画对话框背景 CBitmap hBitmap; hBitmap.LoadBitmap(IDB_BMP_BACK); CBrush hBursh(&hBitmap); pDC->FillRect(&rcClient,&hBursh); return TRUE;// return CDialog::OnEraseBkgnd(pDC);} 请问,取得窗口句柄后如何取得窗口状态? 各位大侠帮个忙,关于数据绑定控件的 采用ADO在access2000中,怎样用中文字表示字段名 单独控件消息格式问题???????????? 关于浏览DataGrid表格的问题 LIBID_Xxx是作什么用的? 在VC中,一个ActiveX空件如何调用另一各个ActiveX控件????? 在VC里能不能把某些类提出来调试,调试好再全部调试? link是出现如下提示,该怎办 关于软驱写保护的问题 程序在XP系统中只能以兼容256色模式下运行问题 为啥好多程序员喜欢把自己照片亮出来捏
void C***Dlg::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
{
CBitmap* oldBitmap;
CDC MemDC;
BITMAP mBitmapInfo;
CPaintDC dc(this);
MemDC.CreateCompatibleDC(&dc);
oldBitmap = MemDC.SelectObject(&m_Bitmap);
//在头文件中定义CBitmap m_Bitmap;
//在构造函数中m_Bitmap.LoadBitmap(IDB_*);
m_Bitmap.GetBitmap(&mBitmapInfo);
CRect rc;
GetClientRect(&rc);
dc.StretchBlt(0,0,rc.Width(),rc.Height(), &MemDC,0,0,mBitmapInfo.bmWidth,mBitmapInfo.bmHeight,SRCCOPY);
MemDC.SelectObject(oldBitmap);
MemDC.DeleteDC(); CDialog::OnPaint();
}
}
重载这个比较好,
{
// 重画对话框背景 CBitmap hBitmap;
hBitmap.LoadBitmap(IDB_BMP_BACK); CBrush hBursh(&hBitmap); pDC->FillRect(&rcClient,&hBursh); return TRUE;
// return CDialog::OnEraseBkgnd(pDC);
}