mainframefiledroptarget.h

来自「一个使用wtl写的完整的多窗口浏览器」· C头文件 代码 · 共 51 行

H
51
字号

#pragma once

template <class T>
class CMainFrameFileDropTarget : public IDropTargetImpl<T>
{
public:
	bool m_bDragAccept;

	DROPEFFECT OnDragEnter(IDataObject* pDataObject, DWORD dwKeyState, CPoint point)
	{
		m_bDragAccept = _MtlIsHlinkDataObject(pDataObject);
		return _MtlStandardDropEffect(dwKeyState);
	}
	DROPEFFECT OnDragOver(IDataObject* pDataObject, DWORD dwKeyState, CPoint point, DROPEFFECT dropOkEffect)
	{
		if (!m_bDragAccept)
			return DROPEFFECT_NONE;

		return _MtlStandardDropEffect(dwKeyState) | _MtlFollowDropEffect(dropOkEffect) | DROPEFFECT_COPY;
	}
	DROPEFFECT OnDrop(IDataObject* pDataObject,	DROPEFFECT dropEffect,
		DROPEFFECT dropEffectList, CPoint point)
	{
		CSimpleArray<CString> arrFiles;
		T* pT = static_cast<T*>(this);
		if (MtlGetDropFileName(pDataObject, arrFiles)) {
			if (arrFiles.GetSize() == 1) {
				DonutOpenFile(pT->m_hWnd, arrFiles[0], DonutGetStdOpenFlag());
				return DROPEFFECT_COPY;
			}

			for (int i = 0; i < arrFiles.GetSize(); ++i) {
				DonutOpenFile(pT->m_hWnd, arrFiles[i]);
			}
			dropEffect = DROPEFFECT_COPY;
			return true;
		}

		CString strText;
		if ( MtlGetHGlobalText(pDataObject, strText) ||
			 MtlGetHGlobalText(pDataObject, strText, ::RegisterClipboardFormat(CFSTR_SHELLURL)) )
		{
			DonutOpenFile(pT->m_hWnd, strText, DonutGetStdOpenFlag());
			return DROPEFFECT_COPY;
		}

		return DROPEFFECT_NONE;
	}
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?