亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dropdata.cpp

?? 一個功能強大的代碼編輯器源代碼
?? CPP
字號:
//this file is part of docking functionality for Notepad++
//Copyright (C)2006 Jens Lorenz <jens.plugin.npp@gmx.de>
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either
//version 2 of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#include "DropData.h"
#include <Commctrl.h>
#include <shlobj.h>
#include "dockingResource.h"

DropData::DropData(HWND hWnd, DockingCont* pCont)
{
	_lRefCount		= 1;
	_pCont			= pCont;
	_hWnd			= hWnd;
	_pAreasData		= NULL;
	_hTab			= _pCont->getTabWnd();
	_hCaption		= _pCont->getCaptionWnd();
}

DropData::~DropData()
{
	if (_pAreasData != NULL)
	{
		delete [] _pAreasData;
	}
}

HRESULT __stdcall DropData::QueryInterface (REFIID iid, void ** ppvObject)
{
	if(iid == IID_IDropTarget || iid == IID_IUnknown)
	{
		AddRef();
		*ppvObject = this;
		return S_OK;
	}
	else
	{
		*ppvObject = 0;
		return E_NOINTERFACE;
	}
}

ULONG __stdcall DropData::AddRef(void)
{
	return InterlockedIncrement(&_lRefCount);
}	

ULONG __stdcall DropData::Release(void)
{
	LONG count = InterlockedDecrement(&_lRefCount);
		
	if(count == 0)
	{
		delete this;
		return 0;
	}
	else
	{
		return count;
	}
}

DWORD DropData::DropEffect(DWORD grfKeyState, POINTL ptl, DWORD dwAllowed)
{
	DWORD		dwEffect	= DROPEFFECT_NONE;
	POINT		pt			= {ptl.x, ptl.y};

	for (int iElem = 0; iElem < _iElemCnt; iElem++)
	{
		/* test if cursor points in a rect */
		if (::PtInRect(&_pAreasData[iElem].rcDropArea, pt) == TRUE)
		{
			dwEffect = DROPEFFECT_COPY;
			break;
		}
	}
	
	return dwEffect;
}

HRESULT __stdcall DropData::DragEnter(IDataObject * pDataObject, DWORD grfKeyState, POINTL ptl, DWORD * pdwEffect)
{
	int			iItem		= 0;
	int			iItemCnt	= 0;
	TCITEM		tcItem		= {0};

	/* initial element count */
	_iElemCnt				= 0;

	/* get amount of element in tab and add caption */
	iItemCnt = ::SendMessage(_hTab, TCM_GETITEMCOUNT, 0, 0) + 1;

	/* allocate resources */
	_pAreasData = (tAreaData*) new tAreaData[iItemCnt];

	/* get allowed areas */
	tcItem.mask		= TCIF_PARAM;

	if (::IsWindowVisible(_hTab) == TRUE)
	{
		/* get possible areas for all tabs */
		for (iItem = 0; iItem < (iItemCnt - 1); iItem++)
		{
			::SendMessage(_hTab, TCM_GETITEM, iItem, (LPARAM)&tcItem);
			
			if (((tTbData*)tcItem.lParam)->uMask & DWS_ACCEPTDATA)
			{
				if (pDataObject->QueryGetData(((tTbData*)tcItem.lParam)->pFETC) == S_OK)
				{
					_pAreasData[_iElemCnt].targetWnd = ((tTbData*)tcItem.lParam)->hClient;
					::SendMessage(_hTab, TCM_GETITEMRECT, iItem, (LPARAM)&_pAreasData[_iElemCnt].rcDropArea);
					ClientToScreen(_hTab, &_pAreasData[_iElemCnt++].rcDropArea);
				}
			}
		}
	}

	/* get caption area when current selected tab allowes data drop */
	iItem = ::SendMessage(_hTab, TCM_GETCURSEL, 0, 0);
	::SendMessage(_hTab, TCM_GETITEM, iItem, (LPARAM)&tcItem);
	if (((tTbData*)tcItem.lParam)->uMask & DWS_ACCEPTDATA)
	{
		if (pDataObject->QueryGetData(((tTbData*)tcItem.lParam)->pFETC) == S_OK)
		{
			_pAreasData[_iElemCnt].targetWnd = ((tTbData*)tcItem.lParam)->hClient;

			if (_pCont->isFloating())
			{
				_pCont->getWindowRect(_pAreasData[_iElemCnt].rcDropArea);
				_pAreasData[_iElemCnt].rcDropArea.bottom = _pAreasData[_iElemCnt].rcDropArea.top + 24;
			}
			else
			{
				::GetWindowRect(_hCaption, &_pAreasData[_iElemCnt].rcDropArea);
			}
			_iElemCnt++;
		}
	}

	*pdwEffect = DropEffect(grfKeyState, ptl, *pdwEffect);

	return S_OK;
}

HRESULT __stdcall DropData::DragOver(DWORD grfKeyState, POINTL ptl, DWORD * pdwEffect)
{
	*pdwEffect = DropEffect(grfKeyState, ptl, *pdwEffect);

	return S_OK;
}

HRESULT __stdcall DropData::DragLeave(void)
{
	return S_OK;
}

HRESULT __stdcall DropData::Drop(IDataObject * pDataObject, DWORD grfKeyState, POINTL ptl, DWORD * pdwEffect)
{
	POINT		pt	= {ptl.x, ptl.y};

	/* initial elements */
	*pdwEffect = DROPEFFECT_NONE;

	for (int iElem = 0; iElem < _iElemCnt; iElem++)
	{
		/* test if cursor points in a rect */
		if (::PtInRect(&_pAreasData[iElem].rcDropArea, (POINT)pt) == TRUE)
		{
			/* notify child windows */
			::SendMessage(_pAreasData[iElem].targetWnd, LMM_DROPDATA, 0, (LPARAM)pDataObject);

			*pdwEffect = DROPEFFECT_COPY;
			break;
		}
	}

	return S_OK;
}

void RegisterDropWindow(HWND hwnd, DockingCont* pCont, IDropTarget **ppDropTarget)
{
	DropData *pDropTarget = new DropData(hwnd, pCont);

	// tell OLE that the window is a drop target
	::RegisterDragDrop(hwnd, pDropTarget);

	*ppDropTarget = pDropTarget;
}

void UnregisterDropWindow(HWND hwnd, IDropTarget *pDropTarget)
{
	// remove drag+drop
	::RevokeDragDrop(hwnd);

	// remove the strong lock
	CoLockObjectExternal(pDropTarget, FALSE, TRUE);

	// release our own reference
	pDropTarget->Release();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月激情综合网| 日本不卡不码高清免费观看| 欧美一区二区成人| 欧美理论在线播放| 欧美电影影音先锋| 欧美一区二区私人影院日本| 精品视频123区在线观看| 欧美亚洲国产一区二区三区va | 国产美女av一区二区三区| 日本不卡视频一二三区| 国内精品视频一区二区三区八戒| 麻豆精品在线播放| 国产精品自在在线| 成人激情免费网站| 91福利精品第一导航| 69久久夜色精品国产69蝌蚪网| 欧美精品亚洲二区| 国产校园另类小说区| 中文字幕精品在线不卡| 亚洲乱码日产精品bd| 午夜a成v人精品| 狠狠色丁香九九婷婷综合五月| 成人免费视频视频在线观看免费 | 亚洲国产精品成人综合色在线婷婷| 国产日韩欧美麻豆| 亚洲影视资源网| 蜜臀a∨国产成人精品| 粉嫩av一区二区三区在线播放| 一本色道久久综合狠狠躁的推荐 | 捆绑调教美女网站视频一区| 国产精品羞羞答答xxdd| 在线视频欧美精品| 2020国产精品自拍| 亚洲美女视频一区| 韩国午夜理伦三级不卡影院| 色综合久久久久综合体| 精品国精品自拍自在线| 精品日韩99亚洲| 亚洲国产美女搞黄色| 国产成人在线视频网址| 欧美男女性生活在线直播观看| 久久久99免费| 日韩精彩视频在线观看| 91视频免费看| 久久综合九色欧美综合狠狠| 亚洲免费视频成人| 国产精品综合av一区二区国产馆| 欧美性感一区二区三区| 国产色91在线| 久久机这里只有精品| 欧美日韩一卡二卡三卡| 亚洲人成伊人成综合网小说| 韩日av一区二区| 欧美一区二区在线免费播放| 一区二区欧美视频| jiyouzz国产精品久久| 精品电影一区二区| 免费高清成人在线| 欧美老肥妇做.爰bbww| 亚洲人成伊人成综合网小说| 国产一区亚洲一区| 精品国产露脸精彩对白| 日韩电影在线免费观看| 欧美性感一区二区三区| 一区二区三区蜜桃| 欧美性xxxxxx少妇| 亚洲精品大片www| 91精彩视频在线观看| 亚洲另类色综合网站| 91免费视频观看| 自拍偷在线精品自拍偷无码专区| 不卡视频一二三| 亚洲日穴在线视频| 波多野结衣欧美| 亚洲激情中文1区| 色哟哟精品一区| 亚洲国产精品精华液网站| 欧美日韩综合在线| 日本欧美在线观看| 久久综合999| 国产成人精品亚洲午夜麻豆| 中文字幕成人在线观看| 粉嫩av一区二区三区在线播放 | 精品一区二区三区在线播放| 精品久久一二三区| 国产成人啪免费观看软件| 国产亚洲精品福利| 色系网站成人免费| 亚欧色一区w666天堂| 日韩欧美中文字幕一区| 国产毛片精品一区| 一区二区三区在线观看国产| 欧美日韩国产中文| 激情欧美日韩一区二区| 中文字幕一区在线观看| 在线观看国产一区二区| 日本不卡视频一二三区| 国产精品免费av| 欧美在线小视频| 国产一区二区在线看| 中文字幕在线观看不卡| 欧美日韩国产高清一区| 精品一区二区三区香蕉蜜桃| 国产精品超碰97尤物18| 欧美丰满一区二区免费视频| 久久成人免费网| 4438x成人网最大色成网站| 亚洲激情欧美激情| 69堂精品视频| 成人黄页在线观看| 欧美a级一区二区| 国产精品欧美一区二区三区| 欧美日韩视频一区二区| 国内一区二区在线| 一区二区三区国产精华| 2024国产精品| 欧美日韩一区三区四区| 成人免费福利片| 美女视频黄a大片欧美| 国产精品欧美极品| 日韩欧美黄色影院| 91精彩视频在线观看| 高清在线不卡av| 美国一区二区三区在线播放| 亚洲免费观看高清| 国产午夜久久久久| 欧美一区二区三区免费在线看| 成人av免费观看| 国产主播一区二区| 日韩制服丝袜先锋影音| 一区二区三区在线视频播放| 国产日韩欧美精品一区| 日韩精品一区二区三区视频在线观看 | 亚洲男人电影天堂| 国产欧美日韩麻豆91| 欧美α欧美αv大片| 欧美日韩国产123区| 色哟哟国产精品| 色综合婷婷久久| jiyouzz国产精品久久| 国产成人av电影| 国产精品中文字幕一区二区三区| 青青草伊人久久| 婷婷开心久久网| 亚洲午夜久久久久久久久久久| 国产精品久久久久三级| 欧美经典一区二区| 欧美韩日一区二区三区| 国产精品午夜电影| 国产精品久久久久久久久晋中 | 成人黄色综合网站| 丁香婷婷综合色啪| 99这里只有精品| 9l国产精品久久久久麻豆| 成人午夜在线播放| 不卡电影免费在线播放一区| 成人免费av网站| 94色蜜桃网一区二区三区| 97精品视频在线观看自产线路二| 99精品黄色片免费大全| 色8久久精品久久久久久蜜| 欧美在线|欧美| 欧美一区二区网站| 2024国产精品| 亚洲私人影院在线观看| 亚洲综合网站在线观看| 蜜桃av一区二区三区电影| 国产毛片精品国产一区二区三区| 成人深夜视频在线观看| 欧美性生交片4| 日韩精品一区二区三区在线| 久久先锋影音av鲁色资源| 国产精品三级视频| 亚洲不卡av一区二区三区| 捆绑紧缚一区二区三区视频 | 一本久道久久综合中文字幕| 日本电影欧美片| 日韩美女天天操| 中文字幕av一区 二区| 亚洲小说欧美激情另类| 久久99蜜桃精品| 91色九色蝌蚪| 日韩欧美国产电影| 亚洲欧美视频在线观看视频| 亚洲一二三四在线| 国产不卡一区视频| 欧美色图12p| 国产视频一区在线播放| 亚洲高清免费视频| 国产成人精品亚洲日本在线桃色| 91精彩视频在线| 中文字幕乱码亚洲精品一区| 首页国产丝袜综合| 99久久精品免费看国产| 精品日韩一区二区三区免费视频| 一区二区三区视频在线观看| 国产综合色精品一区二区三区| 欧美三级日韩三级| 亚洲人成电影网站色mp4| 国产乱码字幕精品高清av|