⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfgdlg.cpp

📁 一个解压程序,只要设定了解压路径和解压文件的种类,就可以随意解压
💻 CPP
字号:

#include "CfgDlg.h"
#include "CfgExtDlg.h"
#include "kiutil.h"
#include "ueutil.h"
#include "conv.h"

HINSTANCE CCfgDlg::hInst;

// 堷悢側偟帪偺愝掕僟僀傾儘僌/////////////////////

void CCfgDlg::Start()
{
	HWND dlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_CONFIG),
					NULL, Proc);
	ShowWindow( dlg,SW_SHOW );
	UpdateWindow( dlg );
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) {	// 儊僢僙乕僕偺庢摼偲僨傿僗僷僢僠
		TranslateMessage(&msg);				// 壖憐僉乕僐乕僪偺曄姺
		DispatchMessage(&msg);				// 儊僢僙乕僕偺僨傿僗僷僢僠
	}
	DestroyWindow( dlg );
}

BOOL CALLBACK CCfgDlg::Proc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp )
{
	int selected;
	TCHAR lpBuf[MAX_PATH];
	HWND hList;
//	WIN32_FIND_DATA	w32FindData;
	TCHAR lpTemp[MAX_PATH];
	int rc;
//	char *path;
	//TCHAR t_path[MAX_PATH]; //SK
    TCHAR* t_path; //SK
	CCfgExtDlg ext(hInst);
	TCHAR lpUpperDir[256];
	TCHAR *lpp;

	if( msg==WM_INITDIALOG ){
		
        

		// 僄僨傿僢僩儃僢僋僗偵尰嵼偺僨傿儗僋僩儕傪昞帵
		//path = (char*)LocalAlloc(LPTR, MAX_PATH*sizeof(char)+1); //by SK
		//sk 
		//path= ueutil::GetExtractPath();
		
		//_MultiByteToWideChar(CP_ACP, 0, path, strlen(path)+1,
		//	t_path, strlen(path)+1);
        t_path=char2tchar((char *)ueutil::GetExtractPath()); //sk   

	
		SetWindowText(GetDlgItem(dlg, IDC_EDIT1), t_path);
		//LocalFree(path); // by SK

		lstrcpy(lpUpperDir, t_path);
/*		for(lpp=lpUpperDir+lstrlen(lpUpperDir);lpp!=lpUpperDir;lpp--){
			if(*lpp==L'\\'){
				*lpp = L'\0';// lpLowerDir = lpp; lpp=lpUpperDir; 
				lstrcpy(lpLowerDir, lpp+1);
				lpp = lpUpperDir;
			}
		}
*/		EnumFolder(dlg, lpUpperDir);
		// 慖戰偡傋偒崁栚傪僴僀儔僀僩
/*		int count = SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_GETCOUNT, 0, 0L);
		for(int i=0;i<count;i++){
			SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_GETTEXT, i, (LPARAM)lpTemp);
			if(0==lstrcmp(lpLowerDir, lpTemp)){
				SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_SETCURSEL, i, 0L);
				break;
			}
		}
*/
		// 儕僗僩儃僢僋僗偵堦奒憌忋偺僨傿儗僋僩儕傪楍嫇偟丄
		// 慖戰偝傟偰偄傞僨傿儗僋僩儕傪僴僀儔僀僩
//		EnumFolder(dlg, L"");
//		EnumFolder(dlg, t_path);

		// [僼僅儖僟帺摦惗惉]偺僗僥乕僞僗傪僠僃僢僋
		if(ueutil::GetMakeDirectory()){
			
		    SendMessage(GetDlgItem(dlg, IDC_MAKEDIR), BM_SETCHECK, BST_CHECKED, 0);
		//	SendMessage(GetDlgItem(dlg, IDC_MAKEDIR), BM_CLICK, 0, 0);
		}

		// [僼僅儖僟傪奐偔]偺僗僥乕僞僗傪僠僃僢僋
		if(ueutil::GetOpenDirectory())
		{    
			SendMessage(GetDlgItem(dlg, IDC_OPENDIR), BM_SETCHECK, BST_CHECKED, 0);
		//	SendMessage(GetDlgItem(dlg, IDC_OPENDIR), BM_CLICK, 0, 0);
		}

		SetFocus(GetDlgItem(dlg, IDC_EDIT1));
		// return FALSE; //sk
        return TRUE; //sk   
	}else if( msg==WM_COMMAND ){
		if(HIWORD(wp) == LBN_DBLCLK){
			hList = GetDlgItem(dlg, IDC_LIST1);

			//儕僗僩偺撪梕傪庴偗庢傝
			selected = SendMessage(hList, LB_GETCURSEL, 0, 0L);
			SendMessage(hList, LB_GETTEXT, selected, (LPARAM)lpBuf);

			if(0==lstrcmp(L"..", lpBuf)){
				// 傂偲偮忋偺僨傿儗僋僩儕偵
				lstrcpy(lpUpperDir, lpBuf);
				for(lpp=lpUpperDir+lstrlen(lpUpperDir);lpp!=lpUpperDir;lpp--){
					if(*lpp==L'\\'){
						*lpp = L'\0';
						lpp = lpUpperDir;
					}
				}
			}else{
				// 壓偺僨傿儗僋僩儕偵
				GetWindowText(GetDlgItem(dlg, IDC_EDIT1), lpTemp, MAX_PATH);
				if(0==lstrcmp(lpTemp, L"\\")) lstrcpy(lpTemp, L"");
				wsprintf(lpUpperDir, L"%s\\%s", lpTemp, lpBuf);
			}
			EnumFolder(dlg, lpUpperDir);
			if(0==lstrcmp(lpUpperDir, L"..")){
				lstrcpy(lpUpperDir, L"\\");
			}
			SetWindowText(GetDlgItem(dlg, IDC_EDIT1), lpUpperDir);

			//偦偺僼僅儖僟偵拞恎偑側偄側傜嵞昞帵偼偟側偄
//			wsprintf(lpTemp, L"%s\\*.*", lpBuf);
//			if(INVALID_HANDLE_VALUE!=::FindFirstFile(lpTemp,&w32FindData)){
				//僨傿儗僋僩儕偺嵞昞帵
//				SendMessage(hList, LB_RESETCONTENT, 0, 0L);
//				SetWindowText(GetDlgItem(dlg, IDC_EDIT1), lpBuf);
//				EnumFolder(dlg, lpBuf);
//			}
			return TRUE;
		}
		switch (wp) {
		case IDC_BUTTON1:
			ext.Start();

			return TRUE;
		case IDOK:
			TCHAR lpDirectory[MAX_PATH];
			// 夝搥愭僨傿儗僋僩儕偺忣曬傪庢摼偟偰丄儗僕僗僩儕偵彂偒崬傒
			GetWindowText(GetDlgItem(dlg, IDC_EDIT1), lpDirectory, MAX_PATH);
			ueutil::SetExtractPath(lpDirectory);

			// [僼僅儖僟帺摦惗惉]偺忣曬傪庢摼偟偰丄儗僕僗僩儕偵彂偒崬傒
			rc = SendMessage(GetDlgItem(dlg, IDC_MAKEDIR), BM_GETCHECK, 0, 0);
			if(rc==BST_CHECKED) ueutil::SetMakeDirectory(true);
			else ueutil::SetMakeDirectory(false);

			// [僼僅儖僟傪奐偔]偺忣曬傪庢摼偟偰丄儗僕僗僩儕偵彂偒崬傒
			rc = SendMessage(GetDlgItem(dlg, IDC_OPENDIR), BM_GETCHECK, 0, 0);
			if(rc==BST_CHECKED) ueutil::SetOpenDirectory(true);
			else ueutil::SetOpenDirectory(false);

			PostQuitMessage(0);
			return TRUE;
		case IDCANCEL:
			PostQuitMessage(0);
			return TRUE;
		}
		return TRUE;
	} // if
	return FALSE;
}

BOOL CCfgDlg::EnumFolder(HWND dlg, LPTSTR lpDirectory)
{
	HANDLE hFile;
	WIN32_FIND_DATA	w32FindData;
	TCHAR lpTemp[256];
//	TCHAR lpBuf[512];
//	TCHAR lpUpperDir[256]; // 堦奒憌忋偺僨傿儗僋僩儕柤傪奿擺
//	TCHAR lpLowerDir[256]; // 嵟壓憌偺僨傿儗僋僩儕柤傪奿擺
//	TCHAR* lp;

	struct FILEDATA
	{
		TCHAR pszPathName[MAX_PATH+1];
		BOOL bFolder;
	} fd={L"",FALSE};

	// 儕僗僩傪僋儕傾
	int count = SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_GETCOUNT, 0, 0L);
	for(int i=0;i<count;i++){
		SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_DELETESTRING, 0, 0L);
	}

	// 傂偲偮忋偺僨傿儗僋僩儕柤傪庢摼
	// 屻傠偐傜専嶕偟偰偄偭偰丄\ 偑偁偭偨傜
	// 偦偙傪 NULL 偵偡傟偽偄偄丠
/*	lstrcpy(lpUpperDir, lpDirectory);
	for(lp = lpUpperDir+lstrlen(lpUpperDir);lp!=lpUpperDir;lp--){
		if(lp==L'\\'){
			lp = L'\0'; lpLowerDir = lp; lp=lpUpperDir; 
		}
	}
*/
	// 埲壓丄僨傿儗僋僩儕楍嫇張棟
	wsprintf(lpTemp, L"%s\\*.*", lpDirectory);
	hFile=::FindFirstFile(lpTemp,&w32FindData);

	if(hFile==INVALID_HANDLE_VALUE) return FALSE;

	SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_ADDSTRING,
		0, (LPARAM)L"..");
	do{
		lstrcpy(fd.pszPathName,w32FindData.cFileName);
		w32FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? fd.bFolder=TRUE : fd.bFolder=FALSE;
		if(fd.bFolder==TRUE){
//			wsprintf(lpBuf, L"%s", fd.pszPathName);
			wsprintf(lpTemp, L"%s", fd.pszPathName);
			SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_ADDSTRING,
				0, (LPARAM)lpTemp);
		}
	}while(FindNextFile(hFile,&w32FindData));

	FindClose(hFile);
/*
	// 慖戰偡傋偒崁栚傪僴僀儔僀僩
	int count = SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_GETCOUNT, 0, 0L);
	for(int i=0;i<count;i++){
		SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_GETTEXT, i, (LPARAM)lpTemp);
		if(0==lstrcmp(lpLowerDir, lpTemp)){
			SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_SETCURSEL, i, 0L);
			break;
		}
	}
*/
/*
	if(hFile!=INVALID_HANDLE_VALUE){
		SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_ADDSTRING,
			0, (LPARAM)L"..");
		do{
			lstrcpy(fd.pszPathName,w32FindData.cFileName);
			w32FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? fd.bFolder=TRUE : fd.bFolder=FALSE;
			if(fd.bFolder==TRUE){
				wsprintf(lpBuf, L"%s", fd.pszPathName);
				SendMessage(GetDlgItem(dlg, IDC_LIST1), LB_ADDSTRING,
					0, (LPARAM)lpBuf);
			}
		}while(FindNextFile(hFile,&w32FindData));

		FindClose(hFile);

	}else{
		return FALSE;
	}
*/
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -