132 lines
2.9 KiB
C
132 lines
2.9 KiB
C
![]() |
#ifndef UI_CONTROL_COMBO_H_
|
|||
|
#define UI_CONTROL_COMBO_H_
|
|||
|
|
|||
|
#pragma once
|
|||
|
|
|||
|
namespace ui
|
|||
|
{
|
|||
|
|
|||
|
class CComboWnd;
|
|||
|
class UILIB_API Combo : public Box
|
|||
|
{
|
|||
|
friend class CComboWnd;
|
|||
|
public:
|
|||
|
Combo();
|
|||
|
Combo(const Combo& r) = delete;
|
|||
|
Combo& operator=(const Combo& r) = delete;
|
|||
|
|
|||
|
/// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><E0B7BD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual bool Add(Control* pControl) override;
|
|||
|
virtual bool Remove(Control* pControl) override;
|
|||
|
virtual bool RemoveAt(std::size_t iIndex) override;
|
|||
|
virtual void RemoveAll() override;
|
|||
|
virtual void Activate() override;
|
|||
|
virtual void SetAttribute(const std::wstring& strName, const std::wstring& strValue) override;
|
|||
|
virtual void PaintText(IRenderContext* pRender) override;
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
|||
|
*/
|
|||
|
std::wstring GetText() const;
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> List <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> List <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
ListBox* GetListBox() { return m_pLayout.get(); }
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
*/
|
|||
|
std::wstring GetDropBoxAttributeList();
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] pstrList ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML <EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void SetDropBoxAttributeList(const std::wstring& pstrList);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|||
|
*/
|
|||
|
CSize GetDropBoxSize() const;
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|||
|
* @param[in] szDropBox Ҫ<EFBFBD><EFBFBD><EFBFBD>õĴ<EFBFBD>С<EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void SetDropBoxSize(CSize szDropBox);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Combobox <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] top Ϊ true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false ΪĬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void SetPopupTop(bool top) { m_bPopupTop = top; };
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>ж<EFBFBD> Combobox <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD> true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ false
|
|||
|
*/
|
|||
|
bool IsPopupTop() const { return m_bPopupTop; };
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ѡ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] iIndex Ҫѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD> true <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ false
|
|||
|
*/
|
|||
|
bool SelectItem(int iIndex);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
|
|||
|
* @param[in] iIndex Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD>ؿؼ<EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
Control* GetItemAt(int iIndex);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int GetCurSel() const { return m_iCurSel; }
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
virtual int GetCount() const { return m_pLayout->GetCount(); }
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
* @param[in] callback <EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void AttachSelect(const EventCallback& callback) { m_pLayout->AttachSelect(callback); }
|
|||
|
|
|||
|
private:
|
|||
|
/**
|
|||
|
* @brief Ĭ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] args <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
* @return ʼ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD> true
|
|||
|
*/
|
|||
|
bool OnSelectItem(EventArgs* args);
|
|||
|
|
|||
|
protected:
|
|||
|
CComboWnd *m_pWindow;
|
|||
|
std::unique_ptr<ListBox> m_pLayout;
|
|||
|
int m_iCurSel;
|
|||
|
ControlStateType m_uButtonState;
|
|||
|
CSize m_szDropBox;
|
|||
|
std::wstring m_sDropBoxAttributes;
|
|||
|
bool m_bPopupTop;
|
|||
|
};
|
|||
|
|
|||
|
} // namespace ui
|
|||
|
|
|||
|
#endif // UI_CONTROL_COMBO_H_
|