📄 ectrans.c
字号:
case WM_COMMAND:
switch (wParam)
{
case IDC_STRLIST:
{
NPSTR pStr;
wParam = SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETCURSEL, NULL, NULL);
pStr = (NPSTR)LocalAlloc (LPTR,
max(256,(UINT)SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETTEXTLEN, wParam, NULL)+4));
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETTEXT, wParam, (LPARAM)(LPSTR)pStr);
if (*pStr)
{
wParam = (WPARAM)pStr;
for (pStr++;
*pStr && (*pStr != '=' || pStr[-1] == '\\');
pStr++);
if (*pStr)
{
*pStr = 0;
SetDlgItemText (hDlg, IDC_CHNSTR, pStr+1);
pStr = (NPSTR)wParam;
SetDlgItemText (hDlg, IDC_ENGSTR, pStr);
EnableWindow (GetDlgItem (hDlg, IDC_MODIFY), TRUE);
}
else
{
pStr = (NPSTR)wParam;
SetDlgItemText (hDlg, IDC_ENGSTR, pStr);
FindNearestString (pStr, pStr, 255);
SetDlgItemText (hDlg, IDC_CHNSTR, pStr);
EnableWindow (GetDlgItem (hDlg, IDC_MODIFY), FALSE);
}
}
LocalFree ((HANDLE)pStr);
}
break;
case IDC_CLEAR:
{
int i;
wParam = SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETSELCOUNT, NULL, NULL);
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETSELITEMS, wParam, lParam);
for (i = 0; i < (int)wParam; i++)
{
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETSELITEMS,
1, (LPARAM)(LPINT)&lParam);
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_DELETESTRING,
LOWORD(lParam), NULL);
}
if (!SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETCOUNT, NULL, NULL))
{
RECT rect;
HWND hWnd;
if (hMemECErr)
{
lParam = (LPARAM)GlobalLock (hMemECErr);
*(LPINT)lParam = 0;
GlobalUnlock (hMemECErr);
}
hWnd = GetDlgItem (hDlg, IDC_MIDLINE);
GetWindowRect (hWnd, &rect);
wParam = rect.bottom;
GetWindowRect (hDlg, &rect);
ShowWindow (GetDlgItem (hDlg, IDC_MIDLINE), SW_HIDE);
MoveWindow (hDlg, rect.left, rect.top,
rect.right-rect.left, wParam-rect.top,
TRUE);
InvalidateRect (hDlg, NULL, TRUE);
WseCenterWindow (hDlg);
}
}
break;
case IDC_FIND:
{
NPSTR pStr = (NPSTR)LocalAlloc (LPTR, 256);
GetDlgItemText (hDlg, IDC_ENGSTR, pStr, 255);
FindNearestString (pStr, pStr, 255);
SetDlgItemText (hDlg, IDC_CHNSTR, pStr);
SendDlgItemMessage (hDlg, IDC_FIND, BM_SETSTYLE,
(WPARAM)BS_PUSHBUTTON, 1L);
LocalFree ((HANDLE)pStr);
}
break;
case IDC_MODIFY:
{
HGLOBAL hMem1 = GlobalAlloc (GPTR, 512);
HGLOBAL hMem2 = GlobalAlloc (GPTR, 512);
LPSTR lpStr1 = GlobalLock (hMem1);
LPSTR lpStr2 = GlobalLock (hMem2);
GetDlgItemText (hDlg, IDC_ENGSTR, lpStr1, 256);
GetDlgItemText (hDlg, IDC_CHNSTR, lpStr2, 256);
if (*lpStr1 && *lpStr2)
{
HCURSOR hPrevCur = SetCursor (LoadCursor(NULL,IDC_WAIT));
if (*lpStr2)
ECDctModifyString (lpStr1, lpStr2);
else
{
wsprintf (lpStr2, szConfirmDelete,
lpStr1);
if (MessageBox (hDlg, lpStr2, szConfirm, MB_YESNO | MB_ICONQUESTION) == IDYES)
{
ECDctDeleteString (lpStr1);
PostMessage (hDlg, WM_COMMAND, IDC_FIND, NULL);
}
}
SendDlgItemMessage (hDlg, IDC_MODIFY, BM_SETSTYLE,
(WPARAM)BS_PUSHBUTTON, 1L);
SetCursor (hPrevCur);
}
GlobalUnlock (hMem1);
GlobalUnlock (hMem2);
GlobalFree (hMem1);
GlobalFree (hMem2);
}
break;
case IDC_DELETE:
{
HGLOBAL hMem1 = GlobalAlloc (GPTR, 512);
HGLOBAL hMem2 = GlobalAlloc (GPTR, 512);
LPSTR lpStr1 = GlobalLock (hMem1);
LPSTR lpStr2 = GlobalLock (hMem2);
GetDlgItemText (hDlg, IDC_ENGSTR, lpStr1, 500);
if (*lpStr1)
{
wsprintf (lpStr2, szConfirmDelete, lpStr1);
if (MessageBox (hDlg, lpStr2, szConfirm, MB_YESNO | MB_ICONQUESTION) == IDYES)
{
ECDctDeleteString (lpStr1);
PostMessage (hDlg, WM_COMMAND, IDC_FIND, NULL);
}
}
GlobalUnlock (hMem1);
GlobalUnlock (hMem2);
GlobalFree (hMem1);
GlobalFree (hMem2);
}
break;
case IDC_MERGE:
{
OPENFILENAME *ofn;
NPSTR szFile;
ofn = (OPENFILENAME *)LocalAlloc (LPTR, sizeof(OPENFILENAME));
szFile = (NPSTR)LocalAlloc (LPTR, 256);
ofn->lStructSize = sizeof(OPENFILENAME);
ofn->hwndOwner = hDlg;
ofn->lpstrFilter = szTextFilter;
ofn->nFilterIndex = 1;
ofn->lpstrFile = szFile;
ofn->nMaxFile = 255;
ofn->lpstrFileTitle = NULL;
ofn->nMaxFileTitle = 0;
ofn->lpstrInitialDir = NULL;
ofn->Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName (ofn))
{
HFILE hFile = _lopen (szFile, OF_READ);
if (hFile != HFILE_ERROR)
{
long dwSize = _llseek (hFile, 0L, SEEK_END);
HGLOBAL hmBuff = GlobalAlloc (GPTR, dwSize+32);
LPSTR lpBuff = GlobalLock (hmBuff);
if (hmBuff && lpBuff && dwSize < 0x8000)
{
LPSTR lpSSS = lpBuff;
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_RESETCONTENT, NULL, NULL);
_llseek (hFile, 0L, SEEK_SET);
_lread (hFile, lpBuff, (int)dwSize);
while (*lpSSS)
{
LPSTR lpRRR;
while(*lpSSS && (*lpSSS == 10 || *lpSSS == 13 || *lpSSS == 27))
lpSSS ++;
for (lpRRR = lpSSS; *lpRRR && (*lpRRR != 10 && *lpRRR != 13 && *lpRRR != 27); lpRRR++);
*lpRRR = 0;
if (*lpSSS)
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_ADDSTRING, NULL,
(LPARAM)lpSSS);
lpSSS = lpRRR+1;
}
if (SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETCOUNT, NULL, NULL))
{
RECT rect;
HWND hWnd = GetDlgItem (hDlg, IDC_STRLIST);
GetWindowRect (hWnd, &rect);
wParam = rect.bottom+8;
GetWindowRect (hDlg, &rect);
ShowWindow (GetDlgItem (hDlg, IDC_MIDLINE), SW_NORMAL);
MoveWindow (hDlg, rect.left, rect.top,
rect.right-rect.left, wParam-rect.top,
TRUE);
WseCenterWindow (hDlg);
}
}
_lclose (hFile);
if (hmBuff) GlobalUnlock (hmBuff);
if (hmBuff) GlobalFree (hmBuff);
}
}
LocalFree ((HANDLE)ofn);
LocalFree ((HANDLE)szFile);
}
break;
case IDC_SAVE:
{
OPENFILENAME *ofn;
NPSTR szFile;
ofn = (OPENFILENAME *)LocalAlloc (LPTR, sizeof(OPENFILENAME));
szFile = (NPSTR)LocalAlloc (LPTR, 256);
ofn->lStructSize = sizeof(OPENFILENAME);
ofn->hwndOwner = hDlg;
ofn->lpstrFilter = szTextFilter;
ofn->nFilterIndex = 1;
ofn->lpstrFile = szFile;
ofn->nMaxFile = 255;
ofn->lpstrFileTitle = NULL;
ofn->nMaxFileTitle = 0;
ofn->lpstrInitialDir = NULL;
ofn->lpstrTitle = szSaveAs;
ofn->Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
if (GetOpenFileName (ofn))
{
HFILE hFile = _lcreat (szFile, 0);
if (hFile != HFILE_ERROR)
{
HGLOBAL hmBuff = GlobalAlloc (GPTR, 1024);
LPSTR lpBuff = GlobalLock (hmBuff);
int i;
wParam = SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETCOUNT, NULL, NULL);
for (i = 0; i < (int)wParam; i++)
{
SendDlgItemMessage (hDlg, IDC_STRLIST,
LB_GETTEXT, i, (LPARAM)lpBuff);
lstrcat (lpBuff, "\r\n");
_lwrite (hFile, lpBuff, lstrlen (lpBuff));
}
_lclose (hFile);
if (hmBuff) GlobalUnlock (hmBuff);
if (hmBuff) GlobalFree (hmBuff);
}
}
LocalFree ((HANDLE)ofn);
LocalFree ((HANDLE)szFile);
}
break;
case IDC_ERRREC:
case IDC_ALLREC:
ECRecordLevel = (wParam == IDC_ERRREC) ? 1 : 2;
SendMessage (hDlg, WM_SYSCOMMAND, SC_MINIMIZE, NULL);
break;
case IDC_ENGSTR:
SendDlgItemMessage (hDlg, IDC_MODIFY, BM_SETSTYLE,
(WPARAM)BS_PUSHBUTTON, 1L);
if (GetFocus () == (HWND)lParam)
SendDlgItemMessage (hDlg, IDC_FIND, BM_SETSTYLE,
(WPARAM)BS_DEFPUSHBUTTON, 1L);
wParam = !!SendDlgItemMessage (hDlg, IDC_ENGSTR,
WM_GETTEXTLENGTH, NULL, NULL);
EnableWindow (GetDlgItem (hDlg, IDC_FIND), wParam);
EnableWindow (GetDlgItem (hDlg, IDC_DELETE), wParam);
EnableWindow (GetDlgItem (hDlg, IDC_CHNSTR), wParam);
EnableWindow (GetDlgItem (hDlg, IDC_MODIFY), wParam);
break;
case IDC_CHNSTR:
SendDlgItemMessage (hDlg, IDC_FIND, BM_SETSTYLE,
(WPARAM)BS_PUSHBUTTON, 1L);
if (GetFocus () == (HWND)lParam)
SendDlgItemMessage (hDlg, IDC_MODIFY, BM_SETSTYLE,
(WPARAM)BS_DEFPUSHBUTTON, 1L);
break;
case IDOK:
if (GetWindowLong (GetDlgItem (hDlg, IDC_FIND), GWL_STYLE) & 0x0f)
SendMessage (hDlg, WM_COMMAND, IDC_FIND, NULL);
else if (GetWindowLong (GetDlgItem (hDlg, IDC_MODIFY), GWL_STYLE) & 0x0f)
SendMessage (hDlg, WM_COMMAND, IDC_MODIFY, NULL);
break;
case IDCANCEL:
EndDialog (hDlg, FALSE);
break;
case IDC_GETLIST:
wParam = (WPARAM)LoadMenu (hInst, MAKEINTRESOURCE(IDD_MLREDIT));
if (wParam)
{
RECT rect;
GetWindowRect (GetDlgItem(hDlg, IDC_GETLIST), &rect);
TrackPopupMenu (GetSubMenu ((HMENU)wParam, 0), NULL,
rect.left, rect.bottom,
NULL, hDlg, NULL);
DestroyMenu ((HMENU)wParam);
}
break;
case IDC_HELP:
{
NPSTR pStr = (NPSTR)LocalAlloc (LPTR, 128);
WseGetModuleFilePath (NULL, pStr, 127);
lstrcat (pStr, szRICHWINHLP);
WinHelp (hDlg, pStr, HELP_CONTEXT, NULL);
LocalFree ((HANDLE)pStr);
}
break;
}
break;
default:
return FALSE;
}
return TRUE;
}
int WINAPI WseConfigECDict (HWND hWnd)
{
if (hWndECDialog)
{
BringWindowToTop (hWndECDialog);
if (IsIconic (hWndECDialog))
SendMessage (hWndECDialog, WM_SYSCOMMAND, SC_RESTORE, NULL);
return TRUE;
}
else
return DialogBox (hInst, MAKEINTRESOURCE(IDD_MLREDIT),
hWnd, (FARPROC)ECDctSetModeProc);
}
BOOL far _InitECDct ()
{
NPSTR szFile;
HFILE hFile;
int i;
szFile = (NPSTR)LocalAlloc (LPTR, 64);
WseGetModuleFilePath (NULL, szFile, 63);
lstrcat (szFile, szECWINMLR);
ECTransEnable = FALSE;
hFile = _lopen (szFile, OF_READ);
if (hFile == HFILE_ERROR)
{
LocalFree ((HANDLE)szFile);
return FALSE;
}
_lread (hFile, (LPSTR)IndexPosTab, 64);
if (lstrcmp ((LPSTR)IndexPosTab, szMLR_LIB) != NULL)
{
_lclose (hFile);
LocalFree ((HANDLE)szFile);
return FALSE;
}
_lread (hFile, (LPSTR)IndexPosTab, sizeof(IndexPosTab));
_lclose (hFile);
if (hECCache)
WseReleaseFileCache (hECCache);
hECCache = WseBuildFileCache (szFile, IndexPosTab[0],
IndexPosTab[255] - IndexPosTab[0]);
for (i = 1; i < 256; i++)
IndexPosTab[i] -= IndexPosTab[0];
IndexPosTab[0] = 0;
ECTransEnable = !!hECCache;
ECRecordLevel = 0;
LocalFree ((HANDLE)szFile);
return !!hECCache;
}
void far _ExitECDct ()
{
if (hECCache)
{
WseReleaseFileCache (hECCache);
hECCache = 0;
}
if (hMemECErr)
{
GlobalFree (hMemECErr);
hMemECErr = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -