📄 cfgdlg.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 + -