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

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

?? toolbar.cpp

?? 一個功能強大的代碼編輯器源代碼
?? CPP
字號:
//this file is part of notepad++
//Copyright (C)2003 Don HO ( donho@altern.org )
//
//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 "..\..\resource.h"
#include "ToolBar.h"
#include "SysMsg.h"

const bool ToolBar::REDUCED = true;
const bool ToolBar::ENLARGED = false;
const int WS_TOOLBARSTYLE = WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | TBSTYLE_TOOLTIPS |TBSTYLE_FLAT | CCS_TOP | BTNS_AUTOSIZE;

bool ToolBar::init(HINSTANCE hInst, HWND hPere, int iconSize, 
				   ToolBarButtonUnit *buttonUnitArray, int arraySize,
				   bool doUglyStandardIcon, int *bmpArray, int bmpArraySize)
{
	Window::init(hInst, hPere);
	_state = doUglyStandardIcon?TB_STANDARD:(iconSize >= 32?TB_LARGE:TB_SMALL);
	_bmpArray = bmpArray;
	_bmpArraySize = bmpArraySize;

	_toolBarIcons.init(buttonUnitArray, arraySize);
	_toolBarIcons.create(_hInst, iconSize);
	
	INITCOMMONCONTROLSEX icex;
	icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
	icex.dwICC  = ICC_WIN95_CLASSES|ICC_COOL_CLASSES|ICC_BAR_CLASSES|ICC_USEREX_CLASSES;
	InitCommonControlsEx(&icex);

	_hSelf = ::CreateWindowEx(
	               WS_EX_PALETTEWINDOW ,
	               TOOLBARCLASSNAME,
	               "",
	               WS_TOOLBARSTYLE,
	               0, 0,
	               0, 0,
	               _hParent,
				   NULL,
	               _hInst,
	               0);

	if (!_hSelf)
	{
		systemMessage("System Err");
		throw int(9);
	}

	// Send the TB_BUTTONSTRUCTSIZE message, which is required for 
	// backward compatibility.
	::SendMessage(_hSelf, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
	
	if (!doUglyStandardIcon)
	{
		setDefaultImageList();
		setHotImageList();
		setDisableImageList();
	}
	else
	{
		::SendMessage(_hSelf, TB_LOADIMAGES, IDB_STD_SMALL_COLOR, reinterpret_cast<LPARAM>(HINST_COMMCTRL));

		if (bmpArray)
		{
			TBADDBITMAP addbmp = {_hInst, 0};
			for (int i = 0 ; i < _bmpArraySize ; i++)
			{
				if ((i == _bmpArraySize - 1) && (_vDynBtnReg.size() != 0))
				{
					TBADDBITMAP addbmpdyn = {0, 0};
					for (size_t j = 0; j < _vDynBtnReg.size(); j++)
					{
						addbmpdyn.nID = (INT_PTR)_vDynBtnReg[j].hBmp;
						::SendMessage(_hSelf, TB_ADDBITMAP, 1, (LPARAM)&addbmpdyn);
					}
				}

				addbmp.nID = _bmpArray[i];
				::SendMessage(_hSelf, TB_ADDBITMAP, 1, (LPARAM)&addbmp);
			}
		}
		
	}

	_pTBB = new TBBUTTON[_toolBarIcons.getNbCommand() + (_vDynBtnReg.size() ? _vDynBtnReg.size() + 1 : 0)];
	unsigned int nbElement    = _toolBarIcons.getNbCommand();
	unsigned int nbDynIncPos	 = nbElement;

	if (doUglyStandardIcon)
	{
		nbDynIncPos -= 2;
		nbElement   += (_vDynBtnReg.size() ? _vDynBtnReg.size() + 1 : 0);
	}

	int inc = 1;

	for (size_t i = 0, j = 0, k = 0; i < nbElement; i++)
	{
		int cmd = 0;
		int bmpIndex, style;

		if ((i > nbDynIncPos) && (_vDynBtnReg.size() != 0) && (j <= _vDynBtnReg.size()))
		{
			if (j < _vDynBtnReg.size())
			{
				cmd = _vDynBtnReg[j].message;
				bmpIndex = (STD_PRINT + (inc++));
				style = BTNS_BUTTON;
			}
			else
			{
				bmpIndex = 0;
				style = BTNS_SEP;
			}
			j++;
		}
		else
		{
			if ((cmd = _toolBarIcons.getCommandAt(i - j)) != 0)
			{
				if (doUglyStandardIcon)
				{
					int ibmp = _toolBarIcons.getUglyIconAt(i - j);
					bmpIndex = (ibmp == -1)?(STD_PRINT + (inc++)):ibmp;
				}
				else
					bmpIndex = k++;

				style = BTNS_BUTTON;
			}
			else
			{
				bmpIndex = 0;
				style = BTNS_SEP;
			}
		}
		_pTBB[i].iBitmap = bmpIndex;
		_pTBB[i].idCommand = cmd;
		_pTBB[i].fsState = TBSTATE_ENABLED;
		_pTBB[i].fsStyle = style; 
		_pTBB[i].dwData = 0; 
		_pTBB[i].iString = 0;

	}

	setButtonSize(iconSize, iconSize);

	::SendMessage(_hSelf, TB_ADDBUTTONS, (WPARAM)nbElement, (LPARAM)_pTBB); 
	::SendMessage(_hSelf, TB_AUTOSIZE, 0, 0);

	return true;
}

void ToolBar::reset() 
{
	setDefaultImageList();
	setHotImageList();
	setDisableImageList();

	if (_state == TB_STANDARD)
	{
		int cmdElement = _toolBarIcons.getNbCommand();
		int nbElement  = cmdElement + (_vDynBtnReg.size() ? _vDynBtnReg.size() + 1 : 0);

		for (int i = 0, j = 0, k = nbElement-1 ; i < nbElement ; i++, k--)
		{
			int cmd = 0;
			int bmpIndex, style;

			::SendMessage(_hSelf, TB_DELETEBUTTON, k, 0);

			if (i >= cmdElement)
			{
				bmpIndex = -1;
				cmd			 = 0;
				style		 = 0;
			}
			else if ((cmd = _toolBarIcons.getCommandAt(i)) != 0)
			{
				bmpIndex = j++;
				style = BTNS_BUTTON;
			}
			else
			{
				bmpIndex = 0;
				style = BTNS_SEP;
			}
			_pTBB[i].iBitmap = bmpIndex;
			_pTBB[i].idCommand = cmd;
			_pTBB[i].fsState = TBSTATE_ENABLED;
			_pTBB[i].fsStyle = style; 
			_pTBB[i].dwData = 0; 
			_pTBB[i].iString = 0;
		}

		::SendMessage(_hSelf, TB_ADDBUTTONS, (WPARAM)nbElement, (LPARAM)_pTBB); 
	}

	::SendMessage(_hSelf, TB_AUTOSIZE, 0, 0);
}

void ToolBar::setToUglyIcons() 
{
	if (_state == TB_STANDARD) 
		return;

	// Due to the drawback of toolbar control (in-coexistence of Imagelist - custom icons and Bitmap - Std icons),
	// We have to destroy the control then re-initialize it
	::DestroyWindow(_hSelf);

	//_state = REDUCED;

	_hSelf = ::CreateWindowEx(
	               WS_EX_PALETTEWINDOW ,
	               TOOLBARCLASSNAME,
	               "",
	               WS_TOOLBARSTYLE,
	               0, 0,
	               0, 0,
	               _hParent,
				   NULL,
	               _hInst,
	               0);

	if (!_hSelf)
	{
		systemMessage("System Err");
		throw int(9);
	}

	// Send the TB_BUTTONSTRUCTSIZE message, which is required for 
	// backward compatibility.
	::SendMessage(_hSelf, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);

	::SendMessage(_hSelf, TB_LOADIMAGES, IDB_STD_SMALL_COLOR, reinterpret_cast<LPARAM>(HINST_COMMCTRL));

	if (_bmpArray)
	{
		TBADDBITMAP addbmp = {_hInst, 0};
		for (int i = 0 ; i < _bmpArraySize ; i++)
		{
			if ((i == _bmpArraySize - 1) && (_vDynBtnReg.size() != 0))
			{
				TBADDBITMAP addbmpdyn = {0, 0};
				for (size_t j = 0; j < _vDynBtnReg.size(); j++)
				{
					addbmpdyn.nID = (INT_PTR)_vDynBtnReg[j].hBmp;
					::SendMessage(_hSelf, TB_ADDBITMAP, 1, (LPARAM)&addbmpdyn);
				}
			}

			addbmp.nID = _bmpArray[i];
			::SendMessage(_hSelf, TB_ADDBITMAP, 1, (LPARAM)&addbmp);
		}
	}

	unsigned int nbElement    = _toolBarIcons.getNbCommand() + (_vDynBtnReg.size() ? _vDynBtnReg.size() + 1 : 0);
	unsigned int nbDynIncPos	 = _toolBarIcons.getNbCommand() - 2;
	int inc = 1;

	for (size_t i = 0, j = 0 ; i < nbElement ; i++)
	{
		int cmd = 0;
		int bmpIndex, style;

		if ((i > nbDynIncPos) && (_vDynBtnReg.size() != 0) && (j <= _vDynBtnReg.size()))
		{
			if (j < _vDynBtnReg.size())
			{
				cmd = _vDynBtnReg[j].message;
				bmpIndex = (STD_PRINT + (inc++));
				style = BTNS_BUTTON;
			}
			else
			{
				bmpIndex = 0;
				style = BTNS_SEP;
			}
			j++;
		}
		else
		{
			if ((cmd = _toolBarIcons.getCommandAt(i - j)) != 0)
			{
				int ibmp = _toolBarIcons.getUglyIconAt(i - j);
				bmpIndex = (ibmp == -1)?(STD_PRINT + (inc++)):ibmp;
				style = BTNS_BUTTON;
			}
			else
			{
				bmpIndex = 0;
				style = BTNS_SEP;
			}
		}
		_pTBB[i].iBitmap = bmpIndex;
		_pTBB[i].idCommand = cmd;
		_pTBB[i].fsState = TBSTATE_ENABLED;
		_pTBB[i].fsStyle = style; 
		_pTBB[i].dwData = 0; 
		_pTBB[i].iString = 0;

	}

	setButtonSize(16, 16);

	::SendMessage(_hSelf, TB_ADDBUTTONS, (WPARAM)nbElement, (LPARAM)_pTBB); 
	::SendMessage(_hSelf, TB_AUTOSIZE, 0, 0);
	_state = TB_STANDARD;
}

void ToolBar::registerDynBtn(UINT messageID, toolbarIcons* tIcon)
{
	// Note: Register of buttons only possible before init!
	if ((_hSelf == NULL) && (messageID != 0) && (tIcon->hToolbarBmp != NULL))
	{
		tDynamicList		dynList;
		dynList.message		= messageID;
		dynList.hBmp		= tIcon->hToolbarBmp;
		dynList.hIcon		= tIcon->hToolbarIcon;
		_vDynBtnReg.push_back(dynList);
	}
}

void ReBar::init(HINSTANCE hInst, HWND hPere, ToolBar *pToolBar)
{
	Window::init(hInst, hPere);
	_pToolBar = pToolBar;
	_hSelf = CreateWindowEx(WS_EX_TOOLWINDOW,
							REBARCLASSNAME,
							NULL,
							WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|
							WS_CLIPCHILDREN|RBS_VARHEIGHT|
							CCS_NODIVIDER,
							0,0,0,0, _hParent, NULL, _hInst, NULL);


	::SendMessage(_hSelf, RB_SETBARINFO, 0, (LPARAM)&_rbi);


	_rbBand.hwndChild  = _pToolBar->getHSelf();

	int dwBtnSize = SendMessage(_pToolBar->getHSelf(), TB_GETBUTTONSIZE, 0,0);

	_rbBand.cxMinChild = 34;//nbElement;
	_rbBand.cyMinChild = HIWORD(dwBtnSize);
	_rbBand.cx         = 250;
	::SendMessage(_hSelf, RB_INSERTBAND, (WPARAM)0, (LPARAM)&_rbBand);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜伊人狠狠久久| 久久精品视频在线看| 成人久久久精品乱码一区二区三区| 日本大胆欧美人术艺术动态| 亚洲影视在线观看| 亚洲免费观看高清完整版在线观看| 精品第一国产综合精品aⅴ| 欧美日韩在线三区| 六月婷婷色综合| 蜜桃久久精品一区二区| 蜜臀av在线播放一区二区三区| 亚洲美女精品一区| 日韩毛片视频在线看| 国产精品免费视频一区| 国产亚洲欧美色| 国产三级精品三级在线专区| 久久综合精品国产一区二区三区| 91超碰这里只有精品国产| 欧美影院一区二区三区| 日本丶国产丶欧美色综合| 在线观看免费一区| 在线观看亚洲一区| 欧美精品一卡两卡| 制服丝袜av成人在线看| 亚洲高清不卡在线| 99国产精品久| 欧美精品一区二| 奇米一区二区三区| 91黄色免费看| 综合欧美亚洲日本| 国产不卡在线播放| 欧美成人一区二区三区| 亚洲大片免费看| 56国语精品自产拍在线观看| 国产精品久久久久久久久果冻传媒| 美女www一区二区| 欧美精品久久一区| 亚洲午夜久久久久中文字幕久| 91在线一区二区三区| 国产欧美日韩视频在线观看| 日本v片在线高清不卡在线观看| 中文字幕一区二区不卡| 欧美激情一区二区三区全黄 | 91麻豆精品国产91久久久久久| 7777女厕盗摄久久久| 中文字幕欧美区| 午夜婷婷国产麻豆精品| 精品在线免费视频| av一区二区不卡| 欧美一激情一区二区三区| 国产精品拍天天在线| 亚洲国产成人高清精品| 国产最新精品免费| 一本大道综合伊人精品热热| 91精品国产aⅴ一区二区| 国产精品卡一卡二| 日韩精彩视频在线观看| 成人综合日日夜夜| 日韩一卡二卡三卡国产欧美| 国产精品美女www爽爽爽| 日本免费新一区视频| 99国产精品久久久久久久久久| 91精品国产综合久久久蜜臀图片| 中文字幕乱码一区二区免费| 午夜不卡av在线| www.av亚洲| 久久影院午夜片一区| 亚洲国产wwwccc36天堂| 成人短视频下载| 久久综合久久99| 午夜天堂影视香蕉久久| 99vv1com这只有精品| 5566中文字幕一区二区电影 | 久久久久久亚洲综合| 日韩av电影免费观看高清完整版 | 国产精品久久影院| 日本精品一区二区三区高清 | 日本一道高清亚洲日美韩| 精品日韩在线观看| 91玉足脚交白嫩脚丫在线播放| 亚洲影视资源网| xvideos.蜜桃一区二区| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美日韩视频在线一区二区| 亚洲欧美一区二区久久| 成人精品鲁一区一区二区| 亚洲乱码国产乱码精品精小说 | 天天免费综合色| 欧美日韩免费不卡视频一区二区三区| 中文字幕一区二区在线观看| 国产精品一级在线| 欧美成人精品3d动漫h| 青青草伊人久久| 欧美一级爆毛片| 激情综合色综合久久| 日韩三区在线观看| 蜜桃视频在线观看一区| 精品免费国产二区三区| 日韩在线一二三区| 日韩视频在线永久播放| 久久99精品国产麻豆不卡| 久久综合色一综合色88| 国产精品456| 国产精品理论片| 色婷婷综合中文久久一本| 国产精品拍天天在线| www.一区二区| 亚洲精品视频在线观看免费| 91无套直看片红桃| 亚洲一区二三区| 欧美日韩成人高清| 亚洲在线一区二区三区| 欧美一区午夜精品| 久久99深爱久久99精品| 国产精品久久久一区麻豆最新章节| kk眼镜猥琐国模调教系列一区二区| 中文av一区特黄| 日韩视频永久免费| 日韩亚洲欧美在线| 欧美久久一区二区| 欧美性受xxxx黑人xyx性爽| av福利精品导航| www.在线成人| eeuss鲁片一区二区三区在线观看| 国产一区二区影院| 久久se精品一区二区| 日本不卡一二三区黄网| 日本不卡在线视频| 免费的成人av| 老鸭窝一区二区久久精品| 日本强好片久久久久久aaa| 日欧美一区二区| 午夜欧美大尺度福利影院在线看 | 国内精品第一页| 久久国产尿小便嘘嘘尿| 91丨porny丨最新| 人人精品人人爱| 亚洲欧美激情插| 久久久久久影视| 欧美日韩你懂得| 国产真实精品久久二三区| 亚洲人亚洲人成电影网站色| 日韩一级大片在线观看| 欧美日韩一区二区三区在线| 国产在线麻豆精品观看| 亚洲国产日产av| 自拍偷拍国产亚洲| 久久久99精品久久| 欧美一区二区在线观看| 欧美在线啊v一区| 99久久精品免费| 久久不见久久见免费视频1| 亚洲一区二区三区激情| 国产日韩欧美一区二区三区乱码 | 26uuu国产一区二区三区| 欧美日韩在线电影| 色素色在线综合| 91一区二区三区在线观看| 国产精品一区二区男女羞羞无遮挡| 亚洲国产精品久久久男人的天堂| 国产精品国模大尺度视频| 国产欧美精品一区二区色综合| 欧美一级二级三级乱码| 欧美精品乱码久久久久久| 欧美日韩一区二区三区在线看| 欧美在线一区二区| 92国产精品观看| 91网站最新网址| 91视频com| 一本到高清视频免费精品| 国产69精品久久777的优势| 国产精品538一区二区在线| 国产精品资源站在线| 成人中文字幕合集| av欧美精品.com| 日本国产一区二区| 色妹子一区二区| 欧美探花视频资源| 男女男精品网站| 国产精品一区二区x88av| 欧美自拍偷拍一区| 日本一区二区三区久久久久久久久不| 亚洲大片免费看| av中文字幕一区| 欧美大片日本大片免费观看| 亚洲欧美偷拍三级| 国产精品99久久久久久久女警 | 在线视频国内自拍亚洲视频| 精品国产凹凸成av人导航| 亚洲乱码国产乱码精品精小说 | 欧美精品久久一区| 国产精品免费aⅴ片在线观看| 午夜国产精品一区| 一本大道久久a久久综合| 欧美精品一区二区三区蜜臀| 午夜精品影院在线观看| 欧美在线观看你懂的| 国产性色一区二区| 免费观看在线色综合| 色婷婷亚洲一区二区三区|