Click here to Skip to main content
15,885,216 members
Articles / Web Development / HTML

A Comprehensive CE Class Library to Replace ATL and MFC

Rate me:
Please Sign up or sign in to vote.
4.48/5 (14 votes)
4 Oct 2000CPOL 278.5K   998   70  
A collection of classes for CE that do not use ATL or MFC, plus an FTP client, database viewer, and sample application that solves beam deflection equations.
#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__

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions