508 lines
15 KiB
C
508 lines
15 KiB
C
/*++
|
||
|
||
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_
|