盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

VC中怎么在对话框上显示位图

时间:2025/3/15作者:未知来源:盾怪网教程人气:

[摘要]classwizard,单击Member Variables,点击Add Variable…按钮,系统会弹出一个对话框,大体上是提示你它要把控件加入工程中了,确定即可。在接下来的对话框上继续点击OK...
classwizard,单击Member Variables,点击Add Variable…按钮,系统会弹出一个对话框,大体上是提示你它要把控件加入工程中了,确定即可。在接下来的对话框上继续点击OK,此时,会出现一个对话框,提示你输入变量名,输入你想要的名字即可。我们输入m_ctrlPicture。单击确定。

  此时你的工程中已经有了一个名字为m_ctrlPicture的控件,接下来就可以利用它来显示图片了,我们把它加到对话框的初始化中。单击ClassWizard,选择OnInitDialog,单击Edit Code按钮。

  在OnInitDialog中,找到// TODO: Add extra initialization here,在下面加入如下代码:
m_ctrlPicture.SetImage("c:\\windows\Clouds.bmp");
m_ctrlPicture.Display();


  编译运行,看到了吗?就这么简单。

  但是它的大小却是固定的,要看全图只能利用滚动条。下面我们再来得到图象的尺寸,然后使对话框自动适应图象的大小。还是在初始化中,代码如下:
m_ctrlPicture.SetImage("c:\\windows\\Clouds.bmp");
const int nAddConst=40;
//图象尺寸不会正合适,需要加点增量。
long lPictureWidth=m_ctrlPicture.GetImageWidth();
long lPictureHeight=m_ctrlPicture.GetImageHeight();
MoveWindow(0,0,lPictureWidth,lPictureHeight,true);
    //改变对话框大小

    //改变控件的大小
m_ctrlPicture.MoveWindow(0,0,lPictureWidth,
lPictureHeight+nAddConst,true);
m_ctrlPicture.Display();

成功了。
注意,这个控件不但只能显示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:\\windows\\clouds.bmp",TRUE)==TRUE)
{ // share
Invalidate();
}
#else
CFile file;
file.Open("c:\\windows\\clouds.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两个参数,使之适应。

关键词:VC中如何在对话框上显示位图




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版