|
|
/*++
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; }
|