AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

在VC++项目中为MDI主框架窗口添加位图

51自学网 2015-08-30 http://www.wanshiok.com

  三、程序代码

/////////////////////////////////////////////////////
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  return -1;
 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
 {
  TRACE0("Failed to create toolbar/n");
  return -1; // fail to create
 }
 if (!m_wndStatusBar.Create(this) ||!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status bar/n");
  return -1; // fail to create
 }
 // TODO: Delete these three lines if you don't want the toolbar to
 // be dockable
 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 EnableDocking(CBRS_ALIGN_ANY);
 DockControlBar(&m_wndToolBar);
 CDC dc, memdc;
 dc.m_hDC=::GetDC(this->m_hWndMDIClient);
 CRect rect;
 CBitmap bitmap;
 BITMAP szbitmap;
 bitmap.LoadBitmap(IDB_BITMAP1);
 bitmap.GetObject(sizeof(BITMAP),&szbitmap);
 CSize size(szbitmap.bmWidth,szbitmap.bmHeight);
 memdc.CreateCompatibleDC(&dc);
 CBitmap *oldbitmap=memdc.SelectObject(&bitmap);
 GetClientRect(&rect);
 StretchBlt(dc.m_hDC,0,0,rect.Width(),rect.Height(),
 memdc.m_hDC,0,0,size.cx,size.cy,SRCCOPY);
 memdc.SelectObject(oldbitmap);
 memdc.DeleteDC();
 dc.DeleteDC();
 return 0;
}
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
 if(pMsg->hwnd==m_hWndMDIClient && pMsg->message==WM_PAINT)
  PostMessage(WM_PAINT);
 return CMDIFrameWnd::PreTranslateMessage(pMsg);
}

void CMainFrame::OnPaint()
{
 CDC dc, memdc;
 dc.m_hDC=::GetDC(this->m_hWndMDIClient);
 CRect rect;
 CBitmap bitmap;
 BITMAP szbitmap;
 bitmap.LoadBitmap(IDB_BITMAP1);
 bitmap.GetObject(sizeof(BITMAP),&szbitmap);
 CSize size(szbitmap.bmWidth,szbitmap.bmHeight);
 memdc.CreateCompatibleDC(&dc);
 CBitmap *oldbitmap=memdc.SelectObject(&bitmap);
 GetClientRect(&rect);
 StretchBlt(dc.m_hDC,0,0,rect.Width(),rect.Height(),
 memdc.m_hDC,0,0,size.cx,size.cy,SRCCOPY);
 memdc.SelectObject(oldbitmap);
 memdc.DeleteDC();
 dc.DeleteDC();
 CMDIFrameWnd::OnPaint();
}

  四、小结

  本实例通过在MDI应用程序的主框架中显示彩色位图作为背景,讲述了图像资源显示的方法,读者朋友可以以此展开,将彩色位图显示到不同的控件上,如按钮、对话框等,同时灵活运用各种显示方式,取得一些意想不到的效果。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。

上一篇:在VC++6.0中用Win32 API实现串行通信  下一篇:用Visual C++实现屏幕抓图程序