|
|
//-----------------------------------------------------------------------------
// File: flexcombobox.h
//
// Desc: Implements a combo box control similar to Windows combo box.
// CFlexComboBox is derived from CFlexWnd. It is used by the page
// for player list and genre list. When the combo box is open,
// CFlexComboBox uses a CFlexListBox for the list window.
//
// Copyright (C) 1999-2000 Microsoft Corporation. All Rights Reserved.
//-----------------------------------------------------------------------------
#ifndef __FLEXCOMBOBOX_H__
#define __FLEXCOMBOBOX_H__
#include "flexlistbox.h"
#define FCBF_DEFAULT 0
enum { FCBN_SELCHANGE, FCBN_MOUSEOVER };
struct FLEXCOMBOBOXCREATESTRUCT { DWORD dwSize; DWORD dwFlags; DWORD dwListBoxFlags; HWND hWndParent; HWND hWndNotify; BOOL bVisible; RECT rect; HFONT hFont; COLORREF rgbText, rgbBk, rgbSelText, rgbSelBk, rgbFill, rgbLine; int nSBWidth; };
class CFlexComboBox : public CFlexWnd { public: CFlexComboBox(); ~CFlexComboBox();
// creation
BOOL Create(FLEXCOMBOBOXCREATESTRUCT *);
// cosmetics
void SetFont(HFONT hFont); void SetColors(COLORREF text, COLORREF bk, COLORREF seltext, COLORREF selbk, COLORREF fill, COLORREF line);
// setup
int AddString(LPCTSTR); // returns index
// interaction
void SetSel(int i); int GetSel(); LPCTSTR GetText();
protected: virtual void OnPaint(HDC hDC); virtual LRESULT WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
private: HWND m_hWndNotify;
COLORREF m_rgbText, m_rgbBk, m_rgbSelText, m_rgbSelBk, m_rgbFill, m_rgbLine; HFONT m_hFont; int m_nSBWidth; int m_nTextHeight; DWORD m_dwFlags; DWORD m_dwListBoxFlags;
enum FCBSTATEEVENT { FCBSE_DOWN, FCBSE_UPBOX, FCBSE_UPLIST, FCBSE_UPOFF, FCBSE_DOWNOFF };
enum FCBSTATE { FCBS_CLOSED, FCBS_OPENDOWN, FCBS_OPENUP, FCBS_CANCEL, FCBS_SELECT };
FCBSTATE m_eCurState; void StateEvent(FCBSTATEEVENT e); void SetState(FCBSTATE s); int m_OldSel;
RECT GetRect(const RECT &); RECT GetRect(); RECT GetListBoxRect(); void SetRect(); RECT m_rect;
void InternalPaint(HDC hDC); void Notify(int code);
CFlexListBox m_ListBox; BOOL m_bInSelMode;
void DoSel(); };
CFlexComboBox *CreateFlexComboBox(FLEXCOMBOBOXCREATESTRUCT *pcs);
#endif //__FLEXCOMBOBOX_H__
|