//-----------------------------------------------------------------------------
// File: flexcheckbox.h
//
// Desc: Implements a check box control similar to Windows check box.
//       CFlexCheckBox is derived from CFlexWnd.  The only place that
//       uses CFlxCheckBox is in the keyboard for sorting by assigned
//       keys.
//
// Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
//-----------------------------------------------------------------------------

#ifndef __FLEXCHECKBOX_H__
#define __FLEXCHECKBOX_H__

enum CHECKNOTIFY {
	CHKNOTIFY_UNCHECK,
	CHKNOTIFY_CHECK,
	CHKNOTIFY_MOUSEOVER};

class CFlexCheckBox : public CFlexWnd
{
	LPTSTR m_tszText;  // Text string of the message
	BOOL m_bChecked;
	COLORREF m_rgbText, m_rgbBk, m_rgbSelText, m_rgbSelBk, m_rgbFill, m_rgbLine;
	HFONT m_hFont;

	HWND m_hWndNotify;

	void SetRect();
	void InternalPaint(HDC hDC);

	RECT GetRect(const RECT &);
	RECT GetRect();

	void Notify(int code);

public:
	CFlexCheckBox();
	virtual ~CFlexCheckBox();

	void SetNotify(HWND hWnd) { m_hWndNotify = hWnd; }
	void SetCheck(BOOL bChecked) { m_bChecked = bChecked; }
	BOOL GetCheck() { return m_bChecked; }
	void SetText(LPCTSTR tszText);

	// cosmetics
	void SetFont(HFONT hFont);
	void SetColors(COLORREF text, COLORREF bk, COLORREF seltext, COLORREF selbk, COLORREF fill, COLORREF line);

	virtual void OnPaint(HDC hDC);
	virtual void OnClick(POINT point, WPARAM fwKeys, BOOL bLeft);
	virtual void OnMouseOver(POINT point, WPARAM fwKeys);
};

#endif
