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

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

?? splittercontainer.cpp

?? 文字編輯器源碼 Text editor source code
?? 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 "SplitterContainer.h"
#include "Common.h"

bool SplitterContainer::_isRegistered = false;

void SplitterContainer::create(Window *pWin0, Window *pWin1, int splitterSize,
                               SplitterMode mode, int ratio, bool isVertical)
{
	//Window::init(hInst, parent);
	_pWin0 = pWin0;
	_pWin1 = pWin1;
	_splitterSize = splitterSize;
	_splitterMode = mode;
	_ratio = ratio;
	_dwSplitterStyle |= isVertical?SV_VERTICAL:SV_HORIZONTAL;
    if (_splitterMode != DYNAMIC)
	{
        _dwSplitterStyle |= SV_FIXED;
		_dwSplitterStyle &= ~SV_RESIZEWTHPERCNT;
	}
	if (!_isRegistered)
	{
		WNDCLASS splitterContainerClass;

		splitterContainerClass.style = 0;
		splitterContainerClass.lpfnWndProc = staticWinProc;
		splitterContainerClass.cbClsExtra = 0;
		splitterContainerClass.cbWndExtra = 0;
		splitterContainerClass.hInstance = _hInst;
		splitterContainerClass.hIcon = NULL;
		splitterContainerClass.hCursor = ::LoadCursor(NULL, IDC_ARROW);

		// hbrBackground must be NULL,
		// otherwise this window will hide some parts of 2 windows
		splitterContainerClass.hbrBackground = NULL; 
		splitterContainerClass.lpszMenuName = NULL;
		splitterContainerClass.lpszClassName = SPC_CLASS_NAME;//_className;

		if (!::RegisterClass(&splitterContainerClass))
		{
			systemMessage(TEXT("System Err"));
			throw int(98);
		}
		_isRegistered = true;
	}

	_hSelf = ::CreateWindowEx(
					0,
					SPC_CLASS_NAME,
					TEXT("a koi sert?"),
					WS_CHILD |  WS_CLIPCHILDREN,
					CW_USEDEFAULT, CW_USEDEFAULT,
					CW_USEDEFAULT, CW_USEDEFAULT,
					_hParent,
					NULL,
					_hInst,
					(LPVOID)this);

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

void SplitterContainer::rotateTo(DIRECTION direction) 
{
	bool doSwitchWindow = false;
	if (_dwSplitterStyle & SV_VERTICAL)
	{
		_dwSplitterStyle ^= SV_VERTICAL;
		_dwSplitterStyle |= SV_HORIZONTAL;
		doSwitchWindow = (direction == LEFT);
	}
	else
	{
		_dwSplitterStyle ^= SV_HORIZONTAL;
		_dwSplitterStyle |= SV_VERTICAL;
		doSwitchWindow = (direction == RIGHT);
	}
	if (doSwitchWindow)
	{
		Window *tmp = _pWin0;
		_pWin0 = _pWin1;
		_pWin1 = tmp;
	}
	_splitter.rotate();

}

LRESULT CALLBACK SplitterContainer::staticWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	SplitterContainer *pSplitterContainer = NULL;
	switch (message)
	{	
		case WM_NCCREATE :
			pSplitterContainer = (SplitterContainer *)(((LPCREATESTRUCT)lParam)->lpCreateParams);
			pSplitterContainer->_hSelf = hwnd;
			::SetWindowLongPtr(hwnd, GWL_USERDATA, reinterpret_cast<LONG>(pSplitterContainer));
			return TRUE;

		default :
			pSplitterContainer = (SplitterContainer *)::GetWindowLongPtr(hwnd, GWL_USERDATA);
			if (!pSplitterContainer)
				return ::DefWindowProc(hwnd, message, wParam, lParam);
			return pSplitterContainer->runProc(message, wParam, lParam);
	}
}

LRESULT SplitterContainer::runProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_CREATE :
			_splitter.init(_hInst, _hSelf, _splitterSize, _ratio, _dwSplitterStyle);
			return TRUE;
		
		case WM_COMMAND :
		{
			switch (LOWORD(wParam)) 
			{
				case ROTATION_A_GAUCHE:
					rotateTo(LEFT);
					return TRUE;
				case ROTATION_A_DROITE:
					rotateTo(RIGHT);
					return TRUE;
			}
			return TRUE;
		}
		case WM_RESIZE_CONTAINER :
		{
			RECT rc0, rc1;
			getClientRect(rc0);

			rc1.top = rc0.top += _y;
			rc1.bottom = rc0.bottom;
			rc1.left = rc0.left += _x;
			rc1.right = rc0.right;

			if (_dwSplitterStyle & SV_VERTICAL)
			{
				if (wParam != 0)
				{
					rc0.right = int(wParam);

					rc1.left = int(wParam) + _x + _splitter.getPhisicalSize();
					rc1.right = rc1.right - rc1.left + _x;
				}
			}
			else //SV_HORIZONTAL
			{
				if (lParam != 0)
				{
					rc0.bottom = int(lParam); 

					rc1.top   = int(lParam) + _y + _splitter.getPhisicalSize();
					rc1.bottom = rc1.bottom - rc1.top + _y;
				}
			}
			_pWin0->reSizeTo(rc0);
			_pWin1->reSizeTo(rc1);

			::InvalidateRect(_splitter.getHSelf(), NULL, TRUE);
			return TRUE;
		}
		
		case WM_DOPOPUPMENU :
		{
			if ((_splitterMode != LEFT_FIX) && (_splitterMode != RIGHT_FIX) )
			{
				POINT p;
				::GetCursorPos(&p);
				
				if (!_hPopupMenu)
				{
					POINT p;
					::GetCursorPos(&p);
					_hPopupMenu = ::CreatePopupMenu();
					::InsertMenu(_hPopupMenu, 1, MF_BYPOSITION, ROTATION_A_GAUCHE, TEXT("Rotate to left"));
					::InsertMenu(_hPopupMenu, 0, MF_BYPOSITION, ROTATION_A_DROITE, TEXT("Rotate to right"));
				}
				
				::TrackPopupMenu(_hPopupMenu, TPM_LEFTALIGN, p.x, p.y, 0, _hSelf, NULL);
			}
			return TRUE;
		}

		case WM_GETSPLITTER_X :
        {
            if (_splitterMode == LEFT_FIX)
                return MAKELONG(_pWin0->getWidth(), LEFT_FIX);
            else if (_splitterMode == RIGHT_FIX)
            {
                int x = getWidth()-_pWin1->getWidth();
                if (x < 0)
                    x = 0;
                return MAKELONG(x, RIGHT_FIX);
            }
            else
			    return MAKELONG(0, DYNAMIC);
         
        }

		case WM_GETSPLITTER_Y :
        {
            if (_splitterMode == LEFT_FIX)
                return MAKELONG(_pWin0->getHeight(), LEFT_FIX);
            else if (_splitterMode == RIGHT_FIX)
            {
                int y = getHeight()-_pWin1->getHeight();
                if (y < 0)
                    y = 0;
                return MAKELONG(y, RIGHT_FIX);
            }
            else
			    return MAKELONG(0, DYNAMIC);
        }

		default :
			return ::DefWindowProc(_hSelf, message, wParam, lParam);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清视频一区二区| 欧美亚日韩国产aⅴ精品中极品| 久久综合色8888| 99精品国产热久久91蜜凸| 成人一区二区三区视频在线观看| 欧美男男青年gay1069videost| 欧美va日韩va| 美女视频一区二区三区| 欧美性生活大片视频| 久久美女艺术照精彩视频福利播放 | 国产精品久久毛片a| 国产伦精品一区二区三区视频青涩| 欧美精品一区二区三区久久久 | 欧美国产激情一区二区三区蜜月| 国产精品综合久久| 欧美经典三级视频一区二区三区| 99v久久综合狠狠综合久久| 亚洲精品久久7777| 欧美一区二区三区影视| 国产夫妻精品视频| 亚洲精品欧美综合四区| 欧美日韩激情一区二区| 日本午夜精品视频在线观看| 国产亚洲欧洲997久久综合| 91在线云播放| 另类的小说在线视频另类成人小视频在线 | 狂野欧美性猛交blacked| 欧美精品一区二| 91在线高清观看| 另类小说欧美激情| 亚洲黄一区二区三区| 日韩美女一区二区三区四区| 国产高清亚洲一区| 日韩高清不卡一区二区三区| 欧美国产丝袜视频| 91精品国产91久久久久久最新毛片 | 粉嫩高潮美女一区二区三区 | 制服视频三区第一页精品| 国产1区2区3区精品美女| 亚洲18色成人| 亚洲欧洲一区二区三区| 精品国产成人在线影院 | bt欧美亚洲午夜电影天堂| 午夜久久久久久久久| 国产精品狼人久久影院观看方式| 欧美精品xxxxbbbb| 99re亚洲国产精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品卡一卡二卡三| 日韩欧美在线不卡| 欧美日韩免费一区二区三区| 成人免费视频app| 日本va欧美va欧美va精品| 亚洲欧美经典视频| 久久免费午夜影院| 日韩精品一区二区三区swag| 在线视频一区二区三| 国产在线精品不卡| 麻豆国产精品一区二区三区 | 色欧美88888久久久久久影院| 久久99国产精品尤物| 视频一区中文字幕| 亚洲1区2区3区视频| 亚洲人成精品久久久久| 国产精品第五页| 久久久久久久综合| 日韩欧美一区中文| 欧美日韩成人高清| 欧美中文字幕一二三区视频| 97精品国产露脸对白| 成人精品免费网站| 丁香婷婷综合激情五月色| 国产一区二区三区观看| 久久99国产精品麻豆| 久久丁香综合五月国产三级网站| 免费人成精品欧美精品| 免费不卡在线观看| 麻豆精品国产91久久久久久| 免费一级欧美片在线观看| 日本在线不卡视频| 秋霞av亚洲一区二区三| 丝袜诱惑制服诱惑色一区在线观看 | 成人av电影在线网| 懂色一区二区三区免费观看| 国产精品一区一区三区| 国产一区二区三区久久悠悠色av | 国产精品入口麻豆原神| 久久久国产精品午夜一区ai换脸| 久久免费国产精品| 国产视频亚洲色图| 国产人成亚洲第一网站在线播放| 国产清纯白嫩初高生在线观看91 | 亚洲国产精品久久人人爱蜜臀 | 欧美va亚洲va在线观看蝴蝶网| 日韩欧美的一区| 欧美成人一区二区三区片免费| 精品国产亚洲在线| 中文字幕第一区综合| 1000部国产精品成人观看| 亚洲一区二区三区三| 麻豆精品新av中文字幕| 国产69精品久久777的优势| 色婷婷久久一区二区三区麻豆| 欧美精选午夜久久久乱码6080| 日韩精品中文字幕在线一区| 国产亚洲成av人在线观看导航| 国产精品久久久久精k8| 一区二区三区精品久久久| 日日夜夜精品视频免费| 国内不卡的二区三区中文字幕| eeuss鲁一区二区三区| 欧美精品乱人伦久久久久久| 精品国产网站在线观看| 中文字幕日韩精品一区| 午夜欧美2019年伦理| 国模一区二区三区白浆| 一本色道a无线码一区v| 日韩精品一区二区三区蜜臀| 中文字幕不卡一区| 丝袜亚洲精品中文字幕一区| 国产在线视频一区二区| 一本大道久久a久久精品综合| 欧美一区二区观看视频| 国产精品成人免费精品自在线观看 | 欧美片网站yy| 奇米影视在线99精品| av成人动漫在线观看| 91精品国产欧美一区二区成人| 18欧美乱大交hd1984| 久久99精品久久久久久国产越南| 一本到高清视频免费精品| 2欧美一区二区三区在线观看视频| 亚洲男人的天堂av| 国产精品1区二区.| 日韩一级在线观看| 亚洲综合在线观看视频| 东方aⅴ免费观看久久av| 91精品国产欧美一区二区18| 亚洲视频一区二区免费在线观看| 蜜桃传媒麻豆第一区在线观看| 91一区二区在线| xnxx国产精品| 日本va欧美va瓶| 欧洲生活片亚洲生活在线观看| 亚洲国产精品99久久久久久久久| 免费成人美女在线观看.| 欧美性色欧美a在线播放| 国产精品久久久久久久久免费相片 | 成人免费毛片片v| 精品免费视频.| 午夜精品久久久久久久99樱桃| 日本道免费精品一区二区三区| 久久精品亚洲精品国产欧美| 麻豆精品在线播放| 欧美日韩国产大片| 一区二区三区.www| 99九九99九九九视频精品| 国产精品高潮久久久久无| 成人免费的视频| 国产欧美日韩久久| 成人午夜免费视频| 欧美激情艳妇裸体舞| 福利电影一区二区三区| 国产网红主播福利一区二区| 国产精品一区三区| 国产午夜精品一区二区三区四区 | 婷婷综合五月天| 欧美老人xxxx18| 三级欧美在线一区| 欧美猛男男办公室激情| 性久久久久久久久久久久| 欧美日本精品一区二区三区| 亚洲伊人色欲综合网| 欧美性猛片aaaaaaa做受| 亚洲国产精品欧美一二99| 欧美日韩二区三区| 奇米一区二区三区| 精品久久久久99| 国产综合色在线| 亚洲国产激情av| 色噜噜狠狠色综合欧洲selulu| 亚洲乱码精品一二三四区日韩在线| 91美女在线观看| 一区二区三区免费网站| 精品视频1区2区| 久久aⅴ国产欧美74aaa| 久久久久久久免费视频了| 成人的网站免费观看| 亚洲乱码国产乱码精品精小说 | 91在线免费视频观看| 亚洲女同ⅹxx女同tv| 欧美日韩国产小视频在线观看| 日韩福利视频导航| 久久精品一区二区三区不卡牛牛| 不卡的av电影| 亚洲电影在线免费观看| 日韩欧美亚洲一区二区| 成人精品免费网站| 亚洲国产精品一区二区久久| 精品美女一区二区|