vc 怎样在对话框上画上背景? 急,谢谢帮忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先在你的对话框的头文件中定义如下变量:CBrush m_bkBrush;CBitmap m_bkImage;然后在你的对话框初始化函数OnInitDialog()函数中加入如下代码:m_bkImage.LoadBitmap(IDB_STONE);m_bkBrush.CreatePatternBrush(&m_bkImage);//创建位图画刷然后响应对话框的WM_CTLCOLOR消息,在消息处理函数中添加如下代码:HBRUSH CYourDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { switch(nCtlColor) { case CTLCOLOR_STATIC: pDC->SetBkMode(TRANSPARENT); case CTLCOLOR_EDIT: pDC->SetBkMode(TRANSPARENT); case CTLCOLOR_DLG: return static_cast<HBRUSH>(m_bkBrush.GetSafeHandle()); } return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);}就可以了,祝你成功! 可以在OnEraseBkgnd中CBitmap cBmpBackground;cBmpBackground.LoadBitmap(IDB_XXX); CDC dcMem; dcMem.CreateCompatibleDC(pDC); CBitmap *pOldBmp = dcMem.SelectObject(&cBmpBackground); pDC->StretchBlt(0, 0, m_cSizeTotal.cx, m_cSizeTotal.cy, &dcMem, 0, 0, m_cSizeBmp.cx, m_cSizeBmp.cy, SRCCOPY); dcMem.SelectObject(pOldBmp); 在对话框的OnPaint()函数中,添加如下代码if (IsIconic()){ ...}else{ //下面为添加的代码 CPaintDC dc(this); CRect rect; GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,0,0)); //结束 CDialog::OnPaint();} first: 在资源中引入一个bitmap;second: LoadBitmap(); 最简单的方法是放一个PICBOX就行 在插入资源的时候,只能插入bmp的图片吗?而且还是256色的啊?如果是jpg是怎样做啊? IOleInPlaceSite这个接口如何实现? 文件I/O ".."和"." 【求助】CInternetSession 多线程访问异常 显示位图时,怎样改变位图的背景色? 急求自动对比度的算法. Windows NT下的32位C++程序,请计算sizeof()? dll调用exe时候问题 如何实现将编辑框中内容自动保存到TXT文本 各位大侠,谁知windows的磁盘整理程序的原理? 分全给!!!! 如何把文件中的字符读到数组中 如何在ADO编程时得知某sql2k表中某varchar属性列的最大长度 为什么UDP服务器只能接收一次数据,就再也接收不到数据了?
CBrush m_bkBrush;
CBitmap m_bkImage;
然后在你的对话框初始化函数OnInitDialog()函数中加入如下代码:
m_bkImage.LoadBitmap(IDB_STONE);
m_bkBrush.CreatePatternBrush(&m_bkImage);//创建位图画刷
然后响应对话框的WM_CTLCOLOR消息,在消息处理函数中添加如下代码:
HBRUSH CYourDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch(nCtlColor) {
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
case CTLCOLOR_EDIT:
pDC->SetBkMode(TRANSPARENT);
case CTLCOLOR_DLG:
return static_cast<HBRUSH>(m_bkBrush.GetSafeHandle());
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
就可以了,祝你成功!
CBitmap cBmpBackground;
cBmpBackground.LoadBitmap(IDB_XXX);
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap *pOldBmp = dcMem.SelectObject(&cBmpBackground);
pDC->StretchBlt(0,
0,
m_cSizeTotal.cx,
m_cSizeTotal.cy,
&dcMem,
0,
0,
m_cSizeBmp.cx,
m_cSizeBmp.cy,
SRCCOPY);
dcMem.SelectObject(pOldBmp);
if (IsIconic())
{
...
}
else
{
//下面为添加的代码
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
dc.FillSolidRect(rect,RGB(255,0,0));
//结束
CDialog::OnPaint();
}
second: LoadBitmap();
如果是jpg是怎样做啊?