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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? common.cpp

?? 文字編輯器源碼 Text editor source code
?? CPP
字號(hào):
//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 "Common.h"	//use force include
#include <memory>
#include <algorithm>
#include "Common.h"


WcharMbcsConvertor * WcharMbcsConvertor::_pSelf = new WcharMbcsConvertor;

void systemMessage(const TCHAR *title)
{
  LPVOID lpMsgBuf;
  FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                 NULL,
				 ::GetLastError(),
                 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                 (LPTSTR) &lpMsgBuf,
                 0,
                 NULL );// Process any inserts in lpMsgBuf.
  MessageBox( NULL, (LPTSTR)lpMsgBuf, title, MB_OK | MB_ICONSTOP);
  ::LocalFree(lpMsgBuf);
}

void printInt(int int2print) 
{
	TCHAR str[32];
	wsprintf(str, TEXT("%d"), int2print);
	::MessageBox(NULL, str, TEXT(""), MB_OK);
};

void printStr(const TCHAR *str2print) 
{
	::MessageBox(NULL, str2print, TEXT(""), MB_OK);
};

void writeLog(const TCHAR *logFileName, const char *log2write)
{	
	FILE *f = generic_fopen(logFileName, TEXT("a+"));
	fwrite(log2write, sizeof(log2write[0]), strlen(log2write), f);
	fputc('\n', f);
	fflush(f);
	fclose(f);
}

void folderBrowser(HWND parent, int outputCtrlID)
{
	// This code was copied and slightly modifed from:
	// http://www.bcbdev.com/faqs/faq62.htm

	// SHBrowseForFolder returns a PIDL. The memory for the PIDL is
	// allocated by the shell. Eventually, we will need to free this
	// memory, so we need to get a pointer to the shell malloc COM
	// object that will free the PIDL later on.
	LPMALLOC pShellMalloc = 0;
	if (::SHGetMalloc(&pShellMalloc) == NO_ERROR)
	{
		// If we were able to get the shell malloc object,
		// then proceed by initializing the BROWSEINFO stuct
		BROWSEINFO info;
		memset(&info, 0, sizeof(info));
		info.hwndOwner = parent;
		info.pidlRoot = NULL;
		TCHAR szDisplayName[MAX_PATH];
		info.pszDisplayName = szDisplayName;
		info.lpszTitle = TEXT("Select a folder to search from");
		info.ulFlags = 0;
		info.lpfn = BrowseCallbackProc;
		TCHAR directory[MAX_PATH];
		::GetDlgItemText(parent, outputCtrlID, directory, sizeof(directory));
		info.lParam = reinterpret_cast<LPARAM>(directory);

		// Execute the browsing dialog.
		LPITEMIDLIST pidl = ::SHBrowseForFolder(&info);

		// pidl will be null if they cancel the browse dialog.
		// pidl will be not null when they select a folder.
		if (pidl) 
		{
			// Try to convert the pidl to a display generic_string.
			// Return is true if success.
			TCHAR szDir[MAX_PATH];
			if (::SHGetPathFromIDList(pidl, szDir))
				// Set edit control to the directory path.
				::SetDlgItemText(parent, outputCtrlID, szDir);
			pShellMalloc->Free(pidl);
		}
		pShellMalloc->Release();
	}
}

void ClientRectToScreenRect(HWND hWnd, RECT* rect)
{
	POINT		pt;

	pt.x		 = rect->left;
	pt.y		 = rect->top;
	::ClientToScreen( hWnd, &pt );
	rect->left   = pt.x;
	rect->top    = pt.y;

	pt.x		 = rect->right;
	pt.y		 = rect->bottom;
	::ClientToScreen( hWnd, &pt );
	rect->right  = pt.x;
	rect->bottom = pt.y;
};

std::vector<std::generic_string> tokenizeString(const std::generic_string & tokenString, const char delim) {
	//Vector is created on stack and copied on return
	std::vector<std::generic_string> tokens;

    // Skip delimiters at beginning.
	std::string::size_type lastPos = tokenString.find_first_not_of(delim, 0);
    // Find first "non-delimiter".
    std::string::size_type pos     = tokenString.find_first_of(delim, lastPos);

    while (pos != std::string::npos || lastPos != std::string::npos)
    {
        // Found a token, add it to the vector.
        tokens.push_back(tokenString.substr(lastPos, pos - lastPos));
        // Skip delimiters.  Note the "not_of"
        lastPos = tokenString.find_first_not_of(delim, pos);
        // Find next "non-delimiter"
        pos = tokenString.find_first_of(delim, lastPos);
    }
	return tokens;
}

void ScreenRectToClientRect(HWND hWnd, RECT* rect)
{
	POINT		pt;

	pt.x		 = rect->left;
	pt.y		 = rect->top;
	::ScreenToClient( hWnd, &pt );
	rect->left   = pt.x;
	rect->top    = pt.y;

	pt.x		 = rect->right;
	pt.y		 = rect->bottom;
	::ScreenToClient( hWnd, &pt );
	rect->right  = pt.x;
	rect->bottom = pt.y;
};

int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep) 
{
   if (code == EXCEPTION_ACCESS_VIOLATION)
      return EXCEPTION_EXECUTE_HANDLER;

   return EXCEPTION_CONTINUE_SEARCH;
}

int getCpFromStringValue(const char * encodingStr)
{
	if (!encodingStr)
		return CP_ACP;

	if (stricmp("windows-1250", encodingStr) == 0)
		return 1250;
	if (stricmp("windows-1251", encodingStr) == 0)
		return 1251;
	if (stricmp("windows-1252", encodingStr) == 0)
		return 1252;
	if (stricmp("windows-1253", encodingStr) == 0)
		return 1253;
	if (stricmp("windows-1254", encodingStr) == 0)
		return 1254;
	if (stricmp("windows-1255", encodingStr) == 0)
		return 1255;
	if (stricmp("windows-1256", encodingStr) == 0)
		return 1256;
	if (stricmp("windows-1257", encodingStr) == 0)
		return 1257;
	if (stricmp("windows-1258", encodingStr) == 0)
		return 1258;

	if (stricmp("big5", encodingStr) == 0)
		return 950;
	if (stricmp("gb2312", encodingStr) == 0)
		return 936;
	if (stricmp("shift_jis", encodingStr) == 0)
		return 932;
	if (stricmp("euc-kr", encodingStr) == 0)
		return 51949;
	if (stricmp("tis-620", encodingStr) == 0)
		return 874;

	if (stricmp("iso-8859-8", encodingStr) == 0)
		return 28598;

	if (stricmp("utf-8", encodingStr) == 0)
		return 65001;

	return CP_ACP;
}

std::generic_string purgeMenuItemString(const TCHAR * menuItemStr, bool keepAmpersand)
{
	TCHAR cleanedName[64] = TEXT("");
	size_t j = 0;
	size_t menuNameLen = lstrlen(menuItemStr);
	for(size_t k = 0 ; k < menuNameLen ; k++) 
	{
		if (menuItemStr[k] == '\t')
		{
			cleanedName[k] = 0;
			break;
		}
		else if (menuItemStr[k] == '&')
		{
			if (keepAmpersand)
				cleanedName[j++] = menuItemStr[k];
			//else skip
		}
		else
		{
			cleanedName[j++] = menuItemStr[k];
		}
	}
	cleanedName[j] = 0;
	return cleanedName;
};

const wchar_t * WcharMbcsConvertor::char2wchar(const char * mbcs2Convert, UINT codepage)
{
	if (!_wideCharStr)
	{
		_wideCharStr = new wchar_t[initSize];
		_wideCharAllocLen = initSize;
	}

	int len = MultiByteToWideChar(codepage, 0, mbcs2Convert, -1, _wideCharStr, 0);
	if (len > 0)
	{
		if (len > int(_wideCharAllocLen))
		{
			delete [] _wideCharStr;
			_wideCharAllocLen = len;
			_wideCharStr = new wchar_t[_wideCharAllocLen];
		}
		MultiByteToWideChar(codepage, 0, mbcs2Convert, -1, _wideCharStr, len);
	}
	else
		_wideCharStr[0] = 0;

	return _wideCharStr;
}

// "mstart" and "mend" are pointers to indexes in mbcs2Convert, 
// which are converted to the corresponding indexes in the returned wchar_t string.
const wchar_t * WcharMbcsConvertor::char2wchar(const char * mbcs2Convert, UINT codepage, int *mstart, int *mend)
{
	if (!_wideCharStr)
	{
		_wideCharStr = new wchar_t[initSize];
		_wideCharAllocLen = initSize;
	}

	int len = MultiByteToWideChar(codepage, 0, mbcs2Convert, -1, _wideCharStr, 0);
	if (len > 0)
	{
		if (len > int(_wideCharAllocLen))
		{
			delete [] _wideCharStr;
			_wideCharAllocLen = len;
			_wideCharStr = new wchar_t[_wideCharAllocLen];
		}
		MultiByteToWideChar(codepage, 0, mbcs2Convert, -1, _wideCharStr, len);
		*mstart = MultiByteToWideChar(codepage, 0, mbcs2Convert, *mstart, _wideCharStr, 0);
		*mend   = MultiByteToWideChar(codepage, 0, mbcs2Convert, *mend, _wideCharStr, 0);
	}
	else
	{
		_wideCharStr[0] = 0;
		*mstart = 0;
		*mend = 0;
	}
	return _wideCharStr;
}

const char * WcharMbcsConvertor::wchar2char(const wchar_t * wcharStr2Convert, UINT codepage) 
{
	if (!_multiByteStr)
	{
		_multiByteStr = new char[initSize];
		_multiByteAllocLen = initSize;
	}

	int len = WideCharToMultiByte(codepage, 0, wcharStr2Convert, -1, _multiByteStr, 0, NULL, NULL);
	if (len > 0)
	{
		if (len > int(_multiByteAllocLen))
		{
			delete [] _multiByteStr;
			_multiByteAllocLen = len;
			_multiByteStr = new char[_multiByteAllocLen];
		}
		WideCharToMultiByte(codepage, 0, wcharStr2Convert, -1, _multiByteStr, len, NULL, NULL);
	}
	else
		_multiByteStr[0] = 0;

	return _multiByteStr;
}

std::wstring string2wstring(const std::string & rString, UINT codepage)
{
	int len = MultiByteToWideChar(codepage, 0, rString.c_str(), -1, NULL, 0);
	if(len > 0)
	{		
		std::vector<wchar_t> vw(len);
		MultiByteToWideChar(codepage, 0, rString.c_str(), -1, &vw[0], len);
		return &vw[0];
	}
	else
		return L"";
}

std::string wstring2string(const std::wstring & rwString, UINT codepage)
{
	int len = WideCharToMultiByte(codepage, 0, rwString.c_str(), -1, NULL, 0, NULL, NULL);
	if(len > 0)
	{		
		std::vector<char> vw(len);
		WideCharToMultiByte(codepage, 0, rwString.c_str(), -1, &vw[0], len, NULL, NULL);
		return &vw[0];
	}
	else
		return "";
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产在线观看| 综合电影一区二区三区| 99这里只有久久精品视频| 亚洲第一电影网| 国产婷婷色一区二区三区| 欧美日韩亚洲综合一区二区三区| 国产美女一区二区| 亚洲成人www| 综合色中文字幕| 国产性做久久久久久| 91超碰这里只有精品国产| 99在线精品一区二区三区| 激情综合网av| 视频在线在亚洲| 亚洲一二三区在线观看| 国产精品久久看| 国产午夜亚洲精品不卡| 欧美一区二区在线免费播放| 91看片淫黄大片一级| 亚洲精品一区二区三区香蕉| 91国在线观看| 成人高清伦理免费影院在线观看| 精品午夜久久福利影院| 日韩国产精品大片| 亚洲永久精品国产| 亚洲另类春色校园小说| 国产精品伦一区二区三级视频| www一区二区| 日韩精品一区二区三区在线| 欧美精品123区| 欧美一区二区私人影院日本| 欧美日韩性生活| 欧美日韩小视频| 欧美日韩大陆一区二区| 在线观看中文字幕不卡| 在线亚洲免费视频| 欧美综合一区二区| 在线中文字幕一区| 欧美色老头old∨ideo| 欧美三片在线视频观看| 精品视频在线免费看| 欧美日韩在线播放三区四区| 欧美吻胸吃奶大尺度电影 | 色综合久久精品| 99精品视频在线播放观看| 成人高清视频在线| 国产精品乱子久久久久| 日本一区二区免费在线| 日本一区二区三区久久久久久久久不 | 久久99精品久久久久久国产越南| 亚洲另类中文字| 亚洲福利视频一区| 五月天中文字幕一区二区| 五月激情六月综合| 久久精品72免费观看| 国模无码大尺度一区二区三区| 国产很黄免费观看久久| 波多野结衣中文字幕一区二区三区 | 精品一区二区在线视频| 精品一区二区久久| 风流少妇一区二区| 一本久道中文字幕精品亚洲嫩| av福利精品导航| 欧美性大战久久久久久久| 日韩欧美中文一区二区| 国产亚洲成av人在线观看导航| 亚洲欧洲美洲综合色网| 亚洲午夜激情av| 麻豆精品一区二区av白丝在线| 国产大陆精品国产| 欧美午夜精品一区二区三区| 欧美电影免费观看高清完整版在| 国产亚洲精品资源在线26u| 亚洲美女屁股眼交3| 日本va欧美va精品| 国产成人av电影在线| 国产目拍亚洲精品99久久精品| 一区二区三区在线观看欧美| 日韩精品免费视频人成| 国产大片一区二区| 欧美日韩精品一区二区天天拍小说| 日韩精品资源二区在线| 日本一区二区久久| 天堂av在线一区| 成人福利视频在线| 在线播放/欧美激情| 国产精品狼人久久影院观看方式| 亚洲最快最全在线视频| 国产一区二区三区精品视频| 欧美手机在线视频| 久久精品亚洲精品国产欧美| 亚洲第一av色| av一二三不卡影片| 日韩欧美一级精品久久| 亚洲精品免费在线| 国产成人av一区二区| 欧美日韩国产电影| 中文字幕一区二区三区不卡| 日韩av午夜在线观看| av毛片久久久久**hd| 精品日韩欧美在线| 一区二区三区在线免费播放| 国产激情91久久精品导航| 宅男噜噜噜66一区二区66| 亚洲人成在线观看一区二区| 狠狠色丁香久久婷婷综合丁香| 91福利国产精品| 国产精品视频看| 国内成人自拍视频| 在线电影一区二区三区| 自拍偷拍亚洲综合| 国产91精品精华液一区二区三区 | 丁香天五香天堂综合| 日韩欧美一级在线播放| 亚洲电影一级片| 99国产精品国产精品毛片| 国产亚洲一二三区| 精品一区二区三区视频在线观看| 欧美日韩精品一区二区三区蜜桃 | 亚洲成人动漫一区| 色狠狠av一区二区三区| 国产精品天干天干在观线| 国产一区视频导航| 精品久久99ma| 另类中文字幕网| 91麻豆精品国产自产在线观看一区 | 色综合一区二区| xf在线a精品一区二区视频网站| 日韩av中文字幕一区二区三区| 欧美日韩国产综合一区二区| 亚洲一二三四在线| 色域天天综合网| 夜夜精品浪潮av一区二区三区| 93久久精品日日躁夜夜躁欧美| 中文字幕不卡的av| 国产成都精品91一区二区三| 久久久99免费| 成人的网站免费观看| 国产精品天天看| 91在线云播放| 亚洲精品午夜久久久| 色哟哟在线观看一区二区三区| 国产精品久久久久一区二区三区| 成人97人人超碰人人99| 国产精品国产三级国产aⅴ入口| 成人黄色免费短视频| 国产精品久久毛片| 91精品福利在线| 日韩av网站免费在线| 日韩精品在线看片z| 精品一区二区免费视频| 欧美激情一区在线| 91免费视频观看| 亚洲第一激情av| 欧美zozozo| 成人爽a毛片一区二区免费| 综合电影一区二区三区 | 久久精品在线免费观看| 国产成人精品在线看| 亚洲欧洲av色图| 欧美性videosxxxxx| 麻豆91在线播放免费| 久久婷婷国产综合国色天香 | 国产成人丝袜美腿| 国产精品毛片大码女人| 日本韩国精品在线| 日韩成人av影视| 中文字幕成人网| 欧美色综合影院| 精品一区二区免费在线观看| 欧美经典一区二区三区| 色综合久久88色综合天天| 日韩av在线播放中文字幕| 国产日产精品1区| 在线观看免费视频综合| 久久不见久久见免费视频7 | 国产精品乱子久久久久| 欧美三级欧美一级| 国产电影一区二区三区| 亚洲午夜一二三区视频| 欧美精品一区二区三区蜜臀| www.欧美亚洲| 日韩av成人高清| 日韩一区在线看| 日韩欧美专区在线| av一区二区三区在线| 久久精品国产99国产精品| 亚洲欧洲精品一区二区三区| 日韩精品一区二区三区蜜臀| 91免费小视频| 国产精品综合在线视频| 亚洲一区二区在线免费看| 久久精品视频网| 在线播放中文一区| 91免费看片在线观看| 国产精品系列在线播放| 日日嗨av一区二区三区四区| 亚洲天堂福利av| 久久久99精品免费观看| 欧美疯狂做受xxxx富婆|