// ManageData.h : Declaration of the CManageData
#ifndef __MANAGEDATA_H_
#define __MANAGEDATA_H_
#include "resource.h" // main symbols
class CManageData;
class CSmartGrid;
class CSmartEdit :
public CWindowImpl< CSmartEdit >
{
public:
virtual BOOL PreTranslateAccelerator(LPMSG pMsg, HRESULT& hRet);
BEGIN_MSG_MAP(CSmartEdit)
MESSAGE_HANDLER(WM_CREATE,OnCreate)
MESSAGE_HANDLER(WM_DESTROY,OnDestroy)
MESSAGE_HANDLER(WM_SIZE,OnSize)
MESSAGE_HANDLER(WM_CTLCOLOREDIT,OnCtlColorEdit)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CAPTURECHANGED,OnCaptureChanged)
MESSAGE_HANDLER(WM_RBUTTONDOWN,OnRButtonDown)
MESSAGE_HANDLER(WM_LBUTTONDOWN,OnLButtonDown)
MESSAGE_HANDLER(WM_RBUTTONDBLCLK,OnRButtonDblClk)
MESSAGE_HANDLER(WM_LBUTTONDBLCLK,OnLButtonDblClk)
MESSAGE_HANDLER(WM_KEYDOWN,OnKeyDown)
END_MSG_MAP()
public:
CManageData* m_pManageData;
CSmartEdit( CManageData* pManageData );
void SetText( CComBSTR& bstrText );
CComBSTR GetText();
protected:
CContainedWindow m_wndEditWindow;
// This window
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtlColorEdit(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// Edit
LRESULT OnCaptureChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnRButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
};
class CSmartChoice :
public CWindowImpl< CSmartChoice >
{
public:
virtual BOOL PreTranslateAccelerator(LPMSG pMsg, HRESULT& hRet);
BEGIN_MSG_MAP(CSmartChoice)
MESSAGE_HANDLER(WM_CREATE,OnCreate)
MESSAGE_HANDLER(WM_DESTROY,OnDestroy)
MESSAGE_HANDLER(WM_SIZE,OnSize)
MESSAGE_HANDLER(WM_ERASEBKGND,OnEraseBkgnd)
MESSAGE_HANDLER(WM_CTLCOLOREDIT,OnCtlColorEdit)
MESSAGE_HANDLER(WM_CTLCOLORLISTBOX,OnCtlColorListBox)
MESSAGE_HANDLER(WM_COMMAND,OnCommand)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CAPTURECHANGED,OnCaptureChanged)
MESSAGE_HANDLER(WM_RBUTTONDOWN,OnRButtonDown)
MESSAGE_HANDLER(WM_LBUTTONDOWN,OnLButtonDown)
MESSAGE_HANDLER(WM_RBUTTONDBLCLK,OnRButtonDblClk)
MESSAGE_HANDLER(WM_LBUTTONDBLCLK,OnLButtonDblClk)
MESSAGE_HANDLER(WM_KEYDOWN,OnKeyDown)
END_MSG_MAP()
public:
CManageData* m_pManageData;
BOOL m_bStrict;
CSmartChoice( CManageData* pManageData, BOOL bStrict = FALSE );
void SetText( CComBSTR& bstrText );
CComBSTR GetText();
void AddItem( CComBSTR& bstrItem );
void SelectItem( CComBSTR& bstrItem );
void ShowDropDown( BOOL bShow );
protected:
CContainedWindow m_wndEditWindow;
// This window
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtlColorEdit(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtlColorListBox(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// Edit
LRESULT OnCaptureChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnRButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
};
/////////////////////////////////////////////////////////////////////////////
// CManageData
class CManageData
{
public:
CSmartGrid* m_pSmartGrid;
CManageData();
virtual ~CManageData();
void UpdateChanges();
void CancelEditing();
public:
void Edit(VARIANT* pvarData, ColumnDefinition* pDefinition, VARTYPE vtType, HWND hWnd, RECT rcBounds, CSmartGrid* pSmartGrid);
void Draw(VARIANT* pvarData, ColumnDefinition* pDefinition, HDC hDC, RECT rcBounds, CSmartGrid* pSmartGrid);
protected:
typedef enum tagEditState { EditState_Begin, EditState_Update, EditState_Cancel } EditState;
HBITMAP m_hbmpChk_Checked, m_hbmpChk_UnChecked, m_hbmpUnknown, m_hbmpNull, m_hbmpObject;
// View
void Draw_Bool( unsigned char val, HDC hDC, RECT& rcBounds );
void Draw_Integer( long val, HDC hDC, RECT& rcBounds );
void Draw_Real( long double val, HDC hDC, RECT& rcBounds );
void Draw_Code( long val, HDC hDC, RECT& rcBounds );
void Draw_Currency( CY val, HDC hDC, RECT& rcBounds );
void Draw_Date( DATE val, HDC hDC, RECT& rcBounds );
void Draw_String( BSTR val, HDC hDC, RECT& rcBounds );
void Draw_Object( CComPtr< IUnknown > val, HDC hDC, RECT& rcBounds );
void Draw_Null( VARIANT val, HDC hDC, RECT& rcBounds );
void Draw_Unknown( VARIANT val, HDC hDC, RECT& rcBounds );
void Draw_Option( BSTR val, HDC hDC, RECT& rcBounds );
void Draw_StrictOption( BSTR val, HDC hDC, RECT& rcBounds );
// Edit
typedef void (CManageData::*EditFunction)( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = 1, HWND hWnd = NULL, RECT* prcBounds = NULL);
EditFunction m_pEditFunction;
void Edit_Bool( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Integer( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Real( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Code( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Currency( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Date( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_String( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Object( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Null( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Unknown( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Option( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_StrictOption( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
CSmartEdit m_wndSmartEdit;
CSmartChoice m_wndOption;
CSmartChoice m_wndStrictOption;
static long m_nImageWidth;
static long m_nImageHeight;
};
/*
class ATL_NO_VTABLE CManageData :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CManageData, &CLSID_ManageData>,
public IManageData
{
public:
CSmartGrid* m_pSmartGrid;
CManageData();
HRESULT FinalConstruct();
HRESULT FinalRelease();
void UpdateChanges();
void CancelEditing();
DECLARE_REGISTRY_RESOURCEID(IDR_MANAGEDATA)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CManageData)
COM_INTERFACE_ENTRY(IManageData)
END_COM_MAP()
// IManageData
public:
STDMETHOD(Edit)(VARIANT* pvarData, ColumnDefinition* pDefinition, VARTYPE vtType, HWND hWnd, RECT rcBounds, CSmartGrid* pSmartGrid);
STDMETHOD(Draw)(VARIANT* pvarData, ColumnDefinition* pDefinition, HDC hDC, RECT rcBounds, CSmartGrid* pSmartGrid);
protected:
typedef enum tagEditState { EditState_Begin, EditState_Update, EditState_Cancel } EditState;
HBITMAP m_hbmpChk_Checked, m_hbmpChk_UnChecked, m_hbmpUnknown, m_hbmpNull, m_hbmpObject;
// View
void Draw_Bool( unsigned char val, HDC hDC, RECT& rcBounds );
void Draw_Integer( long val, HDC hDC, RECT& rcBounds );
void Draw_Real( long double val, HDC hDC, RECT& rcBounds );
void Draw_Code( long val, HDC hDC, RECT& rcBounds );
void Draw_Currency( CY val, HDC hDC, RECT& rcBounds );
void Draw_Date( DATE val, HDC hDC, RECT& rcBounds );
void Draw_String( BSTR val, HDC hDC, RECT& rcBounds );
void Draw_Object( CComPtr< IUnknown > val, HDC hDC, RECT& rcBounds );
void Draw_Null( VARIANT val, HDC hDC, RECT& rcBounds );
void Draw_Unknown( VARIANT val, HDC hDC, RECT& rcBounds );
void Draw_Option( BSTR val, HDC hDC, RECT& rcBounds );
void Draw_StrictOption( BSTR val, HDC hDC, RECT& rcBounds );
// Edit
typedef void (CManageData::*EditFunction)( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = 1, HWND hWnd = NULL, RECT* prcBounds = NULL);
EditFunction m_pEditFunction;
void Edit_Bool( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Integer( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Real( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Code( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Currency( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Date( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_String( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Object( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Null( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Unknown( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_Option( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
void Edit_StrictOption( EditState state, VARIANT *val = NULL, ColumnDefinition* pDefinition = NULL, VARTYPE vtType = VT_NULL, HWND hWnd = NULL, RECT* prcBounds = NULL );
CSmartEdit m_wndSmartEdit;
CSmartChoice m_wndOption;
CSmartChoice m_wndStrictOption;
static long m_nImageWidth;
static long m_nImageHeight;
};
*/
#endif //__MANAGEDATA_H_