windows-nt/Source/XPSP1/NT/windows/feime/chs/ntgen/recnvdlg.c
2020-09-26 16:20:57 +08:00

241 lines
6.6 KiB
C
Raw Blame History

/*************************************************
* recnvdlg.c *
* *
* Copyright (C) 1995-1999 Microsoft Inc. *
* *
*************************************************/
#include "prop.h"
/*****************************************************************************
FUNCTION: ReConvDialogProc(HWND, UINT, WPARAM, LPARAM)
PURPOSE: Processes messages for "reconv" property sheet.
PARAMETERS:
hdlg - window handle of the property sheet
wMessage - type of message
wparam - message-specific information
lparam - message-specific information
RETURN VALUE:
TRUE - message handled
FALSE - message not handled
HISTORY:
04-18-95 Yehfew Tie Created.
****************************************************************************/
INT_PTR CALLBACK ReConvDialogProc(HWND hdlg,
UINT uMessage,
WPARAM wparam,
LPARAM lparam)
{
LPNMHDR lpnmhdr;
static TCHAR szMBFile[MAX_PATH];
static TCHAR szSrcFile[MAX_PATH];
static HANDLE hRule0;
LPTSTR lpString;
TCHAR szStr[MAX_PATH];
MAININDEX MainIndex[NUMTABLES];
HANDLE hFile;
FARPROC lpProcInfo;
switch (uMessage)
{
case WM_INITDIALOG:
SetReConvDisable(hdlg);
break;
case WM_NOTIFY:
lpnmhdr = (NMHDR FAR *)lparam;
switch (lpnmhdr->code)
{
case PSN_SETACTIVE:
hEncode = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,
NUMENCODEAREA*sizeof(ENCODEAREA));
if(!hRule )
ProcessError(ERR_OUTOFMEMORY,hdlg,ERR);
if ( hEncode )
ConvInitEncode(hEncode);
break;
case PSN_KILLACTIVE:
if(hEncode)
GlobalFree(hEncode);
break;
break;
case PSN_APPLY:
break;
case PSN_RESET:
break;
case PSN_QUERYCANCEL:
break;
case PSN_HELP:
break;
default:
break;
}
break;
case WM_COMMAND:
switch (LOWORD(wparam))
{
case ID_FILEOPEN:
{
#ifdef UNICODE
static TCHAR szTitle[] = {0x6253, 0x5F00, 0x0000};
#else
TCHAR szTitle[MAX_PATH];
strcpy(szTitle,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
#endif
if(!MBFileOpenDlg(hdlg,szStr,szTitle))
break;
}
lstrcpy(szMBFile, szStr);
lstrcpy(szSrcFile,szMBFile);
SetReConvDisable(hdlg);
hFile = Create_File(hdlg,szMBFile,GENERIC_READ,OPEN_EXISTING);
if (hFile == (HANDLE)-1) {
szMBFile[0]=0;
lstrcpy(szSrcFile,szMBFile);
SetDlgItemText(hdlg,IDC_MBNAME,szMBFile);
SetDlgItemText(hdlg,IDC_SRCNAME,szSrcFile);
break;
}
if(!ConvGetMainIndex(hdlg,hFile,MainIndex)) {
szMBFile[0] = 0;
lstrcpy(szSrcFile,szMBFile);
CloseHandle(hFile);
SetDlgItemText(hdlg,IDC_SRCNAME,szSrcFile);
SetDlgItemText(hdlg,IDC_MBNAME,szMBFile);
break;
}
{
DESCRIPTION Descript; //add 95.10.26
ConvReadDescript(hFile,&Descript, MainIndex);
SetReconvDlgDes(hdlg,&Descript);
}
fnsplit(szMBFile, szStr);
SetDlgItemText(hdlg,IDC_MBNAME,szStr);
if((lpString = _tcsrchr(szSrcFile,TEXT('.')))!=NULL)
*lpString = 0;
lstrcat(szSrcFile, TEXT(TxtFileExt));
SetDlgItemText(hdlg,IDC_SRCNAME,szSrcFile);
CloseHandle(hFile);
SetReConvEnable(hdlg);
SendMessage(GetDlgItem(hdlg,ID_FILEOPEN),BM_SETSTYLE,BS_PUSHBUTTON,0L);
SendMessage(GetDlgItem(hdlg,IDC_RECONV),BM_SETSTYLE,BS_DEFPUSHBUTTON,TRUE);
SetFocus(GetDlgItem(hdlg,IDC_RECONV));
break;
case IDC_SRCNAME:
GetDlgItemText(hdlg,IDC_SRCNAME,szSrcFile,MAX_PATH);
if(lstrlen(szSrcFile) == 0)
EnableWindow(GetDlgItem(hdlg,IDC_RECONV),FALSE);
else
EnableWindow(GetDlgItem(hdlg,IDC_RECONV),TRUE);
break;
case IDC_GETMBFILE:
lstrcpy((LPTSTR)lparam,szMBFile);
break;
case IDC_GETSRCFILE:
lstrcpy((LPTSTR)lparam,szSrcFile);
break;
case IDC_RECONV:
lpProcInfo = MakeProcInstance((FARPROC)InfoDlg, hInst);
pfnmsg = (PFNMSG)ReConvProc;
bEndProp = FALSE;
DialogBox(hInst,
MAKEINTRESOURCE(IDD_INFO),
hdlg,
(DLGPROC)lpProcInfo);
/*if(bEndProp)
PropSheet_PressButton(GetParent(hdlg),PSBTN_OK);*/
FreeProcInstance(lpProcInfo);
break;
default:
break;
}
break;
default:
break;
}
return FALSE;
}
VOID ReConvProc(LPVOID hWnd)
{
static TCHAR file1[MAX_PATH]=TEXT("");
static TCHAR file2[MAX_PATH]=TEXT("");
SendMessage(GetParent(hDlgless),WM_COMMAND,IDC_GETSRCFILE,(LPARAM)file1);
SendMessage(GetParent(hDlgless),WM_COMMAND,IDC_GETMBFILE,(LPARAM)file2);
if(ConvReConv(hDlgless,file1,file2))
bEndProp=TRUE;
SendMessage(hDlgless,WM_CLOSE,0,0L);
}
void SetReConvDisable(HWND hDlg)
{
WORD wID;
EnableWindow(GetDlgItem(hDlg,IDC_RECONV),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_SRCNAME),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_MBNAME),FALSE);
for(wID = IDC_STATIC1 ;wID <= IDC_STATIC8 ;wID++)
EnableWindow(GetDlgItem(hDlg,wID),FALSE);
}
void SetReConvEnable(HWND hDlg)
{
WORD wID;
EnableWindow(GetDlgItem(hDlg,IDC_RECONV),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_SRCNAME),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_MBNAME),TRUE);
for(wID = IDC_STATIC1 ;wID <= IDC_STATIC8 ;wID++)
EnableWindow(GetDlgItem(hDlg,wID),TRUE);
}
void SetReconvDlgDes(HWND hDlg,LPDESCRIPTION lpDescript)
{
TCHAR szStr[48];
SetDlgItemText(hDlg,IDC_IMENAME,lpDescript->szName);
lstrcpy(szStr,lpDescript->szUsedCode);
szStr[30]=0;
SetDlgItemText(hDlg,IDC_USEDCODE1,szStr);
if(lstrlen(lpDescript->szUsedCode) > 30)
SetDlgItemText(hDlg,IDC_USEDCODE2,&(lpDescript->szUsedCode[30]));
else
SetDlgItemText(hDlg,IDC_USEDCODE2,NULL);
szStr[0]=lpDescript->cWildChar;
szStr[1]=0;
SetDlgItemText(hDlg,IDC_WILDCHAR,szStr);
SetDlgItemInt (hDlg,IDC_MAXCODES,lpDescript->wMaxCodes,FALSE);
SetDlgItemInt (hDlg,IDC_MAXELEMENT,lpDescript->byMaxElement,FALSE);
SetDlgItemInt (hDlg,IDC_RULENUM,lpDescript->wNumRules,FALSE);
}