75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
#pragma once
|
|
|
|
class KUIControlSimpleButton;
|
|
class KUIControlStatic;
|
|
class KUIControlVScroll;
|
|
|
|
class KUIControlCombo : public KUIControl
|
|
{
|
|
public:
|
|
KUIControlCombo();
|
|
|
|
virtual void Render( KViewportObject *pViewport, bool isFront = false );
|
|
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
|
|
virtual DWORD OnMouseMessage(DWORD dwMessage,int x, int y);
|
|
|
|
virtual void OnChangeCaptionNotify();
|
|
|
|
bool AddItem(LPCSTR itemName);
|
|
bool InsertItem(int index, LPCSTR lpszItem);
|
|
bool RemoveItem(int index);
|
|
int FindItemIndex(LPCSTR itemName);
|
|
void ClearItem();
|
|
|
|
|
|
/// Combo Item의 정렬
|
|
void SetItemAlign(DWORD align);
|
|
/// Comobo Item의 최고 넒이
|
|
void SetItemWidth(DWORD itemWidth);
|
|
/// 스크롤 없이 한번에 보여지는 Item의 갯수
|
|
void SetMaxViewItem(DWORD maxViewItemCount);
|
|
|
|
int GetCount();
|
|
|
|
/// 현재 선택된 Item을 알려줌 (선택된게 없으면 - 1을 리턴)
|
|
int GetCurSel();
|
|
bool SetCurSel(int index);
|
|
protected:
|
|
virtual void _initControl();
|
|
|
|
private:
|
|
void _InitComboPhrase();
|
|
void _SetFold(bool bFold);
|
|
/// Add,Insert,Remove,Clear 등을 했을때 불림.
|
|
void _UpdateComboItem();
|
|
int _GetUnfoldBackHeight();
|
|
|
|
/// Combo box가 펼쳐졌을때 마우스 위치에 따라서 처리해줌.
|
|
void _SetPreSelectItem(int x, int y);
|
|
void _SetPreSelectItem(int nIndex);
|
|
|
|
/// 스크롤 컨트롤을 보여줘야 하나?
|
|
bool _IsScrollEnable();
|
|
void _SetScrollMaxRange();
|
|
|
|
/// 한번에 보여지는 Item들의 수직 높이
|
|
DWORD _GetMaxViewLineHeight();
|
|
|
|
private:
|
|
DWORD m_itemWidth;
|
|
DWORD m_maxViewItemCount;
|
|
int m_selectItem;
|
|
int m_preSelectItem;
|
|
bool m_bFold;
|
|
bool m_bUpdate;
|
|
|
|
std::string m_sNotSelectedItem; ///< 아무것도 선택되지 않았을때 보여줘야 하는 글씨 (uii 에서 caption을 통해서 셋팅)
|
|
|
|
KUIControlSimpleButton* m_pDownButton;
|
|
KUIControlStatic* m_pUnfoldBack;
|
|
KUIControlStatic* m_pUnfoldSelectBack;
|
|
|
|
KTextPhrase m_ComboPhrase;
|
|
std::vector<std::string> m_vtComboItems;
|
|
|
|
}; |