在MDI主框架窗口中添加位图(在视中加载位图)

原创 2005年04月29日 22:26:00

要在视图中显示位图,难点在于控件需要自己添加,位置要自己定。在MDI中添加位图有如下几个步骤:

  • 首先添加一个显示控件。这里的添加和其他控件的添加相类似。

有两个地方可以添加代码来创建控件:CtestMDIView::OnCreate 和 CtestMDIView::OnInitialUpdate。CtestMDIView::OnCreate 的执行点比较靠先。这里我为了自己的需要选择了在CtestMDIView::OnInitialUpdate中创建控件

 GetClientRect(Rect);
 // add picture wide = 50 height = 100
 myRect = Rect;
 myRect.bottom = myRect.top + 100;
 myRect.left = myRect.right + 20;

 m_PicShow.Create( "Picture Show", WS_CHILD|WS_VISIBLE|WS_BORDER,
  CRect(Rect.right + 500,Rect.top + 20,Rect.right + 100,Rect.top + 120), this, 12002 );

  • 其次,为显示控件增加移动代码,以便响应窗口变化。即在

void CtestMDIView::OnSize(UINT nType, int cx, int cy)
{
 CRect Rect;
 CView::OnSize(nType, cx, cy);
 if(canSize){
  GetClientRect(Rect);
  m_PicShow.MoveWindow()
 }
}

其实加载显示位图位图并不象如上这么复杂,只需要加载并在OnPaint()或OnDraw中显示就可以了,代码如下

 CPaintDC dc(this);
 OnPrepareDC(&dc);
 OnDraw(&dc);

 CBitmap cBitmap;
 BITMAP bitMap;
 CDC dcMem;

 dcMem.CreateCompatibleDC(&dc);

 cBitmap.LoadBitmap( IDB_PLAY1 );
 cBitmap.GetBitmap(&bitMap);

 CBitmap *pbmpOld=dcMem.SelectObject(&cBitmap);
 dc.StretchBlt( m_rectPicLoc.left,m_rectPicLoc.top,
  m_rectPicLoc.right - m_rectPicLoc.left,
  m_rectPicLoc.bottom - m_rectPicLoc.top,
  &dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);


其中IDB_PLAY1即要显示的图片资源。

这里是将图片加入资源来显示,适用于图片预先已知。若图片未知,则可用LoadBitmap打开图像,然后以同样的方式显示

另外还可以用Bltblt来显示图片,以加快速度

MFC中加载位图资源到窗口中

一、 从磁盘中加载位图到窗口中---操作步骤 1. 创建一个单文档的应用程序,工程名为LoadBmp。 2. 在视图类中添加一个成员变量m_hBmp. 3. 在视图类的构造函数中调用LoadImage...

在单文档中加载一张位图

  • 2011年12月08日 10:35
  • 3.69MB
  • 下载

MDI应用的主框架窗口背景设置

在使用VC6.0/5.0的AppWizard生成MDI应用的时候,我们发现MDI主窗口的客 户区背景千篇一律的是深灰的。VC6.0/5.0并没有提供修改其背景色的方法。甚 至使用SDK编程也没...

mfc编辑框输入垂直居中&字体调整&不采用password属性进行密码输入&vs2013中加载bitmap位图

第一部分:mfc编辑框输入垂直居中 处理前:编辑框光标靠上,不太美观 处理后:光标垂直居中 操作: 1)将编辑框属性中的Align Text 选择为Center2)将编辑框属性中的Multiline...

MFC MDI项目如何一个文档显示多个不同视图类(比如文字和图表,各自拥有单独的框架窗口)

先上图:每个窗口都有自己独自的完全窗口,可关闭可最大最小化。 不是那种Splitter窗口。 直接用MFC的MDI或SDI向导是出不来这种效果的。 你可以用同一份文档中的数据在不同窗口显示文本或图表,...
  • softfox
  • softfox
  • 2016年04月05日 22:45
  • 2637

VC不规则窗口实现—位图区域裁剪

既然默认创建的窗口是矩形区域,只要把不想显示的区域透明化,剩下的不就是不规则窗口了吗?!接下来所谓的窗口透明化,我们直接使用CRgn类来实现创建、裁剪和合并区域的功能,然后再使用SetWindowRg...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在MDI主框架窗口中添加位图(在视中加载位图)
举报原因:
原因补充:

(最多只允许输入30个字)