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

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

?? tabbar.cpp

?? 一個功能強大的代碼編輯器源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
					_whichCloseClickDown = -1;	
					return TRUE;
				}
				_whichCloseClickDown = -1;
			}

			break;
		}

		case WM_CAPTURECHANGED :
		{
			if (_isDragging)
			{
				_isDragging = false;
				return TRUE;
			}
			break;
		}

		case WM_DRAWITEM :
		{
			drawItem((DRAWITEMSTRUCT *)lParam);
			return TRUE;
		}

		case WM_KEYDOWN :
		{
			if (wParam == VK_LCONTROL)
				::SetCursor(::LoadCursor(_hInst, MAKEINTRESOURCE(IDC_DRAG_PLUS_TAB)));
			return TRUE;
		}

		case WM_MBUTTONUP:
		{
			::CallWindowProc(_tabBarDefaultProc, hwnd, WM_LBUTTONDOWN, wParam, lParam);

			NMHDR nmhdr;
			nmhdr.hwndFrom = _hSelf;
			nmhdr.code = TCN_TABDELETE;
			nmhdr.idFrom = reinterpret_cast<unsigned int>(this);

			::SendMessage(_hParent, WM_NOTIFY, 0, reinterpret_cast<LPARAM>(&nmhdr));
			return TRUE;
		}

		case WM_LBUTTONDBLCLK :
		{
			::CallWindowProc(_tabBarDefaultProc, hwnd, WM_LBUTTONDOWN, wParam, lParam);
			if (_isDbClk2Close)
			{
				NMHDR nmhdr;
				nmhdr.hwndFrom = _hSelf;
				nmhdr.code = TCN_TABDELETE;
				nmhdr.idFrom = reinterpret_cast<unsigned int>(this);

				::SendMessage(_hParent, WM_NOTIFY, 0, reinterpret_cast<LPARAM>(&nmhdr));
			}
			return TRUE;
		}
	}
	return ::CallWindowProc(_tabBarDefaultProc, hwnd, Message, wParam, lParam);
}

void TabBarPlus::drawItem(DRAWITEMSTRUCT *pDrawItemStruct)
{
	RECT rect = pDrawItemStruct->rcItem;
	
	int nTab = pDrawItemStruct->itemID;
	if (nTab < 0)
	{
		::MessageBox(NULL, "nTab < 0", "", MB_OK);
		//return ::CallWindowProc(_tabBarDefaultProc, hwnd, Message, wParam, lParam);
	}
	bool isSelected = (nTab == ::SendMessage(_hSelf, TCM_GETCURSEL, 0, 0));

	char label[MAX_PATH];
	TCITEM tci;
	tci.mask = TCIF_TEXT|TCIF_IMAGE;
	tci.pszText = label;     
	tci.cchTextMax = MAX_PATH-1;

	if (!::SendMessage(_hSelf, TCM_GETITEM, nTab, reinterpret_cast<LPARAM>(&tci))) 
	{
		::MessageBox(NULL, "! TCM_GETITEM", "", MB_OK);
		//return ::CallWindowProc(_tabBarDefaultProc, hwnd, Message, wParam, lParam);
	}
	HDC hDC = pDrawItemStruct->hDC;
	
	int nSavedDC = ::SaveDC(hDC);

	::SetBkMode(hDC, TRANSPARENT);
	HBRUSH hBrush = ::CreateSolidBrush(::GetSysColor(COLOR_BTNFACE));
	::FillRect(hDC, &rect, hBrush);
	::DeleteObject((HGDIOBJ)hBrush);

	if (isSelected)
	{
		if (_drawTopBar)
		{
			RECT barRect = rect;
			
			if (_isVertical)
			{
				barRect.right = barRect.left + 6;
				rect.left += 2;
			}
			else
			{
				barRect.bottom = barRect.top + 6;
				rect.top += 2;
			}

			if (::SendMessage(_hParent, NPPM_INTERNAL_ISFOCUSEDTAB, 0, (LPARAM)_hSelf))
				hBrush = ::CreateSolidBrush(RGB(250, 170, 60)); // #FAAA3C
			else
				hBrush = ::CreateSolidBrush(RGB(250, 210, 150)); // #FAD296

			::FillRect(hDC, &barRect, hBrush);
			::DeleteObject((HGDIOBJ)hBrush);		
		}
	}
	else
	{
		if (_drawInactiveTab)
		{
			RECT barRect = rect;

			hBrush = ::CreateSolidBrush(RGB(192, 192, 192));
			::FillRect(hDC, &barRect, hBrush);
			::DeleteObject((HGDIOBJ)hBrush);
		}
	}

	if (_drawTabCloseButton)
	{
		RECT closeButtonRect = _closeButtonZone.getButtonRectFrom(rect);
		if (isSelected)
		{
			if (!_isVertical)
			{
				//closeButtonRect.top  += 2;
				closeButtonRect.left -= 2;
			}
		}
		else
		{
			if (_isVertical)
				closeButtonRect.left += 2;			
		}

		
		// 3 status for each inactive tab and selected tab close item :
		// normal / hover / pushed
		int idCloseImg;

		if (_isCloseHover && (_currentHoverTabItem == nTab) && (_whichCloseClickDown == -1)) // hover
			idCloseImg = IDR_CLOSETAB_HOVER;
		else if (_isCloseHover && (_currentHoverTabItem == nTab) && (_whichCloseClickDown == _currentHoverTabItem)) // pushed
			idCloseImg = IDR_CLOSETAB_PUSH;
		else
			idCloseImg = isSelected?IDR_CLOSETAB:IDR_CLOSETAB_INACT;


		HDC hdcMemory;
		hdcMemory = ::CreateCompatibleDC(hDC);
		HBITMAP hBmp = ::LoadBitmap(_hInst, MAKEINTRESOURCE(idCloseImg));
		BITMAP bmp;
		::GetObject(hBmp, sizeof(bmp), &bmp);
		
		if (_isVertical)
			rect.top = closeButtonRect.top + bmp.bmHeight;		
		else
			rect.right = closeButtonRect.left;

		::SelectObject(hdcMemory, hBmp);
		::BitBlt(hDC, closeButtonRect.left, closeButtonRect.top, bmp.bmWidth, bmp.bmHeight, hdcMemory, 0, 0, SRCCOPY);
		::DeleteDC(hdcMemory);
		::DeleteObject(hBmp);
	}

	// Draw image
	HIMAGELIST hImgLst = (HIMAGELIST)::SendMessage(_hSelf, TCM_GETIMAGELIST, 0, 0);

	SIZE charPixel;
	::GetTextExtentPoint(hDC, " ", 1, &charPixel);
	int spaceUnit = charPixel.cx;

	if (hImgLst && tci.iImage >= 0)
	{
		IMAGEINFO info;
		int yPos = 0, xPos = 0;
		int marge = 0;

		ImageList_GetImageInfo(hImgLst, tci.iImage, &info);

		RECT & imageRect = info.rcImage;
		
		if (_isVertical)
			xPos = (rect.left + (rect.right - rect.left)/2 + 2) - (imageRect.right - imageRect.left)/2;
		else
			yPos = (rect.top + (rect.bottom - rect.top)/2 + (isSelected?0:2)) - (imageRect.bottom - imageRect.top)/2;

		if (isSelected)
			marge = spaceUnit*2;
		else
			marge = spaceUnit;

		if (_isVertical)
		{
			rect.bottom -= imageRect.bottom - imageRect.top;			
			ImageList_Draw(hImgLst, tci.iImage, hDC, xPos, rect.bottom - marge, isSelected?ILD_TRANSPARENT:ILD_SELECTED);
			rect.bottom += marge;
		}
		else
		{
			rect.left += marge;
			ImageList_Draw(hImgLst, tci.iImage, hDC, rect.left, yPos, isSelected?ILD_TRANSPARENT:ILD_SELECTED);
			rect.left += imageRect.right - imageRect.left;
		}
	}

	bool isStandardSize = (::SendMessage(_hParent, NPPM_INTERNAL_ISTABBARREDUCED, 0, 0) == TRUE);

	if (isStandardSize)
	{
		if (_isVertical)
			SelectObject(hDC, _hVerticalFont);
		else
			SelectObject(hDC, _hFont);
	}
	else
	{
		if (_isVertical)
			SelectObject(hDC, _hVerticalLargeFont);
		else
			SelectObject(hDC, _hLargeFont);
	}

	int Flags = DT_SINGLELINE;

	if (_drawTabCloseButton)
	{
		Flags |= DT_LEFT;
	}
	else
	{
		if (!_isVertical)
			Flags |= DT_CENTER;
	}
		
	// the following uses pixel values the fix alignments issues with DrawText 
	// and font's that are rotated 90 degrees
	if (isSelected) 
	{
		COLORREF selectedColor = ::GetSysColor(COLOR_BTNTEXT);
		::SetTextColor(hDC, selectedColor);

		if (_isVertical)
		{
			rect.bottom -= 2;
			rect.left   += ::GetSystemMetrics(SM_CXEDGE) + 4;
			rect.top    += (_drawTabCloseButton)?spaceUnit:0;			
		}
		else
		{
			rect.top -= ::GetSystemMetrics(SM_CYEDGE);
			rect.top += 3;
			rect.left += _drawTabCloseButton?spaceUnit:0;
		}

		if (!_isVertical)
			Flags |= DT_VCENTER;
		else
			Flags |= DT_BOTTOM;
	} 
	else 
	{
		COLORREF unselectedColor = grey;
		::SetTextColor(hDC, unselectedColor);
		if (_isVertical)
		{
			rect.top	+= 2;
			rect.bottom += 4;
			rect.left   += ::GetSystemMetrics(SM_CXEDGE) + 2;
		}
		else
		{
			rect.left   += (_drawTabCloseButton)?spaceUnit:0;
		}
			
		if (!_isVertical)
			Flags |= DT_BOTTOM;
		else
			Flags |= DT_BOTTOM;
	}
	::DrawText(hDC, label, strlen(label), &rect, Flags);
	::RestoreDC(hDC, nSavedDC);
}


void TabBarPlus::draggingCursor(POINT screenPoint)
{
	HWND hWin = ::WindowFromPoint(screenPoint);
	if (_hSelf == hWin)
		::SetCursor(::LoadCursor(NULL, IDC_ARROW));
	else
	{
		char className[256];
		::GetClassName(hWin, className, 256);
		if ((!strcmp(className, "Scintilla")) || (!strcmp(className, WC_TABCONTROL)))
		{
			if (::GetKeyState(VK_LCONTROL) & 0x80000000)
				::SetCursor(::LoadCursor(_hInst, MAKEINTRESOURCE(IDC_DRAG_PLUS_TAB)));
			else
				::SetCursor(::LoadCursor(_hInst, MAKEINTRESOURCE(IDC_DRAG_TAB)));
		}
		else
			::SetCursor(::LoadCursor(_hInst, MAKEINTRESOURCE(IDC_DRAG_INTERDIT_TAB)));
	}
}

void TabBarPlus::exchangeItemData(POINT point)
{
	// Find the destination tab...
	int nTab = getTabIndexAt(point);

	// The position is over a tab.
	//if (hitinfo.flags != TCHT_NOWHERE)
	if (nTab != -1)
	{
		
		_isDraggingInside = true;

		if (nTab != _nTabDragged)
		{
			//1. set to focus
			::SendMessage(_hSelf, TCM_SETCURSEL, nTab, 0);

			//2. shift their data, and insert the source
			TCITEM itemData_nDraggedTab, itemData_shift;
			itemData_nDraggedTab.mask = itemData_shift.mask = TCIF_IMAGE | TCIF_TEXT;
			char str1[256];
			char str2[256];

			itemData_nDraggedTab.pszText = str1;
			itemData_nDraggedTab.cchTextMax = (sizeof(str1));

			itemData_shift.pszText = str2;
			itemData_shift.cchTextMax = (sizeof(str2));

			::SendMessage(_hSelf, TCM_GETITEM, _nTabDragged, reinterpret_cast<LPARAM>(&itemData_nDraggedTab));

			if (_nTabDragged > nTab)
			{
				for (int i = _nTabDragged ; i > nTab ; i--)
				{
					::SendMessage(_hSelf, TCM_GETITEM, i-1, reinterpret_cast<LPARAM>(&itemData_shift));
					::SendMessage(_hSelf, TCM_SETITEM, i, reinterpret_cast<LPARAM>(&itemData_shift));
				}
			}
			else
			{
				for (int i = _nTabDragged ; i < nTab ; i++)
				{
					::SendMessage(_hSelf, TCM_GETITEM, i+1, reinterpret_cast<LPARAM>(&itemData_shift));
					::SendMessage(_hSelf, TCM_SETITEM, i, reinterpret_cast<LPARAM>(&itemData_shift));
				}
			}
			//
			::SendMessage(_hSelf, TCM_SETITEM, nTab, reinterpret_cast<LPARAM>(&itemData_nDraggedTab));

			//3. update the current index
			_nTabDragged = nTab;
			
		}
	}
	else
	{
		//::SetCursor(::LoadCursor(_hInst, MAKEINTRESOURCE(IDC_DRAG_TAB)));
		_isDraggingInside = false;
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费网站| 欧美国产精品一区| 欧美日韩国产免费一区二区 | 午夜欧美2019年伦理| 亚洲国产综合人成综合网站| 亚洲视频小说图片| 亚洲欧洲性图库| 中文字幕一区二区视频| 国产精品女人毛片| 中文字幕亚洲精品在线观看| **欧美大码日韩| 亚洲高清免费在线| 日本不卡视频在线观看| 久久成人免费日本黄色| 国产精品99久久久久久似苏梦涵| 国产成人在线网站| 91日韩在线专区| 91成人国产精品| 91麻豆精品国产91久久久更新时间 | 亚洲一区二区四区蜜桃| 亚洲成人一区二区| 久久精品国产亚洲5555| 麻豆精品一区二区三区| 老司机免费视频一区二区三区| 国产精品私人自拍| 国产精品初高中害羞小美女文| 国产视频亚洲色图| 亚洲视频图片小说| 日韩中文字幕1| 国产真实精品久久二三区| 丁香婷婷综合五月| 色狠狠色噜噜噜综合网| 7777精品久久久大香线蕉| 日韩女优电影在线观看| 国产亚洲欧美日韩俺去了| 亚洲三级在线看| 日韩福利电影在线| 国产91精品露脸国语对白| 91久久精品午夜一区二区| 欧美猛男男办公室激情| 欧美成人在线直播| 一区免费观看视频| 午夜免费久久看| 国产v综合v亚洲欧| 欧美日韩在线精品一区二区三区激情 | 成人av在线电影| www.欧美精品一二区| 国产高清无密码一区二区三区| 黄页视频在线91| 国产美女在线观看一区| 青青草视频一区| 久久99精品久久久久久国产越南| 26uuu另类欧美| 亚洲精品一二三四区| 日本va欧美va精品发布| 成人免费视频免费观看| 欧美色成人综合| 国产三级久久久| 日韩中文字幕1| 972aa.com艺术欧美| 日韩精品中文字幕在线不卡尤物 | 欧美美女一区二区在线观看| 日韩免费高清av| 亚洲精品日韩综合观看成人91| 麻豆成人91精品二区三区| 91在线国内视频| 精品免费视频.| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩一区二区三区四区| ...av二区三区久久精品| 麻豆传媒一区二区三区| 91成人国产精品| 国产精品色在线观看| 美女尤物国产一区| 欧美三级在线播放| 中文字幕一区二区在线观看 | 欧美日韩第一区日日骚| 综合激情成人伊人| 国产精品一卡二卡在线观看| 91精品国产麻豆| 亚洲综合免费观看高清在线观看| 国产一区二区女| 日韩三级精品电影久久久| 亚洲欧美日韩国产综合在线| 国产精品1024| 久久欧美中文字幕| 日本vs亚洲vs韩国一区三区| 欧美怡红院视频| 亚洲视频一区在线| 粉嫩久久99精品久久久久久夜 | 亚洲青青青在线视频| 成人午夜免费视频| 久久嫩草精品久久久精品一| 久久国产生活片100| 久久人人爽人人爽| 国内成人精品2018免费看| 亚洲美女在线一区| 极品尤物av久久免费看| 欧美一二三四在线| 日韩av一区二区三区| 欧美日韩国产一二三| 亚洲高清视频在线| 欧美色中文字幕| 亚洲午夜久久久久中文字幕久| 91片在线免费观看| 亚洲视频一二三区| 在线视频观看一区| 亚洲最快最全在线视频| 91久久国产综合久久| 亚洲美女屁股眼交3| 99久久国产综合精品色伊 | 麻豆国产精品视频| 欧美一区二区美女| 经典三级一区二区| 日本一区二区三区电影| 成人av电影观看| 亚洲伦理在线精品| 欧美午夜精品一区二区三区| 亚洲成a人片综合在线| 日韩一区二区三区观看| 国产一区二区三区不卡在线观看| 久久精品一区四区| 不卡影院免费观看| 亚洲码国产岛国毛片在线| 欧美三级在线播放| 美女一区二区三区在线观看| 久久综合久久综合九色| 国产v综合v亚洲欧| 亚洲免费观看视频| 91.com视频| 国产麻豆精品theporn| 中文字幕在线一区| 欧美亚洲国产一区二区三区va | 青青草国产成人av片免费| 26uuu精品一区二区在线观看| 国产美女av一区二区三区| 综合网在线视频| 欧美福利视频一区| 国产精品一二三四| 亚洲伦在线观看| 日韩精品资源二区在线| 成人免费视频播放| 日韩精品亚洲一区二区三区免费| 精品久久免费看| 色婷婷精品大在线视频| 男女性色大片免费观看一区二区| 久久精品男人的天堂| 欧美私人免费视频| 国产精品自在在线| 亚洲国产一二三| 久久影音资源网| 欧美吻胸吃奶大尺度电影 | 欧美色倩网站大全免费| 国产一区二区三区香蕉| 亚洲综合免费观看高清完整版| 日韩精品一区二区三区中文精品| 成人免费高清视频在线观看| 视频一区二区三区中文字幕| 欧美激情在线观看视频免费| 欧美挠脚心视频网站| 成人开心网精品视频| 免费人成网站在线观看欧美高清| 亚洲欧洲国产日韩| 精品国产乱码久久久久久蜜臀 | 日韩亚洲欧美在线| 一本久久a久久精品亚洲| 激情都市一区二区| 亚洲成av人影院| 国产精品美女视频| 欧美成人一级视频| 欧美日韩一区二区三区在线| 丰满白嫩尤物一区二区| 日本欧美在线看| 夜夜嗨av一区二区三区| 亚洲国产成人在线| 精品免费视频一区二区| 欧美理论在线播放| 91丨九色丨国产丨porny| 国产乱码精品一区二区三| 日韩高清电影一区| 亚洲成人手机在线| 亚洲激情在线激情| 国产精品激情偷乱一区二区∴| 日韩免费一区二区| 在线观看亚洲专区| 91在线porny国产在线看| 风流少妇一区二区| 狠狠色狠狠色综合系列| 日韩制服丝袜av| 偷拍亚洲欧洲综合| 亚洲五码中文字幕| 亚洲激情在线激情| 亚洲色图20p| 中文字幕一区二区三区蜜月 | 天堂va蜜桃一区二区三区漫画版| 一区二区三区中文字幕电影| 亚洲欧美福利一区二区| 中文字幕亚洲在| 国产精品久久久久婷婷二区次| 国产午夜三级一区二区三|