LAPTOP-T815PCOQ\25526
2024-11-15 b76cfabb985d364850a04c8a70f5c04293357da4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
#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_)