windows-nt/Source/XPSP1/NT/shell/osshell/cpls/intl/intl.h
2020-09-26 16:20:57 +08:00

508 lines
15 KiB
C
Raw Permalink Blame History

/*++
Copyright (c) 1994-2000, Microsoft Corporation All rights reserved.
Module Name:
intl.h
Abstract:
This module contains the header information for the Regional Options
applet.
Revision History:
--*/
#ifndef _INTL_H_
#define _INTL_H_
//
// Include Files.
//
#include <windows.h>
#include <prsht.h>
#include <prshtp.h>
#include <shellapi.h>
#include <setupapi.h>
#include <winnls.h>
#include "intlid.h"
#include "util.h"
#include <shlwapi.h>
//
// Enumeration
//
enum LANGCOLLECTION{
BASIC_COLLECTION,
COMPLEX_COLLECTION,
CJK_COLLECTION,
};
//
// Constant Declarations.
//
#define RMI_PRIMARY (0x1) // this should win in event of conflict
#define ARRAYSIZE(a) (sizeof(a) / sizeof(a[0]))
#define US_LOCALE (MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US))
#define LANG_SPANISH_TRADITIONAL (MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH))
#define LANG_SPANISH_INTL (MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN))
#define LCID_SPANISH_TRADITIONAL (MAKELCID(LANG_SPANISH_TRADITIONAL, SORT_DEFAULT))
#define LCID_SPANISH_INTL (MAKELCID(LANG_SPANISH_INTL, SORT_DEFAULT))
#define ML_ORIG_INSTALLED 0x0001
#define ML_PERMANENT 0x0002
#define ML_INSTALL 0x0004
#define ML_REMOVE 0x0008
#define ML_DEFAULT 0x0010
#define ML_DISABLE 0x0020
#define ML_STATIC (ML_PERMANENT | ML_DEFAULT | ML_DISABLE)
//
// Used in string and other array declarations.
//
#define cInt_Str 10 // length of the array of int strings
#define SIZE_64 64 // frequently used buffer size
#define SIZE_128 128 // frequently used buffer size
#define SIZE_300 300 // frequently used buffer size
#define MAX_SAMPLE_SIZE 100 // limit on Sample text for display
//
// For the indicator on the tray.
//
#define IDM_NEWSHELL 249
//
// Character constants.
//
#define CHAR_SML_D TEXT('d')
#define CHAR_CAP_M TEXT('M')
#define CHAR_SML_Y TEXT('y')
#define CHAR_SML_G TEXT('g')
#define CHAR_SML_H TEXT('h')
#define CHAR_CAP_H TEXT('H')
#define CHAR_SML_M TEXT('m')
#define CHAR_SML_S TEXT('s')
#define CHAR_SML_T TEXT('t')
#define CHAR_NULL TEXT('\0')
#define CHAR_QUOTE TEXT('\'')
#define CHAR_SPACE TEXT(' ')
#define CHAR_COMMA TEXT(',')
#define CHAR_SEMICOLON TEXT(';')
#define CHAR_COLON TEXT(':')
#define CHAR_STAR TEXT('*')
#define CHAR_HYPHEN TEXT('-')
#define CHAR_DECIMAL TEXT('.')
#define CHAR_INTL_CURRENCY TEXT('<27>')
#define CHAR_GRAVE TEXT('`')
#define CHAR_ZERO TEXT('0')
#define CHAR_NINE TEXT('9')
//
// Setup command line switch values.
//
#define SETUP_SWITCH_NONE 0x0000
#define SETUP_SWITCH_R 0x0001
#define SETUP_SWITCH_I 0x0002
#define SETUP_SWITCH_S 0x0004
//
// Flags to assist in updating property sheet pages once the regional locale
// setting has changed. As pages are updated, their process flag value is
// deleted from the Verified_Regional_Chg variable.
//
#define INTL_ALL_CHG 0x00ff // change affects all pages
#define INTL_CHG 0x001f // change affects customize pages
#define Process_Num 0x0001 // number page not yet updated
#define Process_Curr 0x0002 // currency page not yet updated
#define Process_Time 0x0004 // time page not yet updated
#define Process_Date 0x0008 // date page not yet updated
#define Process_Sorting 0x0010 // sorting page not yet updated
#define Process_Regional 0x0020 // regional options page not yet updated
#define Process_Advanced 0x0040 // advanced page not yet updated
#define Process_Languages 0x0080 // languages page not yet updated
//
// Each of these change flags will be used to update the appropriate property
// sheet pages change word when their associated combobox notifies the
// property sheet of a change. The change values are used to determine which
// locale settings must be updated.
//
//
// Region Change.
//
#define RC_EverChg 0x0001
#define RC_UserRegion 0x0002
#define RC_UserLocale 0x0004
//
// Advanced Change
//
#define AD_EverChg 0x0001
#define AD_SystemLocale 0x0002
#define AD_CodePages 0x0004
#define AD_DefaultUser 0x0008
//
// Number Change.
//
#define NC_EverChg 0x0001
#define NC_DSymbol 0x0002
#define NC_NSign 0x0004
#define NC_SList 0x0008
#define NC_SThousand 0x0010
#define NC_IDigits 0x0020
#define NC_DGroup 0x0040
#define NC_LZero 0x0080
#define NC_NegFmt 0x0100
#define NC_Measure 0x0200
#define NC_NativeDigits 0x0400
#define NC_DigitSubst 0x0800
//
// Currency Change.
//
#define CC_EverChg 0x0001
#define CC_SCurrency 0x0002
#define CC_CurrSymPos 0x0004
#define CC_NegCurrFmt 0x0008
#define CC_SMonDec 0x0010
#define CC_ICurrDigits 0x0020
#define CC_SMonThousand 0x0040
#define CC_DMonGroup 0x0080
//
// Time Change.
//
#define TC_EverChg 0x0001
#define TC_1159 0x0002
#define TC_2359 0x0004
#define TC_STime 0x0008
#define TC_TimeFmt 0x0010
#define TC_AllChg 0x001F
#define TC_FullTime 0x0031
//
// Date Change.
//
#define DC_EverChg 0x0001
#define DC_ShortFmt 0x0002
#define DC_LongFmt 0x0004
#define DC_SDate 0x0008
#define DC_Calendar 0x0010
#define DC_Arabic_Calendar 0x0020
#define DC_TwoDigitYearMax 0x0040
//
// Sorting Change.
//
#define SC_EverChg 0x0001
#define SC_Sorting 0x0002
//
// Language Change
//
#define LG_EverChg 0x0001
#define LG_UILanguage 0x0002
#define LG_Change 0x0004
#define LG_Complex 0x0008
#define LG_CJK 0x0010
//
// Global Variables.
// Data that is shared betweeen the property sheets.
//
extern BOOL g_bCDROM; // if setup from a CD-ROM
extern HANDLE g_hMutex; // mutex handle
extern TCHAR szMutexName[]; // name of the mutex
extern HANDLE g_hEvent; // event handle
extern TCHAR szEventName[]; // name of the event
extern BOOL g_bAdmin_Privileges; // Admin privileges
extern DWORD g_dwLastSorting; // index of last sorting setting in combo box
extern DWORD g_dwCurSorting; // index of current sorting setting in combo box
extern BOOL g_bCustomize; // in customize mode or second level tabs
extern DWORD g_dwCustChange; // change made at the second level
extern BOOL g_bDefaultUser; // in default user settings
extern BOOL g_bShowSortingTab; // show the sorting tab or not
extern BOOL g_bInstallComplex; // Complex scripts language groups installation requested
extern BOOL g_bInstallCJK; // CJK language groups installation requested
extern TCHAR aInt_Str[cInt_Str][3]; // cInt_Str # of elements of int strings
extern TCHAR szSample_Number[]; // used for currency and number samples
extern TCHAR szNegSample_Number[]; // used for currency and number samples
extern TCHAR szTimeChars[]; // valid time characters
extern TCHAR szTCaseSwap[]; // invalid time chars to change case => valid
extern TCHAR szTLetters[]; // time NLS chars
extern TCHAR szSDateChars[]; // valid short date characters
extern TCHAR szSDCaseSwap[]; // invalid SDate chars to change case => valid
extern TCHAR szSDLetters[]; // short date NLS chars
extern TCHAR szLDateChars[]; // valid long date characters
extern TCHAR szLDCaseSwap[]; // invalid LDate chars to change case => valid
extern TCHAR szLDLetters[]; // long date NLS chars
extern TCHAR szStyleH[]; // date and time style H equivalent
extern TCHAR szStyleh[]; // date and time style h equivalent
extern TCHAR szStyleM[]; // date and time style M equivalent
extern TCHAR szStylem[]; // date and time style m equivalent
extern TCHAR szStyles[]; // date and time style s equivalent
extern TCHAR szStylet[]; // date and time style t equivalent
extern TCHAR szStyled[]; // date and time style d equivalent
extern TCHAR szStyley[]; // date and time style y equivalent
extern TCHAR szLocaleGetError[]; // shared locale info get error
extern TCHAR szIntl[]; // intl string
extern TCHAR szInvalidSDate[]; // invalid chars for date separator
extern TCHAR szInvalidSTime[]; // invalid chars for time separator
extern HINSTANCE hInstance; // library instance
extern int Verified_Regional_Chg; // used to determine when to verify
// regional changes in all prop sheet pgs
extern int RegionalChgState; // used to determine when a page have changed
extern BOOL Styles_Localized; // indicate whether or not style must be
// translated between NLS and local formats
extern LCID UserLocaleID; // user locale
extern LCID SysLocaleID; // system locale
extern LCID RegUserLocaleID; // user locale stored in the registry
extern LCID RegSysLocaleID; // system locale stored in the registry
extern BOOL bShowRtL; // indicate if RTL date samples should be shown
extern BOOL bShowArabic; // indicate if the other Arabic specific stuff should be shown
extern BOOL bHebrewUI; // indicate if the UI language is Hebrew
extern BOOL bLPKInstalled; // if LPK is installed
extern TCHAR szSetupSourcePath[]; // buffer to hold setup source string
extern LPTSTR pSetupSourcePath; // pointer to setup source string buffer
extern TCHAR szSetupSourcePathWithArchitecture[]; // buffer to hold setup source string with architecture-specific extension.
extern LPTSTR pSetupSourcePathWithArchitecture; // pointer to setup source string buffer with architecture-specific extension.
//
// Global Variables.
//
static TCHAR szLayoutPath[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts");
static TCHAR szKbdPreloadKey[] = TEXT("Keyboard Layout\\Preload");
static TCHAR szKbdSubstKey[] = TEXT("Keyboard Layout\\Substitutes");
static TCHAR szKbdToggleKey[] = TEXT("Keyboard Layout\\Toggle");
static TCHAR szKbdPreloadKey_DefUser[] = TEXT(".DEFAULT\\Keyboard Layout\\Preload");
static TCHAR szKbdSubstKey_DefUser[] = TEXT(".DEFAULT\\Keyboard Layout\\Substitutes");
static TCHAR szKbdToggleKey_DefUser[] = TEXT(".DEFAULT\\Keyboard Layout\\Toggle");
static TCHAR szInternat[] = TEXT("internat.exe");
static char szInternatA[] = "internat.exe";
extern BOOL g_bSetupCase;
extern BOOL g_bLog;
extern BOOL g_bProgressBarDisplay;
extern BOOL g_bSettingsChanged;
extern BOOL g_bUnttendMode;
extern BOOL g_bMatchUIFont;
extern const TCHAR c_szInstalledLocales[];
extern const TCHAR c_szLanguageGroups[];
extern const TCHAR c_szLIPInstalled[];
extern const TCHAR c_szMUILanguages[];
extern const TCHAR c_szFontSubstitute[];
extern const TCHAR c_szSetupKey[];
extern const TCHAR c_szCPanelIntl[];
extern const TCHAR c_szCPanelIntl_DefUser[];
extern const TCHAR c_szCtfmon[];
extern const TCHAR c_szCtfmon_DefUser[];
extern const TCHAR c_szCPanelDesktop[];
extern const TCHAR c_szCPanelDesktop_DefUser[];
extern const TCHAR c_szKbdLayouts[];
extern const TCHAR c_szKbdLayouts_DefUser[];
extern const TCHAR c_szInputMethod[];
extern const TCHAR c_szInputMethod_DefUser[];
extern const TCHAR c_szInputTips[];
extern const TCHAR c_szInputTips_DefUser[];
extern const TCHAR c_szMUIPolicyKeyPath[];
extern const TCHAR c_szMUIValue[];
extern const TCHAR c_szIntlRun[];
extern const TCHAR c_szSysocmgr[];
extern TCHAR szIntlInf[];
extern TCHAR szHelpFile[];
extern TCHAR szFontSubstitute[];
extern TCHAR szLocaleListPrefix[];
extern TCHAR szLGBasicInstall[];
extern TCHAR szLGComplexInstall[];
extern TCHAR szLGComplexRemove[];
extern TCHAR szLGExtInstall[];
extern TCHAR szLGExtRemove[];
extern TCHAR szCPInstallPrefix[];
extern TCHAR szCPRemovePrefix[];
extern TCHAR szKbdLayoutIds[];
extern TCHAR szInputLibrary[]; // Name of the library that contain the text input dlg
extern TCHAR szUIFontSubstitute[];
extern TCHAR szSetupInProgress[];
extern TCHAR szSetupUpgrade[];
extern TCHAR szMultiUILanguageId[];
extern TCHAR szMUILangPending[];
extern TCHAR szCtfmonValue[];
extern TCHAR szRegionalSettings[];
extern TCHAR szLanguageGroup[];
extern TCHAR szLanguage[];
extern TCHAR szSystemLocale[];
extern TCHAR szUserLocale[];
extern TCHAR szInputLocale[];
extern TCHAR szMUILanguage[];
extern TCHAR szUserLocale_DefUser[];
extern TCHAR szInputLocale_DefUser[];
extern TCHAR szMUILanguage_DefUSer[];
extern HINF g_hIntlInf;
extern LPLANGUAGEGROUP pLanguageGroups;
extern LPCODEPAGE pCodePages;
extern int g_NumAltSorts;
extern HANDLE hAltSorts;
extern LPDWORD pAltSorts;
extern HINSTANCE hInputDLL;
extern BOOL (*pfnInstallInputLayout)(LCID, DWORD, BOOL, HKL, BOOL, BOOL);
extern BOOL (*pfnUninstallInputLayout)(LCID, DWORD, BOOL);
//
// Language group of UI languages.
//
extern UILANGUAGEGROUP UILangGroup;
//
// Function Prototypes.
//
//
// Callback functions for each of the propety sheet pages.
//
INT_PTR CALLBACK
GeneralDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
InputLocaleDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
LanguageDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
AdvancedDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
NumberDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
CurrencyDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
TimeDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
DateDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK
SortingDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
//
// In regdlg.c.
//
void
Region_UpdateShortDate(VOID);
void
Region_DoUnattendModeSetup(
LPCTSTR pUnattendFile);
//
// In intl.c.
//
BOOL
IsRtLLocale(
LCID iLCID);
//
// Restore functions.
//
void
Date_RestoreValues();
void
Currency_RestoreValues();
void
Time_RestoreValues();
void
Number_RestoreValues();
void
Sorting_RestoreValues();
#endif //_INTL_H_