#ifndef __CeLabel_h__
#define __CeLabel_h__
#include "CeWnd.h"
#include "CeCombo.h"
class CeStatic : public CeWnd
{
// Constructors
public:
CeStatic();
BOOL Create(LPCTSTR lpszText, DWORD dwStyle,
const RECT& rect, HWND hParentWnd, UINT nID = 0xffff, HINSTANCE hInst = NULL);
// Attributes
HICON SetIcon(HICON hIcon);
HICON GetIcon() const;
HBITMAP SetBitmap(HBITMAP hBitmap);
HBITMAP GetBitmap() const;
// Note: you set the text through the normal Get/SetWindowText() calls
// Implementation
public:
virtual ~CeStatic();
};
///////////////////////////////////////////////////////////////////////////////
class CeEdit: public CeWnd
{
public:
BOOL Create(LPCTSTR lpszText, DWORD dwStyle, DWORD dwExStyle, const RECT& rect, HWND hParentWnd, UINT nID, HINSTANCE hInst=NULL);
int Enable(BOOL fEnable);
int GetText(LPTSTR lpch, int cchMax);
int GetTextLength();
int SetText(LPCTSTR lpsz);
void LimitText(int cchMax);
int GetLineCount();
int GetLine(int line, LPCTSTR lpch, int cchMax);
void GetRect(LPRECT lprc);
void SetRect(LPCRECT lprc);
void SetRectNoPaint(LPCRECT lprc);
int GetSel();
void SetSel(int ichStart, int ichEnd);
void ReplaceSel(LPCTSTR lpszReplace);
BOOL GetModify();
void SetModify(BOOL fModified);
int ScrollCaret();
int LineFromChar(int ich);
int LineIndex(int line);
int LineLength(int line);
void Scroll(int dv, int dh);
int CanUndo();
int Undo();
void EmptyUndoBuffer();
void SetTabStops(int cTabs, int* lpTabs);
int FmtLines(BOOL fAddEOL);
int GetFirstVisibleLine();
int SetReadOnly(BOOL fReadOnly);
int GetPasswordChar();
void SetPasswordChar(TCHAR ch);
};
///////////////////////////////////////////////////////////////////////////////
class CeButton: public CeWnd
{
// Construction
public:
BOOL Create(LPCTSTR lpszText, DWORD dwStyle, DWORD dwExStyle, const RECT& rect, HWND hParentWnd, UINT nID, HINSTANCE hInst)
{ return CeWnd::Create(_T("BUTTON"), hParentWnd, rect, lpszText, dwStyle, dwExStyle, nID, hInst); }
};
///////////////////////////////////////////////////////////////////////////////
class CeDateTime: public CeWnd
{
// Construction
public:
CeDateTime();
virtual ~CeDateTime();
BOOL Create(LPCTSTR lpszText, DWORD dwStyle, DWORD dwExStyle, const RECT& rect, HWND hParentWnd, UINT nID, HINSTANCE hInst=NULL);
// Attributes
DWORD GetSystemtime(LPSYSTEMTIME pst) const;
BOOL SetSystemtime(DWORD gd, LPSYSTEMTIME pst);
DWORD GetRange(LPSYSTEMTIME rgst) const;
BOOL SetRange(DWORD gdtr, LPSYSTEMTIME rgst);
BOOL SetFormat(LPCTSTR sz);
COLORREF SetMonthCalColor(int iColor, COLORREF clr);
COLORREF GetMonthCalColor(int iColor);
HWND GetMonthCal() const;
void SetMonthCalFont(HFONT FONT, BOOL fRedraw);
HFONT GetMonthCalFont() const;
// Operations
};
///////////////////////////////////////////////////////////////////////////////
class CeLabelEdit : public CeWnd
{
public:
// Constants
typedef enum tagTYPE
{
leEdit = 1,
leEditLookup = 2,
leCombo = 3,
leDate = 4,
leTime = 5,
leTimeInterval = 6,
leEditNumeric = 7,
}
EDITTYPE;
enum tagLABELEDITSPECIALSTYLE
{
LESS_LABEL = 0x1,
LESS_UNDERLINE = 0x2,
};
enum tagLABELEDITNOTIFY
{
LEN_CONTROLCREATE = 1,
LEN_LOOKUP = 2,
LEN_CHANGED = 3,
LEN_PASSTHRU = 4,
LEN_CONTROLDESTROY = 5,
};
// Auxilary structures
typedef struct tagNOTIFYPASSTHRU
{
int idCtrl; // (int) wParam;
LPNMHDR pnmh; //(LPNMHDR) lParam;
}
NOTIFYPASSTHRU;
typedef struct tagCOMMANDPASSTHRU
{
WORD wNotifyCode; // HIWORD(wParam)
WORD wCtrlId; // LOWORD(wParam)
HWND hwndCtrl; // lParam
}
COMMANDPASSTHRU;
typedef union tagPASSTHRU
{
NOTIFYPASSTHRU notify;
COMMANDPASSTHRU command;
}
PASSTHRU;
private:
EDITTYPE m_wType; // which type of control
CeCombo m_combo; // combobox for combo types
DWORD m_dwCombo;
int m_nCombo;
BYTE m_fStyles; // underline, empty text, etc
CeDateTime m_date; // calendar control for calendar types
CeEdit m_edit; // edit control for edit types
HWND m_hBuddy; // buddy control for numeric spinners
bool m_bDown; // true if calendar and calendar is dropped also used for button lookup down
HFONT m_hFont; // control's font
bool m_bReadOnly; // true if control is in a readonly state
// Construction
public:
CeLabelEdit(EDITTYPE wType = leEdit);
virtual BOOL Create(DWORD dwStyle, DWORD dwStyleEx, const RECT& rect, HWND hWndParent, UINT nID, HINSTANCE hInst = NULL);
BOOL ReplaceWindow(UINT nID, HWND hParent, DWORD dwStyle, HINSTANCE hInst = NULL);
// Attributes
public:
bool IsReadOnly() const
{ return m_bReadOnly; }
// Operations
public:
bool SetReadOnly(bool bReadyOnly = true)
{ bool b = m_bReadOnly; m_bReadOnly = bReadyOnly; return b; }
void SetType(EDITTYPE wType)
{ m_wType = wType; }
EDITTYPE GetType() const
{ return m_wType; }
int GetComboSel() const
{ ASSERT(m_wType == leCombo); return m_nCombo; }
DWORD GetComboSelData() const
{ ASSERT(m_wType == leCombo); return m_dwCombo; }
void SetComboSel(int nSel)
{ ASSERT(m_wType == leCombo); m_nCombo = nSel; }
void SetSpecialStyle(int fStyles)
{ m_fStyles = (BYTE) fStyles; }
int GetSpecialStyle() const
{ return m_fStyles; }
// Overrides -- for derived classes
public:
virtual void OnControlCreate(HWND hControl);
virtual void OnLookup();
virtual LPARAM OnPassThru(PASSTHRU* pPassThru);
virtual void OnChanged();
virtual void OnControlDestroy(HWND hControl);
protected:
BOOL AddSpinner();
virtual int OnCreate( LPCREATESTRUCT lpCS, bool& bHandled );
virtual void OnPaint( bool& bHandled );
virtual BOOL OnEraseBkgnd( HDC hDC, bool& bHandled );
virtual void OnSize( UINT nType, int cx, int cy, bool& bHandled );
virtual void OnLButtonDown( UINT nFlags, POINT point, bool& bHandled );
virtual void OnLButtonUp( UINT nFlags, POINT point, bool& bHandled );
virtual void OnMouseMove( UINT nFlags, POINT point, bool& bHandled );
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam, bool& bHandled);
virtual LRESULT OnNotify(int nCtrlId, LPNMHDR pNMH, bool& bHandled);
virtual LRESULT OnMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
virtual void OnSetFocus(HWND hOldWnd, bool& bHandled);
virtual void OnKillFocus(HWND hNewWnd, bool& bHandled);
};
#include "CeLabel.inl"
#endif // __CeLabel_h__