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

要在视图中显示位图,难点在于控件需要自己添加,位置要自己定。在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来显示图片,以加快速度

阅读更多
文章标签: 框架 border
个人分类: Process of My C++ study
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭