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

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

?? regextdlg.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 <windows.h>
#include "regExtDlg.h"
#include "resource.h"

const char *nppName = "Notepad++_file";
const char *nppBackup = "Notepad++_backup";
const char *nppDoc = "Notepad++ Document";

const int nbSupportedLang = 9;
const int nbExtMax = 10;
const int extNameMax = 18;

char defExtArray[nbSupportedLang][nbExtMax][extNameMax] = {
	{"Notepad",        			".txt", ".log", ".ini"},
	{"c, c++, objc",   	".h", ".hpp", ".hxx", ".c", ".cpp", ".cxx", ".cc", ".m"},
	{"java, c#, pascal", 		".java", ".cs", ".pas", ".inc"},
	{"web(html) script",   ".html", ".htm", ".php", ".phtml", ".js", ".jsp", ".asp", ".css", ".xml"},
	{"public script",		".sh", ".bsh", ".nsi", ".nsh", ".lua", ".pl", ".pm", ".py"},
	{"property script",	".rc", ".as", ".mx", ".vb", ".vbs"},
	{"fortran, TeX, SQL",			".f",  ".for", ".f90",  ".f95", ".f2k", ".tex", ".sql"},
	{"misc",								".nfo", ".mak"},
	{"customize"}
};

void RegExtDlg::doDialog(bool isRTL) 
{
	if (isRTL)
	{
		DLGTEMPLATE *pMyDlgTemplate = NULL;
		HGLOBAL hMyDlgTemplate = makeRTLResource(IDD_REGEXT_BOX, &pMyDlgTemplate);
		::DialogBoxIndirectParam(_hInst, pMyDlgTemplate, _hParent,  (DLGPROC)dlgProc, (LPARAM)this);
		::GlobalFree(hMyDlgTemplate);
	}
	else
		::DialogBoxParam(_hInst, MAKEINTRESOURCE(IDD_REGEXT_BOX), _hParent,  (DLGPROC)dlgProc, (LPARAM)this);
};

BOOL CALLBACK RegExtDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
{
	switch (Message)
	{
		case WM_INITDIALOG :
		{
			getRegisteredExts();
			getDefSupportedExts();
			writeNppPath();
			//goToCenter();
			::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false);
			::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), false);
			::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, EM_SETLIMITTEXT, extNameMax-1, 0);

			return TRUE;
		}

		case WM_DRAWITEM :
		{
			HICON hIcon = ::LoadIcon(_hInst, MAKEINTRESOURCE(IDI_DELETE_ICON));
			DRAWITEMSTRUCT *pdis = (DRAWITEMSTRUCT *)lParam;
			::DrawIcon(pdis->hDC, 0, 0, hIcon);
			return TRUE;
		}

		case WM_COMMAND : 
		{
			switch (wParam)
			{
				case IDC_ADDFROMLANGEXT_BUTTON :
				{
					//int index2Add;
					char ext2Add[extNameMax] = "";
					if (!_isCustomize)
					{
						int index2Add = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETCURSEL, 0, 0);
						::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETTEXT, index2Add, (LPARAM)ext2Add);
						addExt(ext2Add);
						::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_DELETESTRING, index2Add, 0);
					}
					else
					{
						::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_GETTEXT, extNameMax, (LPARAM)ext2Add);
						int i = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_FINDSTRINGEXACT, 0, (LPARAM)ext2Add);
						if (i != LB_ERR) 
							return TRUE;
						addExt(ext2Add);
						::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_SETTEXT, 0, (LPARAM)"");
					}
					::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_ADDSTRING, 0, (LPARAM)ext2Add);
					::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false);
					return TRUE;
				}

				case IDC_REMOVEEXT_BUTTON :
				{
					char ext2Sup[extNameMax] = "";
					int index2Sup = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETCURSEL, 0, 0);
					::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETTEXT, index2Sup, (LPARAM)ext2Sup);
					if (deleteExts(ext2Sup))
						::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_DELETESTRING, index2Sup, 0);
					int langIndex = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANG_LIST, LB_GETCURSEL, 0, 0);

					::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), false);

					if (langIndex != LB_ERR)
					{
						for (int i = 1 ; i < nbExtMax ; i++)
						{
							if (!stricmp(ext2Sup, defExtArray[langIndex][i]))
							{
								::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_ADDSTRING, 0, (LPARAM)ext2Sup);
								return TRUE;
							}
						}
					}
					return TRUE;
				}

				case IDCANCEL :
					::EndDialog(_hSelf, 0);
					return TRUE;

			}

			if (HIWORD(wParam) == EN_CHANGE)
            {
				char text[extNameMax] = "";
				::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_GETTEXT, extNameMax, (LPARAM)text);
				if ((strlen(text) == 1) && (text[0] != '.'))
				{
					text[1] = text[0];
					text[0] = '.';
					text[2] = '\0';
					::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_SETTEXT, 0, (LPARAM)text);
					::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, EM_SETSEL, 2, 2);
				}
				::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), (strlen(text) > 1));
				return TRUE;
			}

			if (HIWORD(wParam) == LBN_SELCHANGE)
            {
				int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETCURSEL, 0, 0);
				if (LOWORD(wParam) == IDC_REGEXT_LANG_LIST)
				{
					if (i != LB_ERR)
					{
						char itemName[32];
						::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETTEXT, i, (LPARAM)itemName);

						if (!stricmp(defExtArray[nbSupportedLang-1][0], itemName))
						{
							::ShowWindow(::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST), SW_HIDE);
							::ShowWindow(::GetDlgItem(_hSelf, IDC_CUSTOMEXT_EDIT), SW_SHOW);
							_isCustomize = true;
						}
						else
						{
							if (_isCustomize)
							{
								::ShowWindow(::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST), SW_SHOW);
								::ShowWindow(::GetDlgItem(_hSelf, IDC_CUSTOMEXT_EDIT), SW_HIDE);
								
								_isCustomize = false;
							}
							int count = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETCOUNT, 0, 0);
							for (count -= 1 ; count >= 0 ; count--)
								::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_DELETESTRING, count, 0);

							for (int j = 1 ; j < nbExtMax ; j++)
								if (strcmp("", defExtArray[i][j]))
								{
									int index = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_FINDSTRINGEXACT, 0, (LPARAM)defExtArray[i][j]);
									if (index == -1)
										::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_ADDSTRING, 0, (LPARAM)defExtArray[i][j]);
								}
						}

						::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false);
					}
				}
				
				else if (LOWORD(wParam) == IDC_REGEXT_LANGEXT_LIST)
				{
					if (i != LB_ERR)
						::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), true);

				}

				else if (LOWORD(wParam) == IDC_REGEXT_REGISTEREDEXTS_LIST)
				{
					if (i != LB_ERR)
						::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), true);
				}
			}
		}
		default :
			return FALSE;
	}
	//return FALSE;
}

void RegExtDlg::getRegisteredExts()
{
	int nbRegisteredKey = getNbSubKey(HKEY_CLASSES_ROOT);
	for (int i = 0 ; i < nbRegisteredKey ; i++)
	{
		char extName[extNameLen];
		//FILETIME fileTime;
		int extNameActualLen = extNameLen;
		int res = ::RegEnumKeyEx(HKEY_CLASSES_ROOT, i, extName, (LPDWORD)&extNameActualLen, NULL, NULL, NULL, NULL);
		if ((res == ERROR_SUCCESS) && (extName[0] == '.'))
		{
			//char valName[extNameLen];
			char valData[extNameLen];
			int valDataLen = extNameLen;
			int valType;
			HKEY hKey2Check;
			extNameActualLen = extNameLen;
			::RegOpenKeyEx(HKEY_CLASSES_ROOT, extName, 0, KEY_ALL_ACCESS, &hKey2Check);
			::RegQueryValueEx(hKey2Check, "", NULL, (LPDWORD)&valType, (LPBYTE)valData, (LPDWORD)&valDataLen);
			//::RegEnumValue(hKey2Check, 0, valName, (LPDWORD)&extNameActualLen, NULL, (LPDWORD)&valType, (LPBYTE)valData, (LPDWORD)&valDataLen);
			if ((valType == REG_SZ) && (!strcmp(valData, nppName)))
				::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_ADDSTRING, 0, (LPARAM)extName);
			::RegCloseKey(hKey2Check);
		}
	}
}

void RegExtDlg::getDefSupportedExts()
{
	for (int i = 0 ; i < nbSupportedLang ; i++)
		::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANG_LIST, LB_ADDSTRING, 0, (LPARAM)defExtArray[i][0]);
}


void RegExtDlg::addExt(char *ext)
{
    HKEY  hKey;
    DWORD dwDisp;
    long  nRet;
    
	nRet = ::RegCreateKeyEx(HKEY_CLASSES_ROOT,
                ext,
                0,
                NULL,
                0,
                KEY_ALL_ACCESS,
                NULL,
                &hKey,
                &dwDisp);
    
    if (nRet == ERROR_SUCCESS)
    {
		int valDataLen = 256;
		char valData[256];
		

		if (dwDisp == REG_OPENED_EXISTING_KEY)
		{
			int res = ::RegQueryValueEx(hKey, "", NULL, NULL, (LPBYTE)valData, (LPDWORD)&valDataLen);
			if (res == ERROR_SUCCESS)
				::RegSetValueEx(hKey, nppBackup, 0, REG_SZ, (LPBYTE)valData, valDataLen+1);
		}
		::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppName, strlen(nppName)+1);

		::RegCloseKey(hKey);
    }
}

bool RegExtDlg::deleteExts(const char *ext2Delete)
{
	HKEY hKey;
	::RegOpenKeyEx(HKEY_CLASSES_ROOT, ext2Delete, 0, KEY_ALL_ACCESS, &hKey);

	int nbValue = getNbSubValue(hKey);
	int nbSubkey = getNbSubKey(hKey);

	if ((nbValue <= 1) && (!nbSubkey))
	{
		char subKey[32] = "\\";
		strcat(subKey, ext2Delete);
		::RegDeleteKey(HKEY_CLASSES_ROOT, subKey);
	}
	else
	{
		char valData[extNameLen];
		int valDataLen = extNameLen;
		int valType;
		int res = ::RegQueryValueEx(hKey, nppBackup, NULL, (LPDWORD)&valType, (LPBYTE)valData, (LPDWORD)&valDataLen);

		if (res == ERROR_SUCCESS)
		{
			::RegSetValueEx(hKey, NULL, 0, valType, (LPBYTE)valData, valDataLen);
			::RegDeleteValue(hKey, nppBackup);
		}
		else
			::RegDeleteValue(hKey, NULL);
	}

	return true;
}

void RegExtDlg::writeNppPath()
{
	HKEY  hKey, hRootKey;
	DWORD dwDisp;
	long  nRet;
	char regStr[MAX_PATH] = "";
	strcat(strcat(regStr, nppName), "\\shell\\open\\command");

	nRet = ::RegCreateKeyEx(
				HKEY_CLASSES_ROOT,
				regStr,
				0,
				NULL,
				0,
				KEY_ALL_ACCESS,
				NULL,
				&hKey,
				&dwDisp);


	if (nRet == ERROR_SUCCESS)
	{
		//if (dwDisp == REG_CREATED_NEW_KEY)
		{
			// Write the value for new document
			::RegOpenKeyEx(HKEY_CLASSES_ROOT, nppName, 0, KEY_ALL_ACCESS, &hRootKey);
			::RegSetValueEx(hRootKey, NULL, 0, REG_SZ, (LPBYTE)nppDoc, strlen(nppDoc)+1);

			char nppPath[MAX_PATH];
			::GetModuleFileName(_hInst, nppPath, MAX_PATH);

			char nppPathParam[256] = "\"";
			strcat(strcat(nppPathParam, nppPath), "\" \"%1\"");

			::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppPathParam, strlen(nppPathParam)+1);
		}
		RegCloseKey(hKey);
	}
} 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩日欧美一区二区三区| 国产精品三级电影| 免费人成黄页网站在线一区二区| 日本大香伊一区二区三区| 亚洲精品中文在线观看| 91久久国产最好的精华液| 亚洲国产美国国产综合一区二区| 欧美日韩日日摸| 日韩国产在线观看| 久久青草欧美一区二区三区| 国产99久久久精品| 亚洲人成网站在线| 日韩视频在线你懂得| 国产精品一区二区你懂的| 亚洲欧洲国产日韩| 欧美久久久久免费| 国产成人午夜精品影院观看视频| 亚洲四区在线观看| 日韩一区二区三区免费观看| 成人黄色大片在线观看| 亚洲丰满少妇videoshd| 久久人人爽人人爽| 欧美日韩综合一区| 国产精品99久久久久久宅男| 91在线观看免费视频| 在线成人小视频| 麻豆视频一区二区| 中文字幕国产一区| 欧美少妇性性性| 国产一区久久久| 亚洲一区二三区| 国产欧美一区二区精品性色超碰| 欧美影视一区在线| 国产精品亚洲第一区在线暖暖韩国 | 久久精品久久久精品美女| 国产精品久久久久久亚洲毛片 | 欧美网站一区二区| 日本成人中文字幕在线视频 | 久久免费国产精品| 欧美午夜视频网站| 国产美女av一区二区三区| 亚洲午夜激情网站| 一区在线观看免费| 日韩欧美综合在线| 在线影院国内精品| 成人在线一区二区三区| 美女www一区二区| 亚洲高清免费在线| 亚洲日本免费电影| 国产精品素人一区二区| 亚洲人亚洲人成电影网站色| 欧美大度的电影原声| 在线观看视频一区| jlzzjlzz国产精品久久| 国产成人在线影院| 国产麻豆午夜三级精品| 免费成人av资源网| 亚洲国产成人高清精品| 亚洲人精品午夜| 中文字幕精品一区| 国产日产欧美一区| 久久色在线观看| 日韩欧美高清dvd碟片| 在线电影欧美成精品| 欧美日韩久久久久久| 日本道免费精品一区二区三区| 99久久精品国产精品久久| 成人激情免费视频| 成人av小说网| 99精品欧美一区二区三区综合在线| 国产成人av电影免费在线观看| 国产综合久久久久久鬼色| 欧美老年两性高潮| 亚洲国产日韩av| 一区在线观看视频| 国产精品久久久久桃色tv| 国产精品视频一二三| 欧美国产日本韩| 国产精品沙发午睡系列990531| 国产日韩一级二级三级| 国产欧美va欧美不卡在线| 欧美国产一区在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人福利电影精品一区二区在线观看| 国产呦精品一区二区三区网站| 精品在线亚洲视频| 国产精品一二一区| 丁香五精品蜜臀久久久久99网站| 高清不卡一区二区| 96av麻豆蜜桃一区二区| 在线观看av一区| 日韩一区二区三区在线观看| 日韩欧美电影在线| 欧美激情一区二区三区在线| 136国产福利精品导航| 亚洲一区中文日韩| 日本午夜精品视频在线观看 | 丝袜诱惑亚洲看片| 久久99最新地址| 不卡高清视频专区| 欧美日韩中文字幕一区二区| 日韩一区二区精品葵司在线| 国产视频一区不卡| 亚洲免费观看在线视频| 日本伊人精品一区二区三区观看方式| 久久精品国产久精国产爱| 福利电影一区二区三区| 色悠悠久久综合| 日韩视频免费观看高清在线视频| 久久在线观看免费| 中文字幕欧美一区| 男男成人高潮片免费网站| 成人一区二区三区在线观看| 欧美在线播放高清精品| 精品人在线二区三区| 日韩毛片精品高清免费| 青青青爽久久午夜综合久久午夜| 国产盗摄一区二区| 欧美视频一二三区| 亚洲国产激情av| 日韩精彩视频在线观看| 波多野结衣中文字幕一区二区三区| 欧美亚洲综合在线| 精品国产精品网麻豆系列 | 91麻豆精品国产91久久久资源速度| 精品久久久久香蕉网| 亚洲欧美日韩在线不卡| 黄一区二区三区| 欧美日韩高清一区| 自拍av一区二区三区| 激情综合网天天干| 欧美精品久久天天躁| 亚洲婷婷综合色高清在线| 国产一区二区在线看| 欧美日韩国产天堂| 中文字幕日韩欧美一区二区三区| 黄色日韩三级电影| 91精品中文字幕一区二区三区| 亚洲欧洲精品一区二区三区| 国产一区二区三区免费播放| 91精品免费在线| 亚洲综合在线观看视频| 成人a区在线观看| 久久久久久久网| 麻豆极品一区二区三区| 3d动漫精品啪啪| 一区二区高清免费观看影视大全| 成人精品国产免费网站| 久久久久久久久久看片| 久久超碰97人人做人人爱| 欧美精品一卡二卡| 一区二区国产盗摄色噜噜| 91在线观看地址| 成人欧美一区二区三区| 国产精品91一区二区| 久久先锋影音av鲁色资源网| 精品一区免费av| 精品免费国产二区三区| 久久aⅴ国产欧美74aaa| 日韩免费高清av| 精品一区免费av| 亚洲精品一区二区三区99| 狠狠色丁香久久婷婷综合丁香| 日韩一区二区三区电影 | 亚洲一区二区不卡免费| 91久久人澡人人添人人爽欧美| 国产精品国产三级国产| 99视频有精品| 樱桃国产成人精品视频| 色素色在线综合| 亚洲成人动漫一区| 91麻豆精品国产| 裸体歌舞表演一区二区| 亚洲精品在线三区| 国产二区国产一区在线观看| 日本一区二区成人在线| www..com久久爱| 亚洲一区二区三区爽爽爽爽爽| 欧美午夜不卡视频| 日本sm残虐另类| 久久久无码精品亚洲日韩按摩| 成人午夜视频免费看| 日韩一区欧美小说| 欧美亚男人的天堂| 蓝色福利精品导航| 中文字幕av一区二区三区高 | 国产乱子伦一区二区三区国色天香| 久久婷婷国产综合国色天香 | 国产精品自在在线| 一区精品在线播放| 欧美夫妻性生活| 国产在线播精品第三| 国产精品美女一区二区三区| 欧亚一区二区三区| 蜜桃av一区二区在线观看| 国产精品丝袜一区| 欧美电影一区二区三区| 国产一区二区91| 亚洲一区二区四区蜜桃| 日韩精品一区二区三区在线播放|