#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 #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 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_)