⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 手机上的韩文输入法 saenaru20031212.zip
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
 * This file is part of Saenaru.
 *
 * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $Perky$
 */
/*++

Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved

Module Name:

    CONFIG.c
    
++*/
#include "windows.h"
#include "immdev.h"
#include "saenaru.h"
#include "prsht.h"
#include "resource.h"
#include "malloc.h"

#define MAX_PAGES 3



/**********************************************************************/
/*                                                                    */
/*      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_ABOUT, AboutDlgProc);
#ifdef DEBUG
            AddPage(&psh, DLG_DEBUG, DebugOptionDlgProc);
#endif
            PropertySheet(&psh);
            break;

        default:
            break;
    }

    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)
{
    DWORD dwTemp;
    NMHDR FAR *lpnm;
    HWND  hwndRadio;
    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:
                    dwTemp = 0;
                    if (IsDlgButtonChecked(hDlg, IDC_COMPOSITE_TYPING))
                        dwTemp |= COMPOSITE_TYPING;
                    if (IsDlgButtonChecked(hDlg, IDC_CONCURRENT_TYPING))
                        dwTemp |= CONCURRENT_TYPING;
                    if (IsDlgButtonChecked(hDlg, IDC_BACKSPACE_BY_JAMO))
                        dwTemp |= BACKSPACE_BY_JAMO;
                    if (IsDlgButtonChecked(hDlg, IDC_KSX1002_SUPPORT))
                        dwTemp |= KSX1002_SUPPORT;
                    if (IsDlgButtonChecked(hDlg, IDC_KSX1001_SUPPORT))
                        dwTemp |= KSX1001_SUPPORT;
                    if (IsDlgButtonChecked(hDlg, IDC_FULL_MULTIJOMO))
                        dwTemp |= FULL_MULTIJOMO;
                    if (IsDlgButtonChecked(hDlg, IDC_DVORAK_SUPPORT))
		    {
                        dwImeFlag |= SAENARU_DVORAK;
                        dwTemp |= SAENARU_DVORAK;
		    } else
			dwImeFlag &= ~SAENARU_DVORAK;
                    dwOptionFlag = dwTemp;

                    SetDwordToSetting(TEXT("OptionFlag"), dwOptionFlag);

		    dwTemp = 0;
		    if (dwLayoutFlag == 0)
			dwLayoutFlag = LAYOUT_OLD2BUL;
		    if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_OLD2BUL))
                        dwTemp = LAYOUT_OLD2BUL;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3FIN))
                        dwTemp = LAYOUT_3FIN;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_390))
                        dwTemp = LAYOUT_390;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW2BUL))
                        dwTemp = LAYOUT_NEW2BUL;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW3BUL))
                        dwTemp = LAYOUT_NEW3BUL;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_AHNMATAE))
                        dwTemp = LAYOUT_AHNMATAE;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3SUN))
                        dwTemp = LAYOUT_3SUN;
		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_USER))
                        dwTemp = LAYOUT_USER;
                    dwLayoutFlag = dwTemp;

                    SetDwordToSetting(TEXT("LayoutFlag"), dwLayoutFlag);

		    set_keyboard(dwLayoutFlag);
		    
                    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 0
	    if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW2BUL) )
	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW3BUL) )
	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_OLD2BUL) )
	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_3BULFINAL) )
	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_390) )
	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_AHNMATAE) )
	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
#endif
            /* Global options */
            CheckDlgButton(hDlg, IDC_CONCURRENT_TYPING, 
                                (dwOptionFlag & CONCURRENT_TYPING) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_COMPOSITE_TYPING, 
                                (dwOptionFlag & COMPOSITE_TYPING) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_KSX1001_SUPPORT, 
                                (dwOptionFlag & KSX1001_SUPPORT) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_KSX1002_SUPPORT, 
                                (dwOptionFlag & KSX1002_SUPPORT) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_BACKSPACE_BY_JAMO, 
                                (dwOptionFlag & BACKSPACE_BY_JAMO) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_FULL_MULTIJOMO, 
                                (dwOptionFlag & FULL_MULTIJOMO) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_DVORAK_SUPPORT, 
                                (dwOptionFlag & SAENARU_DVORAK) ? 1 : 0);

            /* Layout */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -