⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scwinthumbs.h

📁 Source code for EMFexplorer 1.0
💻 H
字号:
/*
*	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_
//  ------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -