Files
2026-06-01 12:46:52 +02:00

178 lines
4.3 KiB
C++

#ifdef _COUNTRY_ME_
#pragma once
#include "KUIControl.h"
#include "KPrimitiveSprite.h"
/*
TODO :
KBUTTON_????? 등은 "버튼" 의 공통적 특성이므로 이것들은 KUIControlButtonBase 등으로
구현해놓고 각 버튼 컨트롤들은 KUIControlButtonBase 을 상속받는것이 올바른 디자인으로
보이네요.. 고치고 싶지만 일단 바빠서 넘어갑니다. UI 담당하실 님이 고쳐주셈. -_-/ by Testors
*/
class KUIControlSimpleButton : public KUIControl
{
public:
public:
enum KBUTTON_STATE
{
KBUTTON_NORMAL = 0,
KBUTTON_ACTIVATE,
KBUTTON_DOWN,
KBUTTON_DISABLE,
KBUTTON_MAX = 4,
};
KUIControlSimpleButton();
virtual ~KUIControlSimpleButton();
virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y);
virtual DWORD OnKeyMessage(DWORD dwMessage, DWORD dwKeyCode);
virtual void Render(KViewportObject * pViewport, bool isFront = false );
virtual void Create(KUIWND_CREATE_ARG& CREATE_ARG);
virtual void UpdateBack();
const bool GetLeftButton() { return m_bLeftButton; }
void SetButtonState(DWORD dwState) {
m_dwButtonState = dwState;
#ifdef _KUI_INVALIDATION
InvalidateWnd();
#endif
}
int GetButtonWidth();
// 2012. 5. 30 - marine 비활성화시 버튼의 상태를 유지 해야 할경우 사용
void DisableAndButtonState(DWORD dwState);
virtual void Enable();
protected:
virtual void _destroyControl();
virtual void _initControl();
bool m_bLeftButton;
KSpritePrimitive m_ButtonSprite[KBUTTON_MAX];
DWORD m_dwButtonState;
DWORD m_dwDisableButtonState; // 2012. 5 . 30 - marine 비활성화 상태일 때 버튼의 상태 저장
};
class KUIControlButton : public KUIControl
{
public:
enum KBUTTON_STATE
{
KBUTTON_NORMAL = 0,
KBUTTON_ACTIVATE,
KBUTTON_DOWN,
KBUTTON_MAX = 4,
};
KUIControlButton();
virtual ~KUIControlButton();
virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y);
virtual DWORD OnKeyMessage(DWORD dwMessage, DWORD dwKeyCode);
virtual void Render(KViewportObject * pViewport, bool isFront = false );
virtual void OnChangeCaptionNotify();
void SetButtonState(DWORD dwState)
{
m_dwButtonState = dwState;
#ifdef _KUI_INVALIDATION
// { [sonador]
InvalidateWnd();
// }
#endif
}
int GetButtonWidth();
protected:
virtual void _initControl();
void _initHorizontal();
void _initVertical();
bool m_bLeftButton;
KSpritePrimitive m_ButtonSprite[KBUTTON_MAX][3];
DWORD m_dwButtonState;
};
class KUIControlCaptionButton : public KUIControlButton
{
public:
KUIControlCaptionButton();
virtual ~KUIControlCaptionButton();
virtual void Render(KViewportObject * pViewport, bool isFront = false );
const char* GetAniCaption() const { return m_sCaptionAniName.c_str(); };
virtual void UpdateCaption(DWORD maxWidth = 0); // 2010.09.03 - prodongi
virtual void OnChangeCaptionNotify();
protected:
virtual void _initControl();
protected:
std::string m_sCaptionAniName;
KSpritePrimitive m_CaptionSprite[KUIControlButton::KBUTTON_MAX];
};
class KUIControlCheck : public KUIControlSimpleButton
{
public:
KUIControlCheck();
virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y);
virtual void Process( DWORD dwTime );
virtual void Render(KViewportObject * pViewport, bool isFront = false );
bool GetCheck();
void SetCheck(bool bCheck);
void SetDisableCheck();
protected:
virtual void _initControl();
};
class KUIControlButtonCheck : public KUIControlButton
{
public:
KUIControlButtonCheck();
virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y);
virtual void Render(KViewportObject * pViewport, bool isFront = false );
bool GetCheck();
void SetCheck(bool bCheck);
void SetDisableCheck();
protected:
virtual void _initControl();
};
class KUIControlCaptionCheck : public KUIControlButton
{
public:
KUIControlCaptionCheck();
virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y);
virtual void Render(KViewportObject * pViewport, bool isFront = false );
const char* GetAniCaption() const { return m_sCaptionAniName.c_str(); };
bool GetCheck();
void SetCheck(bool bCheck);
void SetDisableCheck();
virtual void UpdateCaption(DWORD maxWidth = 0); // 2010.09.03 - prodongi
protected:
virtual void _initControl();
protected:
std::string m_sCaptionAniName;
KSpritePrimitive m_CaptionSprite[KUIControlButton::KBUTTON_MAX];
};
#endif