www.pudn.com > LED.rar > cdxCSizeIconCtrl.cpp


// cdxCSizeIconCtrl.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "cdxCSizeIconCtrl.h" 
 
#include	 
 
#ifndef OBM_SIZE 
#define	OBM_SIZE		32766 
#pragma message("*** NOTE[cdxCSizeIconCtrl.cpp]: Please define OEMRESOURCE in your project settings !") 
// taken from WinresRc.h 
// if not used for any reason 
#endif 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
#pragma warning(disable: 4100) 
 
///////////////////////////////////////////////////////////////////////////// 
// cdxCSizeIconCtrl::AutoOEMImageList 
///////////////////////////////////////////////////////////////////////////// 
 
///////////////////////////////////////////////////////////////////////////// 
// construction 
///////////////////////////////////////////////////////////////////////////// 
 
/* 
 * one-step construction for my image list 
 * (allows to use the AutoOEMImageList as static member) 
 */ 
 
cdxCSizeIconCtrl::AutoOEMImageList::AutoOEMImageList(UINT nBitmapID, COLORREF crMask) 
{ 
	CBitmap	cbmp; 
	BITMAP	bmp; 
	VERIFY( cbmp.LoadOEMBitmap(nBitmapID) ); 
	VERIFY( cbmp.GetBitmap(&bmp) ); 
 
	m_szImage.cx	=	bmp.bmWidth; 
	m_szImage.cy	=	bmp.bmHeight; 
 
	VERIFY( Create(bmp.bmWidth,bmp.bmHeight,ILC_COLOR16|ILC_MASK,0,1) ); 
	int	i	=	Add(&cbmp,crMask); 
	ASSERT(i == 0); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// cdxCSizeIconCtrl 
///////////////////////////////////////////////////////////////////////////// 
 
IMPLEMENT_DYNAMIC(cdxCSizeIconCtrl,CScrollBar); 
 
///////////////////////////////////////////////////////////////////////////// 
 
cdxCSizeIconCtrl::AutoOEMImageList	cdxCSizeIconCtrl::M_ilImage(OBM_SIZE,::GetSysColor(COLOR_BTNFACE)); 
HCURSOR										cdxCSizeIconCtrl::M_hcSize	=	::LoadCursor(NULL,IDC_SIZENWSE); 
 
///////////////////////////////////////////////////////////////////////////// 
// construction 
///////////////////////////////////////////////////////////////////////////// 
 
BEGIN_MESSAGE_MAP(cdxCSizeIconCtrl, CScrollBar) 
	//{{AFX_MSG_MAP(cdxCSizeIconCtrl) 
	ON_WM_PAINT() 
	ON_WM_SETCURSOR() 
	ON_WM_LBUTTONDBLCLK() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// cdxCSizeIconCtrl inlines 
///////////////////////////////////////////////////////////////////////////// 
 
/* 
 * create short-cut 
 */ 
 
BOOL cdxCSizeIconCtrl::Create(CWnd *pParent, UINT id) 
{ 
	ASSERT(pParent != NULL); 
	CRect	rect;pParent->GetClientRect(&rect); 
	if(!CScrollBar::Create(		SBS_SIZEBOX|SBS_SIZEBOXBOTTOMRIGHTALIGN| 
										WS_CHILD, 
										rect, 
										pParent,id)) 
		return FALSE; 
 
	VERIFY( ModifyStyleEx(0,WS_EX_TRANSPARENT) ); 
	return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// cdxCSizeIconCtrl message handlers 
///////////////////////////////////////////////////////////////////////////// 
 
/* 
 * draw icon 
 */ 
 
void cdxCSizeIconCtrl::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
 
	if(GetParent() && (!GetParent()->IsZoomed() || !m_bReflectParentState)) 
	{ 
		CRect	rect;GetClientRect(&rect); 
		CSize	sz	=	M_ilImage.Size(); 
 
		VERIFY( M_ilImage.Draw(	&dc, 
								0, 
								CPoint(rect.right - sz.cx,rect.bottom - sz.cy), 
								ILD_NORMAL|ILD_TRANSPARENT) ); 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// cdxCSizeIconCtrl Cursor 
///////////////////////////////////////////////////////////////////////////// 
 
/* 
 * set the cursor. 
 */ 
 
BOOL cdxCSizeIconCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)  
{ 
	if(GetParent() && (!GetParent()->IsZoomed() || !m_bReflectParentState)) 
		::SetCursor((nHitTest == HTCLIENT) ? M_hcSize : NULL); 
	return TRUE; 
} 
 
/* 
 * catch Doubleclick - if you don't do that, 
 * the window will be maximized if you double-blick 
 * the control. 
 * Don't know why, but it's annoying. 
 */ 
 
void cdxCSizeIconCtrl::OnLButtonDblClk(UINT nFlags, CPoint point)  
{ 
//	CScrollBar::OnLButtonDblClk(nFlags, point); 
}