cdxCSizeIconCtrl.cpp
上传用户:cbxyz2008
上传日期:2007-01-02
资源大小:45k
文件大小:4k
- // cdxCSizeIconCtrl.cpp : implementation file
- //
- #include "stdafx.h"
- #include "cdxCSizeIconCtrl.h"
- #include <winuser.h>
- #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
- /////////////////////////////////////////////////////////////////////////////
- // 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_COLOR4|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);
- }