VC中如何在对话框上显示位图
2008-11-13 19:30:18 来源:WEB开发网成功了。
注意,这个控件不但只能显示bmp,还可显示许多其他的格式,你可以自己试一下。
二、利用Cdib类
这个方法比较烦琐,并且只能显示bmp,但它不依赖特定的系统,也比较实用。这个类在MSDN提供的例子中有,名字为ex10c.dsw,找到cdib.cpp和cdib.h,加入你的工程即可。如果你找不到,也可以到我的网页去看看http://dlgis.topcool.net或者给我写信ytdl@263.net。
---- 下面是过程:
新建一个基于对话框的工程,单击Add Files to Project,加入上面所说的两个文件。
在对话框的头文件中加入#include "cdib.h",然后给对话框类加入一个成员变量,代码如下: Cdib m_dibFile;
在对话框的初始化函数中,加入如下代码:
#ifdef MEMORY_MAPPED_FILES
if (m_dibFile.AttachMapFile
("c:windowsclouds.bmp",TRUE)==TRUE)
{ // share
Invalidate();
}
#else
CFile file;
file.Open("c:windowsclouds.bmp",
Cfile::modeRead);
if (m_dibFile.Read(&file) == TRUE)
{
Invalidate();
}
#endif // MEMORY_MAPPED_FILES
CClientDC dc(this);
m_dibFile.SetSystemPalette(&dc);
在OnPaint函数中,找到else,然后在里面加入如下代码:
BeginWaitCursor();
m_dibFile.UsePalette(GetDC());
CSize sizeFileDib = m_dibFile.GetDimensions();
m_dibFile.Draw(GetDC() ,CPoint(0,0), sizeFileDib);
EndWaitCursor();
运行程序,是不是看到蓝天白云了?!下面继续加入让对话框自动适应图片大小的代码,还是在初始化中,紧接这上一次的代码,加入如下两行:
CSize sizeFileDib = m_dibFile.GetDimensions();
MoveWindow(0,0,sizeFileDib.cx,sizeFileDib.cy,true);
完全显示了吗?也许不完全合适,你可以细微地调整cx,cy两个参数,使之适应。
更多精彩
赞助商链接