如何给对话框架背景图片 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://expert.csdn.net/Expert/topicview.asp?id=1655962 http://expert.csdn.net/Expert/topicview.asp?id=1655962dxhdxh2k (dxhdxh) 讲得不错! void CLoginDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CBitmap m_bitmap; CDC memDC; memDC.CreateCompatibleDC(&dc); m_bitmap.LoadBitmap(IDB_LOGIN); memDC.SelectObject(&m_bitmap); dc.BitBlt(25,40,165,227,&memDC,0,0,SRCCOPY); // Do not call CDialog::OnPaint() for painting messages} 一.设置对话背景:如果你想用1位图作为对话背景,提供下面方法:重载 OnPaint 函数,对话框的 OnPaint 默认有两个处理,在第二个中加入这些代码: if (IsIconic()) { ... ... } else { // 开始画背景 CPaintDC dc( this ); CDC back; CBitmap bmp; bmp.LoadBitmap( IDB_BITMAP1 ); // 建立背景图片 back.CreateCompatibleDC( &dc ); // 建立一个图形缓冲并载入背景图 back.SelectObject( &bmp ); dc.BitBlt( 0, 0, 100, 100, &back, 0, 0, SRCCOPY ); // 画在对话框中,可以把 100, 100 改成具体的对话框大小 bmp.DeleteObject(); CDialog::OnPaint(); } 二:设置控件背景:1 设置CStatic控件背景:(1).从CStatic派生一个类CMyStatic;(2).添加成员变量CBrush m_Brush;(3).CMyStatic::CMyStatic(){ m_Brush.CreateSolidBrush(RGB(197,200,208));}(4)响应=WM_CTLCOLOR消息:HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor) { // TODO: Change any attributes of the DC here pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT); // TODO: Return a non-NULL brush if the parent's handler should not be called return (HBRUSH)m_Brush;}其它控件和它类似。 CPaintDC dc(this);CRect rect;GetClientRect(rect);CDC *pMemDC=new CDC;CBitmap bmpTitle;CBitmap *poldBitmap;BITMAP bmpTemp;if (pMemDC){bmpTitle.LoadBitmap(IDB_BITMAP);bmpTitle.GetObject(sizeof(BITMAP),&bmpTemp);pMemDC->CreateCompatibleDC(&dc);poldBitmap=pMemDC->SelectObject(&bmpTitle);dc.StretchBlt(0,0,rect.right,rect.bottom,pMemDC,0,0,bmpTemp.bmWidth,bmpTemp.bmHeight,SRCCOPY);pMemDC->SelectObject(poldBitmap);delete pMemDC;} MFC for循环取值问题 着急啊!!! 哪位大哥给我解释下BITMAPINFOHEADER Visual C++ 6.0 开发三层数据库软件 如何改变report风格的listctrl每一行的高度? 一个关于属性页的问题,分多多! 怎么样可以得专家分? 听说: 2002.1.4 深圳有大型招聘会,有人知道详细情况吗? 视频解码器问题 我是初学者,很简单的问题。 请问如何调用C#开发的dll? 用depends工具获取不到列表 如何给一个Dialog加上背景图片。 请问哪里有vs2003下载
dxhdxh2k (dxhdxh) 讲得不错!
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CBitmap m_bitmap;
CDC memDC;
memDC.CreateCompatibleDC(&dc);
m_bitmap.LoadBitmap(IDB_LOGIN);
memDC.SelectObject(&m_bitmap);
dc.BitBlt(25,40,165,227,&memDC,0,0,SRCCOPY);
// Do not call CDialog::OnPaint() for painting messages
}
如果你想用1位图作为对话背景,提供下面方法:
重载 OnPaint 函数,对话框的 OnPaint 默认有两个处理,在第二个中加入这些代码:
if (IsIconic())
{
...
...
}
else
{
// 开始画背景
CPaintDC dc( this );
CDC back;
CBitmap bmp; bmp.LoadBitmap( IDB_BITMAP1 ); // 建立背景图片
back.CreateCompatibleDC( &dc ); // 建立一个图形缓冲并载入背景图
back.SelectObject( &bmp ); dc.BitBlt( 0, 0, 100, 100, &back, 0, 0, SRCCOPY ); // 画在对话框中,可以把 100, 100 改成具体的对话框大小 bmp.DeleteObject();
CDialog::OnPaint();
} 二:设置控件背景:
1 设置CStatic控件背景:
(1).从CStatic派生一个类CMyStatic;
(2).添加成员变量CBrush m_Brush;
(3).
CMyStatic::CMyStatic()
{
m_Brush.CreateSolidBrush(RGB(197,200,208));
}
(4)响应=WM_CTLCOLOR消息:
HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT); // TODO: Return a non-NULL brush if the parent's handler should not be called
return (HBRUSH)m_Brush;
}
其它控件和它类似。
CRect rect;
GetClientRect(rect);CDC *pMemDC=new CDC;
CBitmap bmpTitle;
CBitmap *poldBitmap;
BITMAP bmpTemp;if (pMemDC)
{
bmpTitle.LoadBitmap(IDB_BITMAP);
bmpTitle.GetObject(sizeof(BITMAP),&bmpTemp);pMemDC->CreateCompatibleDC(&dc);
poldBitmap=pMemDC->SelectObject(&bmpTitle);
dc.StretchBlt(0,0,rect.right,rect.bottom,pMemDC,0,0,bmpTemp.bmWidth,bmpTemp.bmHeight,SRCCOPY);
pMemDC->SelectObject(poldBitmap);
delete pMemDC;
}