📄 dlgoption.cpp
字号:
#include <windows.h>
#include <TCHAR.H>
#include "resource.h"
#include "Define.h"
#include "Common.h"
#include "DlgOption.h"
extern SYSTEM g_Sys;
BOOL CALLBACK DlgOption(HWND hDlg, UINT uMsg,WPARAM wParam, LPARAM)
{ static DLGOPTION Dlg = {0};
TCHAR caBuffer[MAX_STRING] = {0};
HWND hCtrl = NULL;
INT iID = 0;
switch ( uMsg ){
case WM_INITDIALOG: return InitDlgOption(hDlg, &Dlg);
case WM_COMMAND:
switch ( LOWORD(wParam) ){
case IDOK: return DlgOptionOnOk (hDlg, &Dlg);
case IDCANCEL: return DlgOptionOnCancel(hDlg, &Dlg);
default: break;
}
break;
case WM_CLOSE: return EndDialog(hDlg, wParam);
default: break;
}
return FALSE;
}
BOOL InitDlgOption(HWND hDlg, PDLGOPTION pDlg)
{
pDlg->hDlg = hDlg;
pDlg->hEbDriverName = GetDlgItem(hDlg, IDEB_DRIVERNAME);
pDlg->hEbDDKPath = GetDlgItem(hDlg, IDEB_DDKPATH);
pDlg->hEbSourcePath = GetDlgItem(hDlg, IDEB_SOURCEPATH);
pDlg->hEbCopyToPath = GetDlgItem(hDlg, IDEB_COPYTOPATH);
EbCtrl_LimitText(pDlg->hEbDriverName, _MAX_PATH);
EbCtrl_LimitText(pDlg->hEbDDKPath , _MAX_PATH);
EbCtrl_LimitText(pDlg->hEbSourcePath, _MAX_PATH);
EbCtrl_LimitText(pDlg->hEbCopyToPath, _MAX_PATH);
SetWindowText(pDlg->hEbDriverName, g_Sys.Option.caDriverName);
SetWindowText(pDlg->hEbDDKPath , g_Sys.Option.caDDKPath);
SetWindowText(pDlg->hEbSourcePath, g_Sys.Option.caSourcePath);
SetWindowText(pDlg->hEbCopyToPath, g_Sys.Option.caCopyToPath);
SetFocus(pDlg->hEbDriverName);
return TRUE;
}
BOOL DlgOptionOnOk(HWND hDlg, PDLGOPTION pDlg)
{ TCHAR caBuffer[MAX_STRING];
HWND hCtrl;
INT iID;
GetWindowText(pDlg->hEbDriverName, pDlg->Option.caDriverName, _MAX_PATH+1);
GetWindowText(pDlg->hEbDDKPath, pDlg->Option.caDDKPath, _MAX_PATH+1);
GetWindowText(pDlg->hEbSourcePath, pDlg->Option.caSourcePath, _MAX_PATH+1);
GetWindowText(pDlg->hEbCopyToPath, pDlg->Option.caCopyToPath, _MAX_PATH+1);
LTrimStr(RTrimStr(pDlg->Option.caDriverName));
LTrimStr(RTrimStr(pDlg->Option.caDDKPath));
LTrimStr(RTrimStr(pDlg->Option.caSourcePath));
LTrimStr(RTrimStr(pDlg->Option.caCopyToPath));
if ( IsOptionError(caBuffer, &iID, &(pDlg->Option)) ){
MessageBox(hDlg, caBuffer, _T("Option"), MB_ICONERROR);
switch ( iID ){
case 0: hCtrl = pDlg->hEbDriverName; break;
case 1: hCtrl = pDlg->hEbDDKPath; break;
case 2: hCtrl = pDlg->hEbSourcePath; break;
case 3: hCtrl = pDlg->hEbCopyToPath; break;
default: hCtrl = pDlg->hEbDriverName; break;
}
SetFocus(hCtrl);
EbCtrl_SetSel(hCtrl, 0, -1);
return TRUE;
}
CopyMemory(&(g_Sys.Option), &(pDlg->Option), sizeof(OPTION));
if ( !SaveOption(&(g_Sys.Option)) ){
GetErrorMessage(caBuffer, MAX_STRING, GetLastError());
FMessageBox(hDlg, MB_ICONERROR, _T("Option"),
_T("保存 %s\\%s 文件失败:%s"),
g_Sys.caPath, OPTION_FNAME, caBuffer);
return TRUE;
}
PostMessage(hDlg, WM_CLOSE, 0, 0);
return TRUE;
}
BOOL DlgOptionOnCancel(HWND hDlg, PDLGOPTION pDlg)
{
PostMessage(hDlg, WM_CLOSE, 0, 0);
return TRUE;
}
BOOL IsOptionError(LPTSTR lpMsg, PINT pID, POPTION pOption)
{ LPCTSTR lpItem[][2] = {{_T("Driver Name:") , pOption->caDriverName},
{_T("DDK Path:") , pOption->caDDKPath },
{_T("SourceFile Path:"), pOption->caSourcePath},
{_T("CopyTo Path:") , pOption->caCopyToPath},
{NULL, NULL}
};
LPCTSTR lpErrChar = NULL;
INT iID = 0;
for (iID = 0; NULL != lpItem[iID][0]; iID ++){
if ( lstrlen(lpItem[iID][1]) == 0 ) goto Err_NULL;
}
lpErrChar = CheckFileName(lpItem[0][1]);
if ( NULL != lpErrChar ){
iID = 0;
goto Err_Char;
}
lpErrChar = CheckPathName(lpItem[1][1]);
if ( NULL != lpErrChar ){
iID = 1;
goto Err_Char;
}
lpErrChar = CheckPathName(lpItem[2][1]);
if ( NULL != lpErrChar ){
iID = 2;
goto Err_Char;
}
lpErrChar = CheckPathName(lpItem[3][1]);
if ( NULL != lpErrChar ){
iID = 3;
goto Err_Char;
}
if ( !DirectoryExist(lpItem[1][1]) ){
iID = 1;
goto Err_Exist;
}
if ( !DirectoryExist(lpItem[2][1]) ){
iID = 2;
goto Err_Exist;
}
if ( !DirectoryExist(lpItem[3][1]) ){
iID = 3;
goto Err_Exist;
}
return FALSE;
Err_NULL:
if ( NULL != lpMsg ){
wsprintf(lpMsg, _T("未指定 [%s] !"), lpItem[iID][0]);
}
goto Err;
Err_Char:
if ( NULL != lpMsg ){
wsprintf(lpMsg, _T("[%s] - \"%s\" 内含有非法字符:%c "),
lpItem[iID][0], lpItem[iID][1], *lpErrChar);
}
goto Err;
Err_Exist:
if ( NULL != lpMsg ){
wsprintf(lpMsg, _T("指定的目录不存在:%s "), lpItem[iID][1]);
}
goto Err;
Err:
if (NULL != pID) *pID = iID;
return TRUE;
}
BOOL LoadOption(POPTION pOption)
{ TCHAR caFileName[_MAX_PATH];
HANDLE hFile = NULL;
DWORD dwReaded = 0L;
DWORD dwSize = 0L;
MakeFileName(caFileName, g_Sys.caPath, OPTION_FNAME, NULL);
hFile = CreateFile(caFileName,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if ( INVALID_HANDLE_VALUE == hFile ){
return FALSE;
}
dwSize = sizeof(OPTION);
if ( (!ReadFile(hFile, pOption, dwSize, &dwReaded, NULL)) ||
(dwReaded != dwSize ) ){
CloseHandle(hFile);
return FALSE;
}
CloseHandle(hFile);
return TRUE;
}
BOOL SaveOption(POPTION pOption)
{ TCHAR caFileName[_MAX_PATH] = {0};
HANDLE hFile = NULL;
DWORD dwSize = 0L;
DWORD dwWritten = 0L;
dwSize = sizeof(OPTION);
MakeFileName(caFileName, g_Sys.caPath, OPTION_FNAME, NULL);
hFile = CreateFile(caFileName,
GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH,
NULL);
if ( INVALID_HANDLE_VALUE == hFile ){
return FALSE;
}
if ( (!WriteFile(hFile, pOption, dwSize, &dwWritten, NULL)) ||
(dwWritten != dwSize ) ||
(!FlushFileBuffers(hFile) ) ){
CloseHandle(hFile);
return FALSE;
}
CloseHandle(hFile);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -