Files
2022-10-26 12:25:11 +08:00

96 lines
3.4 KiB
C++

#pragma once
#include "CtrlButtonWZ.h"
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
// CCtrlVScrollWZ Class
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
class CCtrlVScrollWZ : public CControlWZ
{
public:
CCtrlVScrollWZ();
virtual ~CCtrlVScrollWZ();
virtual bool OnCreate(DWORD dwCtrlID,DWORD dwStyle,HWND hParentWnd,HINSTANCE hInstance,RECT* rtSize,void* pDraw);
virtual void OnDestroy();
virtual bool OnDraw(bool bl);
virtual void OnInitialize();
virtual bool MoveWindowWZ(float fx, float fy, float fWidth, float fHeight);
virtual void UpdateWindowWZ(HWND hParent);
virtual void ReleaseImage();
virtual void OnLoad(HANDLE hHandle);
virtual void OnSave(HANDLE hHandle);
virtual void EnableWindowWZ(bool bState);
public:
virtual void SetChangeSizeThumb(int nSizeRate); //. 가운데 버튼 크기를 늘려준다.(Min:5~Max:100);100이면 곽찬 Tthum
virtual void SetScrollRangeWZ(int nMinPos, int nMaxPos);
virtual void GetScrollRangeWZ(int* pnMinPos, int* pnMaxPos);
virtual void SetScrollRangeWZ(float fMinPos, float fMaxPos);
virtual void GetScrollRangeWZ(float* pfMinPos, float* pfMaxPos);
virtual int SetScrollPosWZ(int nPos); //. 리턴이 -1:Min보다 작다,1:Max보다 크다. 0: OK
virtual int GetScrollPosWZ(){return (int)m_fCurPos; }
virtual int SetScrollPosWZ(float fPos); //. 리턴이 -1:Min보다 작다,1:Max보다 크다. 0: OK
virtual void SetArrowUPBTImageFormat(SI_TFORMAT* pFormat);
virtual void SetArrowDownBTImageFormat(SI_TFORMAT* pFormat);
virtual void SetArrowThumbBTImageFormat(SI_TFORMAT* pFormat);
virtual SI_TFORMAT* GetArrowUPBTImageFormat();
virtual SI_TFORMAT* GetArrowDownBTImageFormat();
virtual SI_TFORMAT* GetArrowThumbBTImageFormat();
virtual void SetArrowUPBTIsOutline(bool blIs);
virtual bool GetArrowUPBTIsOutline();
virtual void SetArrowUPBTOutlineColor(COLORREF rgb);
virtual COLORREF GetArrowUPBTOutlineColor();
virtual void SetArrowUPSize(RECT& rect);
virtual RECT GetArrowUPSize();
virtual void SetArrowDownBTIsOutline(bool blIs);
virtual bool GetArrowDownBTIsOutline();
virtual void SetArrowDownBTOutlineColor(COLORREF rgb);
virtual COLORREF GetArrowDownBTOutlineColor();
virtual void SetArrowDownSize(RECT& rect);
virtual RECT GetArrowDownSize();
virtual void SetArrowThumbBTIsOutline(bool blIs);
virtual bool GetArrowThumbBTIsOutline();
virtual void SetArrowThumbBTOutlineColor(COLORREF rgb);
virtual COLORREF GetArrowThumbBTOutlineColor();
virtual void SetArrowThumbSize(RECT& rect);
virtual RECT GetArrowThumbSize();
protected:
//. Mouse 관련 함수들.
virtual bool Message_MouseLButtonDown(SI_MESSAGE* pMsg);
virtual bool Message_MouseLButtonUp(SI_MESSAGE* pMsg);
virtual bool Message_MouseMove(SI_MESSAGE* pMsg);
protected:
short m_nMinSizeX; //. 크기의 최소 X값.
int m_nSpaceLength; //. 몸통의 여백 길이.
float m_fMinPos;
float m_fMaxPos;
float m_fCurPos; //. 현재 위치 (비율)
RECT m_rtShaftUp; //. 몸통의 Up 영역 . topx, topy, width, Height
RECT m_rtShaftDown; //. 몸통의 Down 영역 . topx, topy, width, Height
bool m_blThumbDrag; //. 썸을 드레그 하는 중인지 체크.
POINT m_poLBD; //. 왼쪽 버튼 눌렀을때의 좌표.
CCtrlButtonWZ m_cBTArrowUp; //. 화살표 up
CCtrlButtonWZ m_cBTArrowDown; //. 화살표 down
CCtrlButtonWZ m_cBTThumb; //. 썸(Thumb)
};