#ifndef _CELLCTRL_H_
|
#define _CELLCTRL_H_
|
#define _CELLCTRL_LIB_H_
|
#if _MSC_VER > 1000
|
#pragma once
|
#endif // _MSC_VER > 1000
|
// CellCtrl.h : header file
|
//
|
#include "HeadCtrl.h"
|
|
#ifndef __AFXTEMPL_H
|
#include <afxtempl.h>
|
#endif
|
|
/////////////////////////////////////////////////////////////////////////////
|
// CCellCtrl window
|
#define CCMSG_USE_EDIT WM_USER+1
|
#define CCMSG_MOVE_EDIT WM_USER+2
|
#define CCMSG_RECT_CHANGE WM_USER+3
|
//#define CCMSG_SEL_PRINT WM_USER+4
|
#define CCMSG_LIST_PRINT WM_USER+5
|
#define CCMSG_FONT_CHANGE WM_USER+6
|
#define CCMSG_SAVE_FILE WM_USER+7
|
#define CCMSG_OPEN_EXCEL WM_USER+8
|
#define CCMSG_OPEN_LIST WM_USER+9
|
#define CCMSG_MODIFY_EDIT WM_USER+10
|
#define CCMSG_COPY_CLIPBOARD WM_USER+11
|
#define CCMSG_PASTE_CLIPBOARD WM_USER+12
|
#define CCMSG_CUT_CLIPBOARD WM_USER+13
|
#define CCMSG_SELITEM_DELETE WM_USER+14
|
#define CCMSG_BACK_COLOR WM_USER+15
|
#define CCMSG_TEXT_COLOR WM_USER+16
|
#define CCMSG_LIST WM_USER-1
|
|
const COLORREF clrTEXT=0x00000000;
|
const COLORREF clrBACK=0x00FFFFFF;
|
|
class AFX_EXT_CLASS CCellCtrl : public CListCtrl
|
{
|
public:
|
struct LOCATION
|
{
|
int nItem;
|
int nSubItem;
|
};
|
|
struct CELLCOLOR
|
{
|
COLORREF txtclr;
|
COLORREF bkgclr;
|
};
|
|
struct CELLINFO
|
{
|
int nId; //CONTROL ID
|
int nItem; //LIST ITEM
|
int nSubItem; //LIST SUBITEM
|
CELLCOLOR oldClr; //¼³Á¤ÀüÀÇ »ö
|
CELLCOLOR newClr; //¼³Á¤ÈÄÀÇ »ö
|
LPWSTR lpstrOld; //ÀÔ·ÂÀü ¹®ÀÚ¿
|
LPWSTR lpstrNew; //ÀÔ·ÂÇÑ ¹®ÀÚ¿
|
};
|
|
struct CELLDATA
|
{
|
COLORREF txtclr;//±ÛÀÚ»ö
|
COLORREF bkgclr;//¹è°æ»ö
|
bool bUseCtl;//ÄÁÆ®·Ñ »ç¿ë
|
bool bTurn; //¹Ý¦¹Ý¦
|
DWORD dwData;
|
};
|
|
class CCellData : public CELLDATA
|
{
|
public:
|
CCellData()
|
{
|
bTurn =false;
|
bUseCtl=false;//ÄÁÆ®·Ñ »ç¿ë
|
txtclr=clrTEXT;
|
bkgclr=clrBACK;
|
dwData=0;
|
}
|
|
CCellData(COLORREF TextColor, COLORREF BackColor,
|
bool bTurning, DWORD dwUserData=0)
|
{
|
bTurn =bTurning;
|
bUseCtl=false;//ÄÁÆ®·Ñ »ç¿ë
|
txtclr=TextColor;
|
bkgclr=BackColor;
|
dwData=dwUserData;
|
}
|
virtual ~CCellData(){;}
|
void operator=(const CELLDATA& cc)
|
{
|
(CELLDATA)*this=cc;
|
}
|
};
|
typedef CArray<CCellData, CCellData&> CCSArray;
|
virtual void SerializeAllInfo(CArchive& ar);
|
|
protected:
|
CBrush m_brush; //¿¡µðÆ®¹Ú½ºÀÇ ¹è°æ
|
CEdit m_edit; //¿¡µðÆ® ¹Ú½º
|
BOOL m_bCanEdit;
|
CFont* m_pFont; //¸®½ºÆ® ÆùÆ®
|
|
protected:
|
void Printing(CDC* pDC);//¸®½ºÆ®¸¦ ÇÁ¸°Æ®·Î Ãâ·ÂÇÑ´Ù.
|
CRect GetLogRect(CDC* pDC, int nItem, int nSubItem);//¸®½ºÆ® ¼¿RectÀ» ºñÀ²¿¡ µû¶ó º¯È¯ÇÑ´Ù.
|
void SetCrtToPrintRate(CDC* pDC);//ȸé°ú ÀåÇ¥ÀÇ ºñÀ²À» ±¸ÇÑ´Ù.
|
int GetCrtWidth();//ȸé(¸®½ºÆ®)ÀÇ Æø°ªÀ» ¸®ÅÏÇÑ´Ù.
|
|
protected:
|
BOOL m_bSort;//Sort Flag
|
BOOL m_bTime;//SetTimer(,,)¸¦ ¼³Á¤Çß´ÂÁö ¿©ºÎ
|
BOOL m_bTurnDraw;//¸®½ºÆ® °»½Å½Ã ¼¿ÀÇ »ö±òÀÌ º¯ÇؾßÇÏ´ÂÁö ¿©ºÎ
|
UINT m_nClipOptin;//Ŭ¸³º¸µå ¿É¼Ç
|
CHeadCtrl m_head;//HeaderCtrl
|
LOCATION m_mcLct;//right mouse click
|
LOCATION m_edLct;//edit location
|
UINT m_nStartColEdit;
|
UINT m_nEndColEdit;
|
CMenu m_menu;//¸®½ºÆ® ¸Þ´º
|
CMenu* m_pUmenu;//»ç¿ëÀÚ Á¤ÀÇ ¸Þ´º
|
CELLINFO* m_pInfo;
|
|
//¼³Á¤µÈ Item Data¸¦ »èÁ¦ÇÑ´Ù.
|
void DeleteItemData(int nItem);
|
void DeleteAllItemData();
|
|
//¿¡µðÆ®¹Ú½ºÀÇ Data¸¦ ¼öÁ¤Çß´ÂÁö ¿©ºÎ¸¦ üũÇϰí
|
//ºÎ¸ðÀ©µµ¿ì·Î ¸Þ½ÃÁö¸¦ º¸³½´Ù.
|
BOOL IsModifyEdit(int nItem, int nSubItem);
|
|
//¾ÆÀÌÅÛÀÇ ¿µ¿ªÀÌ º¯ÇßÀ» °æ¿ì¿¡ ¿¡µðÆ®¹Ú½ºÀÇ Å©±âµµ º¯ÇØ¾ß ÇϹǷÎ
|
//´ÙÀ½ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿¡µðÆ®¹Ú½º¸¦ °»½ÅÇÑ´Ù.
|
void UpdateEdit(int nItem, int nSubItem);
|
|
//¼¿ÀÇ ¿µ¿ªÀ» °»½ÅÇÑ´Ù.
|
void UpdateCell(int nItem, int nSubItem);
|
|
//¼¿ÀÇ Ä÷¯°¡ º¯Çϵµ·Ï ¼³Á¤µÇ¾î ÀÖ´ÂÁö ¿©ºÎ
|
bool IsTurning(int nItem, int nSubItem);
|
|
//¸®½ºÆ®ÀÇ Á¤·Ä left,right,center Çü½ÄÀ» ±¸ÇÑ´Ù.
|
int GetColumnFmt(int nSubItem);
|
|
public:
|
enum ListOption
|
{
|
//MENU OPTION
|
menuNO = 0x00000000,
|
menuEXCEL = 0x00000001,
|
menuLIST = 0x00000002,
|
menuPRINT = 0x00000004,
|
menuINPUT = 0x00000010,
|
menuSAVE = 0x00000020,
|
menuFONT = 0x00000040,
|
menuBACKCOLOR= 0x00000100,
|
menuTEXTCOLOR= 0x00000200,
|
menuCOPY = 0x00010000,
|
menuPASTE = 0x00020000,
|
menuCUT = 0x00040000,
|
menuDELETE = 0x00080000,
|
menuCOMMON = 0x000000FF,
|
menuCLIP = 0x000F0000,
|
menuALL = 0x000FFFFF,
|
menuAceept = 0x00010000,
|
|
//CLIPBOARD OPTION
|
clipNO = 0x00000000,
|
clipCOPY = 0x00000001,
|
clipPASTE = 0x00000002,
|
clipCUT = 0x00000004,
|
clipDELETE = 0x00000008,
|
clipALL = 0x0000FFFF,
|
};
|
CCellCtrl();
|
|
//Sort function
|
void EnableSort(BOOL bSort=TRUE){m_bSort=bSort;}
|
void EnableEdit(BOOL bCanEdit) { m_bCanEdit = bCanEdit; }
|
|
//menu function
|
BOOL CCellCtrl::SetMenu(CMenu* pMenu=NULL){m_pUmenu=pMenu; return TRUE;}
|
void UseMenu( UINT nOption=menuCOMMON/*default=menuCOMMON*/);
|
|
//editbox function
|
BOOL SetEditMovable( int nStartCol, int nEndCol);
|
BOOL UseEdit( int nItem, int nSubItem);
|
void EditCtrl( MSG pMsg );
|
|
//RectÀÌ º¯Çß´ÂÁö ÆÇ´ÜÇÑ´Ù.
|
BOOL IsSubRectChange();
|
|
//¸®½ºÆ®¸¦ ÇÁ¸°Æ®·Î Ãâ·ÂÇÑ´Ù.
|
BOOL ListPrinting(BOOL bDialog, int Orientation=1/*°¡·Î=1, ¼¼·Î=2*/);
|
|
//keystate function
|
BOOL IsMultiKey();//shiftŰ, ctrl۵îÀÌ ´·¯Á³´ÂÁö checkÇÑ´Ù
|
|
//font function
|
void SetLogFont(LOGFONT logfont);//ÀåÇ¥ ÆùÆ®
|
void SetListFont(LOGFONT* logfont);//¸®½ºÆ® ÆùÆ®
|
|
//
|
int GetSubItemCount(); //Ä÷³¼ö¸¦ ±¸ÇÑ´Ù.
|
int GetLeftSubItem(); //ÁÂÃøÀ¸·ÎºÎÅÍ È°¼ºÈµÈ Ä÷³À» ã´Â´Ù.
|
int GetRightSubItem(); //¿ìÃøÀ¸·ÎºÎÅÍ È°¼ºÈµÈ Ä÷³À» ã´Â´Ù.
|
|
//»ç¿ëÀÚ°¡ ÇÊ¿äÇÑ °ªÀ» ÀúÀåÇÏ°í ºÒ·¯¿Ã¼ö ÀÖ´Â ÇÔ¼öÀÌ´Ù.
|
BOOL SetCellData(int nItem, int nSubItem, DWORD dwData);
|
DWORD GetCellData(int nItem, int nSubItem);
|
|
//color function
|
BOOL SetItemTextColor(int nItem, COLORREF color);
|
BOOL SetItemTextColor(int nItem, int nSubItem, COLORREF color);
|
BOOL SetItemBkColor(int nItem, COLORREF color, bool bTurn=false);
|
BOOL SetItemBkColor(int nItem, int nSubItem, COLORREF color, bool bTurn=false);
|
BOOL GetItemColor(int nItem, int nSubItem, CELLCOLOR* pCellClr);
|
|
//Clipboard function
|
void UseClipboard( UINT nOption=clipALL/*default=clipALL*/){m_nClipOptin=nOption;}
|
void CopyClipboard();// Ctrl C (select item copy)
|
void PasteClipboard();//Ctrl V (paste)
|
void CutClipboard();//Ctrl V (paste)
|
void SelectItemDelete();
|
|
BOOL DeleteColumn( int nCol );
|
int InsertColumn(int nCol, LPCTSTR lpstTxt,int nFormat=LVCFMT_LEFT,
|
int nWidth = -1, int nSubItem = -1);
|
|
//HeaderCtrl function
|
BOOL GetSafeHead();
|
int GetHeadHeight();
|
int GetHeadItemCount();
|
void SetHeadItemCount(int nCount);
|
void SetHeadItemText(int nItem, int nSubItem, LPCTSTR lpstTxt);
|
CString GetHeadItemText(int nItem, int nSubItem);
|
void SetHeadItemMerge(int nsItem, int nsSubItem,
|
int neItem, int neSubItem);
|
|
protected:
|
|
|
// Overrides
|
// ClassWizard generated virtual function overrides
|
//{{AFX_VIRTUAL(CCellCtrl)
|
public:
|
virtual void Serialize(CArchive& ar);
|
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
protected:
|
//}}AFX_VIRTUAL
|
|
// Implementation
|
public:
|
void SaveFile();
|
virtual ~CCellCtrl();
|
|
// Generated message map functions
|
protected:
|
|
//{{AFX_MSG(CCellCtrl)
|
// afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
|
afx_msg void OnRclick(NMHDR* pNMHDR, LRESULT* pResult);
|
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
|
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
|
afx_msg void OnInsertitem(NMHDR* pNMHDR, LRESULT* pResult);
|
afx_msg void OnDeleteitem(NMHDR* pNMHDR, LRESULT* pResult);
|
afx_msg void OnDeleteallitems(NMHDR* pNMHDR, LRESULT* pResult);
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
afx_msg void OnDestroy();
|
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
//}}AFX_MSG
|
afx_msg void OnCustomdrawList ( NMHDR* pNMHDR, LRESULT* pResult );
|
afx_msg void OnSaveFile();
|
afx_msg void OnOpenExcel();
|
afx_msg void OnOpenList();
|
afx_msg void OnUseEdit();
|
afx_msg void OnMoveEdit();
|
afx_msg void OnRectchange();
|
afx_msg void OnListPrint();
|
afx_msg void OnFontChange();
|
afx_msg void OnBackColor();
|
afx_msg void OnTextColor();
|
|
afx_msg void OnCopyClipboard() { CopyClipboard(); }
|
afx_msg void OnPasteClipboard() { PasteClipboard(); }
|
afx_msg void OnCutClipboard() { CutClipboard(); }
|
afx_msg void OnSelItemDelete() { SelectItemDelete(); }
|
|
DECLARE_MESSAGE_MAP()
|
};
|
/////////////////////////////////////////////////////////////////////////////
|
|
//{{AFX_INSERT_LOCATION}}
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
#endif // !defined(_CELLCTRL_H_)
|