www.gusucode.com > VC++指定区域抓图、截屏小程序-源码程序 > VC++指定区域抓图、截屏小程序-源码程序/code/FBView.cpp
//Download by http://www.NewXing.com /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 文件:FBView.h 类CFBView的执行文件 版权:Firebird Software Workroom 保留 声明:本源程序的版权受《中华人民共和国著作权法》以及其 它相关法律和条约的保护。任何有机会得到本源程序的 个人和机构,未经作者明确授权,不得将本源程序用于 任何商业目的(直接的或间接的)。对于非商业目的的使 用 (包括复制、传播、编译和修改), 原则上没有特别 的限制条款,但请在相关文档中说明其来源,并尊重原 作者的署名权。 编写:秦传安(chings) 2000.5 联络:Tel:(0792)6323086 E_mail:chings@163.net @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ #include "fclstd.h" #include "FBView.h" //#################################################################### CFBView::CFBView() { m_nBkMode = 0; m_hBkBmpDC = NULL; m_hBkBrush = NULL; } CFBView::~CFBView() { if(m_hBkBmpDC) DeleteDC(m_hBkBmpDC); if(m_hBkBrush) DeleteObject(m_hBkBrush); } //#################################################################### LRESULT CFBView::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam) { LRESULT lResult = 0; switch(msg) { case WM_ERASEBKGND: if(!DrawBackground((HDC)wParam)) lResult = CFBWnd::WindowProc(msg,wParam,lParam); else lResult = 1; break; case WM_PAINT: lResult = CFBWnd::WindowProc(msg,wParam,lParam); OnDraw(GetDC(m_hWnd)); break; default: lResult = CFBWnd::WindowProc(msg,wParam,lParam); break; } return lResult; } //#################################################################### BOOL CFBView::Create(CFBWnd* pParent,UINT uID,UINT style) { if(!pParent)return FALSE; style |= WS_CHILD|WS_VISIBLE; return CFBWnd::Create(CLS_FBSTDWNDCLASS, NULL, pParent->GetInstance(), pParent, style, WS_EX_CLIENTEDGE, (HMENU)uID); } //#################################################################### BOOL CFBView::DrawBackground(HDC hDC) { if(m_hBkBmpDC && (m_nBkMode == 2)) { RECT rc; GetClientRect(m_hWnd,&rc); TileBitmap(hDC,&rc,m_hBkBmpDC,m_cxBkBmp,m_cyBkBmp); return TRUE; } else if(m_hBkBrush && (m_nBkMode == 1)) { RECT rc; GetClientRect(m_hWnd,&rc); FillRect(hDC,&rc,m_hBkBrush); return TRUE; } else return FALSE; } //#################################################################### void CFBView::OnDraw(HDC hDC) { } //#################################################################### void CFBView::SetBkColor(COLORREF clr) { m_hBkBrush = CreateSolidBrush(clr); if(m_hBkBrush) m_nBkMode = 1; } //#################################################################### void CFBView::SetBkImage(HBITMAP hBmp) { if(!hBmp)return; if(m_hBkBmpDC) { DeleteDC(m_hBkBmpDC); m_hBkBmpDC = NULL; } BITMAP bmp; GetObject(hBmp,sizeof(BITMAP),&bmp); m_cxBkBmp = bmp.bmWidth; m_cyBkBmp = bmp.bmHeight; m_hBkBmpDC = CreateCompatibleDC(GetDC(m_hWnd)); SelectObject(m_hBkBmpDC,hBmp); DeleteObject(hBmp); m_nBkMode = 2; } //#################################################################### void CFBView::SetBkImage(LPTSTR pszFilename) { HBITMAP hBmp = (HBITMAP)LoadImage(NULL,pszFilename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); SetBkImage(hBmp); }