|
/*
* This file is part of the EMFexplorer projet.
* Copyright (C) 2004 Smith Charles.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*
* Extension: for commercial use, apply the Equity Public License, which
* adds to the normal terms of the GLPL a condition of donation to the author.
* If you are interested in support for this source code,
* contact Smith Charles <smith.charles@free.fr> for more information.
*/
#ifndef _SCWINTHUMBS_H_
#define _SCWINTHUMBS_H_
#include "unknwn.h" // or GDI+ won't let us compile
#include "gdiplus.h"
#include "SCMemDC.h"
#include "SCGenInclude.h"
#include SC_INC_GENLIB(SCGenDefs.h)
#define GReal Gdiplus::REAL
#define GGraphics Gdiplus::Graphics
#define THN_SELCHANGE 0x8000 // user-defined notification
typedef Gdiplus::Image* PSCThumbImage;
class SMC_INTERFACE I_SCThumbsHolder
{
public:
virtual void SCSetThumbsSize(CSize& size) = 0;
virtual PSCThumbImage SCGetThumbImage(int iThumbIdx) = 0;
};
/////////////////////////////////////////////////////////////////////////////
// CSCWinThumbs control
class CSCWinThumbs : public CWnd
{
// Construction
public:
CSCWinThumbs();
// Attributes
public:
// setters
void SCSetThumbSize(CSize size)
{
m_ThumbsMinSize = size;
SCComputeRowsCols();
}
void SCSetCurSel(int iCurSel)
{
m_iCurSel = iCurSel;
SCEnsureCurThumbVisible();
//Invalidate();
}
void SCSetShowNum(BOOL bShow)
{
m_bShowNum = bShow;
Invalidate();
}
void SCSetProgressDraw(BOOL bProgessDraw) { m_bProgessDraw = bProgessDraw; }
void SCSetFont(CFont* pFont) { m_pFont = pFont;}
// getters
int SCGetCurSel() const { return m_iCurSel; }
int SCGetNbPgRows() const { return m_uiNbRows; }
int SCGetNbPgCols() const { return m_uiNbCols; }
// Operation
public:
void SCSetThumbsHolder(I_SCThumbsHolder* pHolder, int iNbThumbs);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSCWinThumbs)
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CSCWinThumbs();
void SCReset();
void SCInitCtl();
// Generated message map functions
protected:
//{{AFX_MSG(CSCWinThumbs)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
virtual void OnSize(UINT nType, int cx, int cy);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
void SCInitializeScrollBars(int width, int height);
void SCSizeScrollBars(int width, int height);
BOOL ScrollChildWindow(int nScrollBar, UINT wScrollCode, int iCount=1);
void SCPaint(CPaintDC &dc);
void SCDrawNumber(int xDest, int yDest, UINT uiThumbIdx);
int SCComputeHitTest(CPoint point);
void SCComputeRowsCols();
void SCNotifyParent();
void SCEnsureCurThumbVisible();
void SCGetThumbPos(int iThumbIdx, int& xThumbLeft, int& yThumbTop);
inline int SCNbColsInSpace(int iWndCx, int iImgCx);
inline int SCNbRowsInCols(int iNbCols);
private:
I_SCThumbsHolder* m_pIThumbsHolder;
CSize m_ThumbsMinSize; // set by thumbs holder
CSize m_ThumbsSize; // computed size
int m_iCurSel;
BOOL m_bAdjusting;
BOOL m_bShowNum;
int m_uiNbThumbs; // total number of thumbs (set by thumbs holder)
int m_uiNbRows; // computed number of rows
int m_uiNbCols; // computed number of columns
int m_iMarginX;
int m_iMarginY;
int m_iWorldCx;
int m_iWorldCy;
CSCMemDC m_WorkMemDC;
CFont* m_pFont;
BOOL m_bProgessDraw;
BOOL m_bLastSeen;
};
#endif //_SCWINTHUMBS_H_
// ------------------------------------------------------------
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.