WindowsXP-SP1/windows/feime/ddk/jpn/config.c
2020-09-30 16:53:49 +02:00

489 lines
14 KiB
C

/*++
Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
Module Name:
CONFIG.c
++*/
#include "windows.h"
#include "immdev.h"
#include "fakeime.h"
#include "prsht.h"
#include "resource.h"
#define MAX_PAGES 5
/**********************************************************************/
/* */
/* AddPage() */
/* */
/**********************************************************************/
void PASCAL AddPage(LPPROPSHEETHEADER ppsh, UINT id, DLGPROC pfn)
{
if (ppsh->nPages < MAX_PAGES) {
PROPSHEETPAGE psp;
psp.dwSize = sizeof(psp);
psp.dwFlags = PSP_DEFAULT;
psp.hInstance = hInst;
psp.pszTemplate = MAKEINTRESOURCE(id);
psp.pfnDlgProc = pfn;
psp.lParam = 0;
ppsh->phpage[ppsh->nPages] = CreatePropertySheetPage(&psp);
if (ppsh->phpage[ppsh->nPages])
ppsh->nPages++;
}
}
/**********************************************************************/
/* */
/* ImeConfigure() */
/* */
/**********************************************************************/
BOOL WINAPI ImeConfigure(HKL hKL,HWND hWnd, DWORD dwMode, LPVOID lpData)
{
HPROPSHEETPAGE rPages[MAX_PAGES];
PROPSHEETHEADER psh;
ImeLog(LOGF_API, TEXT("ImeConfigure"));
psh.dwSize = sizeof(psh);
psh.dwFlags = PSH_PROPTITLE;
psh.hwndParent = hWnd;
psh.hInstance = hInst;
psh.pszCaption = MAKEINTRESOURCE(IDS_CONFIGNAME);
psh.nPages = 0;
psh.nStartPage = 0;
psh.phpage = rPages;
switch (dwMode)
{
case IME_CONFIG_GENERAL:
AddPage(&psh, DLG_GENERAL, GeneralDlgProc);
AddPage(&psh, DLG_REGISTERWORD, RegWordDlgProc);
AddPage(&psh, DLG_SELECTDICTIONARY, SelectDictionaryDlgProc);
AddPage(&psh, DLG_ABOUT, AboutDlgProc);
#ifdef DEBUG
AddPage(&psh, DLG_DEBUG, DebugOptionDlgProc);
#endif
PropertySheet(&psh);
break;
case IME_CONFIG_REGISTERWORD:
AddPage(&psh, DLG_REGISTERWORD, RegWordDlgProc);
AddPage(&psh, DLG_ABOUT, AboutDlgProc);
PropertySheet(&psh);
break;
case IME_CONFIG_SELECTDICTIONARY:
AddPage(&psh, DLG_SELECTDICTIONARY, SelectDictionaryDlgProc);
AddPage(&psh, DLG_ABOUT, AboutDlgProc);
PropertySheet(&psh);
break;
default:
break;
}
return TRUE;
}
/**********************************************************************/
/* */
/* RegWordConfigure() */
/* */
/**********************************************************************/
INT_PTR CALLBACK RegWordDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
{
NMHDR FAR *lpnm;
LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
UINT nItem;
UINT i;
LRESULT dwIndex;
TCHAR szRead[128];
TCHAR szString[128];
TCHAR szBuf[128];
LRESULT dwStyle;
switch(message)
{
case WM_NOTIFY:
lpnm = (NMHDR FAR *)lParam;
switch(lpnm->code)
{
case PSN_SETACTIVE:
break;
case PSN_KILLACTIVE:
break;
case PSN_APPLY:
if (!GetDlgItemText(hDlg, ID_WR_READING, szRead, sizeof(szRead)))
{
LoadString(hInst,IDS_NOREADING,szBuf,sizeof(szBuf));
MessageBox(hDlg, szBuf, NULL, MB_OK);
return FALSE;
}
if (!GetDlgItemText(hDlg, ID_WR_STRING, szString, sizeof(szString)))
{
LoadString(hInst,IDS_NOSTRING,szBuf,sizeof(szBuf));
MessageBox(hDlg, szBuf, NULL, MB_OK);
return FALSE;
}
dwIndex = SendDlgItemMessage(hDlg, ID_WR_STYLE,CB_GETCURSEL,0,0);
dwStyle = SendDlgItemMessage(hDlg, ID_WR_STYLE,CB_GETITEMDATA,dwIndex,0);
if (!ImeRegisterWord(szRead, (DWORD) dwStyle, szString))
{
LoadString(hInst,IDS_REGWORDRET,szBuf,sizeof(szBuf));
MessageBox(hDlg, szBuf, NULL, MB_OK);
}
break;
case PSN_RESET:
break;
case PSN_HELP:
break;
default:
return FALSE;
}
break;
case WM_INITDIALOG:
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
lpPropSheet = (LPPROPSHEETPAGE)lParam;
if (nItem = ImeGetRegisterWordStyle(0, NULL))
{
LPSTYLEBUF lpStyleBuf = (LPSTYLEBUF)GlobalAlloc(GPTR,nItem * sizeof(STYLEBUF));
if (!lpStyleBuf)
{
LoadString(hInst,IDS_NOMEMORY,szBuf,sizeof(szBuf));
MessageBox(hDlg, szBuf, NULL, MB_OK);
return TRUE;
}
ImeGetRegisterWordStyle(nItem,lpStyleBuf);
for (i = 0; i < nItem; i++)
{
dwIndex = SendDlgItemMessage(hDlg,ID_WR_STYLE,CB_ADDSTRING,0,(LPARAM)lpStyleBuf->szDescription);
SendDlgItemMessage(hDlg,ID_WR_STYLE,CB_SETITEMDATA,dwIndex,lpStyleBuf->dwStyle);
lpStyleBuf++;
}
GlobalFree((HANDLE)lpStyleBuf);
}
break;
case WM_DESTROY:
break;
case WM_HELP:
break;
case WM_CONTEXTMENU: // right mouse click
break;
case WM_COMMAND:
break;
default:
return FALSE;
}
return TRUE;
}
/**********************************************************************/
/* */
/* SelectDictionaryConfigure() */
/* */
/**********************************************************************/
INT_PTR CALLBACK SelectDictionaryDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
{
NMHDR FAR *lpnm;
LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
switch(message)
{
case WM_NOTIFY:
lpnm = (NMHDR FAR *)lParam;
switch(lpnm->code)
{
case PSN_SETACTIVE:
break;
case PSN_KILLACTIVE:
break;
case PSN_APPLY:
break;
case PSN_RESET:
break;
case PSN_HELP:
break;
default:
return FALSE;
}
break;
case WM_INITDIALOG:
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
lpPropSheet = (LPPROPSHEETPAGE)lParam;
break;
case WM_DESTROY:
break;
case WM_HELP:
break;
case WM_CONTEXTMENU: // right mouse click
break;
case WM_COMMAND:
break;
default:
return FALSE;
}
return TRUE;
}
/**********************************************************************/
/* */
/* AboutConfigure() */
/* */
/**********************************************************************/
INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
{
NMHDR FAR *lpnm;
LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
switch(message)
{
case WM_NOTIFY:
lpnm = (NMHDR FAR *)lParam;
switch(lpnm->code)
{
case PSN_SETACTIVE:
break;
case PSN_KILLACTIVE:
break;
case PSN_APPLY:
break;
case PSN_RESET:
break;
case PSN_HELP:
break;
default:
return FALSE;
}
break;
case WM_INITDIALOG:
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR) lParam);
lpPropSheet = (LPPROPSHEETPAGE)lParam;
break;
case WM_DESTROY:
break;
case WM_HELP:
break;
case WM_CONTEXTMENU: // right mouse click
break;
case WM_COMMAND:
break;
default:
return FALSE;
}
return TRUE;
}
/**********************************************************************/
/* */
/* GeneralConfigure() */
/* */
/**********************************************************************/
INT_PTR CALLBACK GeneralDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
{
NMHDR FAR *lpnm;
LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
switch(message)
{
case WM_NOTIFY:
lpnm = (NMHDR FAR *)lParam;
switch(lpnm->code)
{
case PSN_SETACTIVE:
break;
case PSN_KILLACTIVE:
break;
case PSN_APPLY:
break;
case PSN_RESET:
break;
case PSN_HELP:
break;
default:
return FALSE;
}
break;
case WM_INITDIALOG:
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
lpPropSheet = (LPPROPSHEETPAGE)lParam;
break;
case WM_DESTROY:
break;
case WM_HELP:
break;
case WM_CONTEXTMENU: // right mouse click
break;
case WM_COMMAND:
break;
default:
return FALSE;
}
return TRUE;
}
/**********************************************************************/
/* */
/* DebugOptionDlgProc() */
/* */
/**********************************************************************/
INT_PTR CALLBACK DebugOptionDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
{
DWORD dwTemp;
TCHAR szBuf[128];
NMHDR FAR *lpnm;
LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
switch(message)
{
case WM_NOTIFY:
lpnm = (NMHDR FAR *)lParam;
switch(lpnm->code)
{
case PSN_SETACTIVE:
break;
case PSN_KILLACTIVE:
break;
case PSN_APPLY:
#ifdef DEBUG
dwTemp = 0;
if (IsDlgButtonChecked(hDlg, IDC_LOGF_ENTRY))
dwTemp |= LOGF_ENTRY;
if (IsDlgButtonChecked(hDlg, IDC_LOGF_API))
dwTemp |= LOGF_API;
if (IsDlgButtonChecked(hDlg, IDC_LOGF_KEY))
dwTemp |= LOGF_KEY;
dwLogFlag = dwTemp;
dwTemp = 0;
if (IsDlgButtonChecked(hDlg, IDC_DEBF_THREADID))
dwTemp |= DEBF_THREADID;
if (IsDlgButtonChecked(hDlg, IDC_DEBF_GUIDELINE))
dwTemp |= DEBF_GUIDELINE;
dwDebugFlag = dwTemp;
SetDwordToSetting(TEXT("LogFlag"), dwLogFlag);
SetDwordToSetting(TEXT("DebugFlag"), dwDebugFlag);
#endif
break;
case PSN_RESET:
break;
case PSN_HELP:
break;
default:
return FALSE;
}
break;
case WM_INITDIALOG:
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR) lParam);
lpPropSheet = (LPPROPSHEETPAGE)lParam;
#ifdef DEBUG
CheckDlgButton(hDlg, IDC_LOGF_ENTRY,
(dwLogFlag & LOGF_ENTRY) ? 1 : 0);
CheckDlgButton(hDlg, IDC_LOGF_API,
(dwLogFlag & LOGF_API) ? 1 : 0);
CheckDlgButton(hDlg, IDC_LOGF_KEY,
(dwLogFlag & LOGF_KEY) ? 1 : 0);
CheckDlgButton(hDlg, IDC_DEBF_THREADID,
(dwDebugFlag & DEBF_THREADID) ? 1 : 0);
CheckDlgButton(hDlg, IDC_DEBF_GUIDELINE,
(dwDebugFlag & DEBF_GUIDELINE) ? 1 : 0);
#endif
break;
case WM_DESTROY:
break;
case WM_HELP:
break;
case WM_CONTEXTMENU: // right mouse click
break;
case WM_COMMAND:
break;
default:
return FALSE;
}
return TRUE;
}