TNB Library
TnbMfcThroughDropFilesMessage.h
[詳解]
1#pragma once
13#include "TnbMfcCommon.h"
14
15
16
17//TNB Library
18namespace TNB {
19namespace MFC {
20
21
22
63template<typename TYP = CStatic>
65{
66 DEFSUPER(TYP);
67public:
68
70 CThroughDropFilesMessageAddinT(void) : m_isDroped(false)
71 {
72 }
73
80 bool IsDroped(void) const
81 {
82 return m_isDroped;
83 }
84
90 static size_t QueryDragFileCount(HDROP hDrop)
91 {
92 return ::DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
93 }
94
102 static CStr QueryDragFileName(HDROP hDrop, INDEX index)
103 {
104 CStr s;
105 size_t count =QueryDragFileCount(hDrop);
106 if ( count > index )
107 {
108 ::DragQueryFile(hDrop, index, s.GetBuffer(MAX_PATH), MAX_PATH);
109 s.ReleaseBuffer();
110 }
111 return s;
112 }
113
114protected:
115
121 virtual void PreSubclassWindow(void)
122 {
123 m_isDroped = false;
124 ::DragAcceptFiles(_super::GetSafeHwnd(), TRUE);
125 _super::PreSubclassWindow();
126 }
127
137 virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
138 {
139 if ( message == WM_DROPFILES )
140 {
141 CWnd* P = _super::GetParent();
142 if ( P != NULL )
143 {
144 m_isDroped = true;
145 LRESULT r = P->SendMessage(message, wParam, lParam);
146 m_isDroped = false;
147 return r;
148 }
149 }
150 return _super::WindowProc(message, wParam, lParam);
151 }
152private:
153 bool m_isDroped;
154};
155
156
157
158}; //MFC
159}; //TNB
160
161
162
MFCコントロール共通のヘッダ
ウィンドウ管理.
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
Definition: TnbStr.h:954
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
Definition: TnbStr.h:914
ファイルドロップメッセージ透過アドインクラス
static CStr QueryDragFileName(HDROP hDrop, INDEX index)
[取得] ドロップファイル名取得.
static size_t QueryDragFileCount(HDROP hDrop)
[取得] ドロップ数取得.
virtual void PreSubclassWindow(void)
[通知] subclassing/unsubclassing functions.
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
[通知] for processing Windows messages.
bool IsDroped(void) const
[確認] ドロップされた?
TNB Library
Definition: TnbDoxyTitle.txt:2