怎么样把对话框的背景变成图片???

lanfanghelanfanghe 2003-09-14 10:08:39
用OnCtlColor(..)吗(是硬盘上的美眉图片,应该怎么做呀),具体是怎么做的呀,请帮帮忙呀???
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
HongHuer 2003-09-14
  • 打赏
  • 举报
回复
bool GetModul_HigherUp(char * buffer)
{
//
//得到当前程序的路径,变换为文件路径
//
if(!GetModuleFileName(NULL, buffer, 128))
{
return false;
}

BYTE c = '\\';
char *p;
char *p1 = buffer;

while(*p1 != ' ')
{
p = strchr(p1, c);
if(p == 0)
{
break;
}
p++;
p1 = p;
}
strcpy(p1, "");

return true;
}
HongHuer 2003-09-14
  • 打赏
  • 举报
回复

//.h
class CDialog_1:public CDialog
{
public:
void Draw_BK_Bitmap(CDC * pDC);
};

//.cpp
void CDialog_1::OnPaint()
{
CPaintDC dc(this);

Draw_BK_Bitmap(&dc);
}

//函数功能 : 画 背景 bitmap
//函数参数 :
//函数返回 :
//函数说明 :
void CDialog_1::Draw_BK_Bitmap(CDC * pDC)
{
BITMAP btmp;
HBITMAP hBitmap;
CBitmap NewBitmap;
CBitmap * pOldBitmap;


//
//得到位图路径
//
char FilePath[128];
if(!::GetModul_HigherUp(FilePath))
{
return ;
}
::strcat(FilePath, "Btmps\\Dialog_1_bk.bmp");


hBitmap = (HBITMAP)::LoadImage(NULL,
FilePath,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
ASSERT(hBitmap);

NewBitmap.Attach(hBitmap);
NewBitmap.GetBitmap(&btmp);

CDC MemDC;

MemDC.CreateCompatibleDC(pDC);
pOldBitmap = MemDC.SelectObject(&NewBitmap);

//
//得到屏幕的宽度 高度
//
int ScreenWidth = ::GetSystemMetrics(SM_CXSCREEN);
int ScreenHeight = ::GetSystemMetrics(SM_CYSCREEN);
int x;
int y;

for(x=0; x<=ScreenWidth; x+=btmp.bmWidth)
{
for(y=0; y<=ScreenHeight; y+=btmp.bmHeight)
{
pDC->BitBlt(x, y, btmp.bmWidth, btmp.bmHeight,
&MemDC, 0, 0, SRCCOPY);
}
}

MemDC.SelectObject(pOldBitmap);
::DeleteObject(NewBitmap.m_hObject);
}
xghost 2003-09-14
  • 打赏
  • 举报
回复
CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC))
retrun;
BITMAP bm;
m_btmap.GetBitmap(&m_bitmap);
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
FreeSeagull 2003-09-14
  • 打赏
  • 举报
回复
响应WM_ERASEBKGND消息,在处理函数里边把图片画上就可以了。
SlayerCarrier 2003-09-14
  • 打赏
  • 举报
回复
唉,BitBlt吧!
SeainBlue 2003-09-14
  • 打赏
  • 举报
回复
简单一点就是这样
1.C*Dlg.h定义CBrush对象
CBrush myBkImage;

2.C*Dlg.cpp , 在OnInitialUpdate()中
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP);
myBkImage.CreatePatternBrush(&bmp);
bmp.DeleteObject();

在OnCtlColor()中添加
if (pWnd == this)
{
return myBkImage;
}
mct1025 2003-09-14
  • 打赏
  • 举报
回复
Adding a background image to any window

http://www.codeproject.com/bitmap/picturewindow.asp?target=dialog
SeainBlue 2003-09-14
  • 打赏
  • 举报
回复
http://www.codeguru.com/dialog/BmpDlg.shtml
ywybetter 2003-09-14
  • 打赏
  • 举报
回复
up
vcforever 2003-09-14
  • 打赏
  • 举报
回复
用你的图片创建一个位图画刷,用你的位图画刷来填充
对话框的客户区!
chen_pin 2003-09-14
  • 打赏
  • 举报
回复
Up it

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧