OSDN Git Service

Update Branch Key and add reflog help
[tortoisegit/TortoiseGitJp.git] / src / Utils / DropFiles.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2006-2007 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #pragma once\r
20 \r
21 #ifndef __DROPFILES_H__\r
22 #define __DROPFILES_H__\r
23 \r
24 #include <shlobj.h>\r
25 #include <afxcoll.h>\r
26 \r
27 /**\r
28  * \ingroup Utils\r
29  * Use this class to create the DROPFILES structure which is needed to\r
30  * support drag and drop of file names to other applications.\r
31  * Based on an example by Thomas Blenkers.\r
32  */\r
33 class CDropFiles\r
34 {\r
35 public:\r
36         CDropFiles();\r
37         ~CDropFiles();\r
38 \r
39         /**\r
40          * Add a file with an absolute file name. This file will later be\r
41          * included the DROPFILES structure.\r
42          */\r
43         void AddFile(const CString &sFile);\r
44 \r
45         /**\r
46          * Returns the number of files which have been added\r
47          */\r
48         INT_PTR GetCount();\r
49 \r
50         /**\r
51          * Call this method when dragging begins. It will fill\r
52          * the DROPFILES structure with the files previously\r
53          * added with AddFile(...)\r
54          */\r
55         void CreateStructure();\r
56 \r
57 protected:\r
58         /**\r
59          * CreateBuffer must be called once when all files have been added\r
60          */\r
61         void CreateBuffer();\r
62 \r
63         /**\r
64          * Returns a pointer to the buffer containing the DROPFILES\r
65          * structure\r
66          */\r
67         void* GetBuffer() const;\r
68 \r
69         /**\r
70          * Returns the size of the buffer in bytes\r
71          */\r
72         int GetBufferSize() const;\r
73 \r
74 protected:\r
75         CStringArray m_arFiles;\r
76         \r
77         char* m_pBuffer;\r
78         int      m_nBufferSize;\r
79 };\r
80 \r
81 #endif\r