mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge pull request #952 from RaiKoHoff/Dev_Master
Menu for language switching
This commit is contained in:
commit
6734ce3d4d
@ -364,6 +364,22 @@
|
||||
//#define CMD_LEFT 20054
|
||||
//#define CMD_RIGHT 20055
|
||||
|
||||
#define IDM_MUI_LANG_EN_US 34500
|
||||
#define IDM_MUI_LANG_AF_ZA 34501
|
||||
#define IDM_MUI_LANG_BE_BY 34502
|
||||
#define IDM_MUI_LANG_DE_DE 34503
|
||||
#define IDM_MUI_LANG_EN_GB 34504
|
||||
#define IDM_MUI_LANG_ES_ES 34505
|
||||
#define IDM_MUI_LANG_FR_FR 34506
|
||||
#define IDM_MUI_LANG_HU_HU 34507
|
||||
#define IDM_MUI_LANG_IT_IT 34508
|
||||
#define IDM_MUI_LANG_JP_JP 34509
|
||||
#define IDM_MUI_LANG_KO_KR 34510
|
||||
#define IDM_MUI_LANG_NL_NL 34511
|
||||
#define IDM_MUI_LANG_PT_BR 34512
|
||||
#define IDM_MUI_LANG_RU_RU 34513
|
||||
#define IDM_MUI_LANG_ZH_CN 34514
|
||||
|
||||
#define IDM_FILE_NEW 40000
|
||||
#define IDM_FILE_OPEN 40001
|
||||
#define IDM_FILE_REVERT 40002
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "Maak Stellings Lêer &Oop\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "Aanlyn &Dokumentasie\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Àäêðûöü ôàéë íàëàäà¢\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Äàâåäêà"
|
||||
BEGIN
|
||||
MENUITEM "Äàïà&ìîæí³ê Online\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Einstellungsdatei bearbeiten\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Sprache"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Hilfe"
|
||||
BEGIN
|
||||
MENUITEM "&Online Dokumentation\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Open Settings File\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Online Documentation\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Open Settings File\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Online Documentation\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "Abrir el archiv&o de configuración\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Ayuda"
|
||||
BEGIN
|
||||
MENUITEM "D&ocumentación en línea\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Ouvrir le ficher de configuration\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Aide"
|
||||
BEGIN
|
||||
MENUITEM "Documentation &en ligne\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Open Settings File\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Online Documentation\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Open Settings File\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Online Documentation\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "設定ファイルを開く(&O)\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "ヘルプ(&H)"
|
||||
BEGIN
|
||||
MENUITEM "オンラインヘルプの表示(英)(&O)\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "설정 파일 열기(&O)\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "도움말(&H)"
|
||||
BEGIN
|
||||
MENUITEM "온라인 설명서(&O)\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Open het configuratie bestand\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Online documentatie\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Open Settings File\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Online Documentation\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "&Îòêðûòü ôàéë íàñòðîåê\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "&Ñïðàâêà"
|
||||
BEGIN
|
||||
MENUITEM "&Ðóêîâîäñòâî Online\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -426,6 +426,24 @@ BEGIN
|
||||
MENUITEM "打开配置文件(&O)\tCtrl+F7", CMD_OPENINIFILE
|
||||
END
|
||||
END
|
||||
POPUP "Language"
|
||||
BEGIN
|
||||
MENUITEM "English (United States)", IDM_MUI_LANG_EN_US
|
||||
MENUITEM "Afrikaans (South Africa )", IDM_MUI_LANG_AF_ZA
|
||||
MENUITEM "Belarusian (Belarus)", IDM_MUI_LANG_BE_BY
|
||||
MENUITEM "German (Germany)", IDM_MUI_LANG_DE_DE
|
||||
MENUITEM "English (United Kingdom)", IDM_MUI_LANG_EN_GB
|
||||
MENUITEM "Spanish (Spain Modern)", IDM_MUI_LANG_ES_ES
|
||||
MENUITEM "French (France )", IDM_MUI_LANG_FR_FR
|
||||
MENUITEM "Hungarian (Hungary)", IDM_MUI_LANG_HU_HU
|
||||
MENUITEM "Italian (Italy)", IDM_MUI_LANG_IT_IT
|
||||
MENUITEM "Japanese (Japan)", IDM_MUI_LANG_JP_JP
|
||||
MENUITEM "Korean (Korea)", IDM_MUI_LANG_KO_KR
|
||||
MENUITEM "Dutch (Netherlands )", IDM_MUI_LANG_NL_NL
|
||||
MENUITEM "Portuguese (Brazil)", IDM_MUI_LANG_PT_BR
|
||||
MENUITEM "Russian (Russia)", IDM_MUI_LANG_RU_RU
|
||||
MENUITEM "Chinese (Hans)", IDM_MUI_LANG_ZH_CN
|
||||
END
|
||||
POPUP "帮助(&H)"
|
||||
BEGIN
|
||||
MENUITEM "在线文档(&O)\tF1", IDM_HELP_ONLINEDOCUMENTATION
|
||||
|
||||
@ -12,19 +12,8 @@
|
||||
* *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
#include <commctrl.h>
|
||||
#include <shlobj.h>
|
||||
#include <shellapi.h>
|
||||
@ -43,9 +32,9 @@
|
||||
#include "Dlapi.h"
|
||||
#include "resource.h"
|
||||
#include "Version.h"
|
||||
#include "Helpers.h"
|
||||
#include "Encoding.h"
|
||||
#include "TypeDefs.h"
|
||||
#include "MuiLanguage.h"
|
||||
|
||||
#include "SciCall.h"
|
||||
|
||||
#include "Dialogs.h"
|
||||
|
||||
17
src/Dlapi.c
17
src/Dlapi.c
@ -12,25 +12,14 @@
|
||||
* *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
#include <commctrl.h>
|
||||
#include <shlobj.h>
|
||||
#include <shellapi.h>
|
||||
#include <shlwapi.h>
|
||||
#include <string.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
#include "Dlapi.h"
|
||||
|
||||
|
||||
|
||||
17
src/Edit.c
17
src/Edit.c
@ -13,20 +13,8 @@
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#include "Helpers.h"
|
||||
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include <shlwapi.h>
|
||||
#include <commctrl.h>
|
||||
#include <commdlg.h>
|
||||
@ -46,9 +34,8 @@
|
||||
//#include "../uthash/utstring.h"
|
||||
#include "../tinyexpr/tinyexpr.h"
|
||||
|
||||
#include "Helpers.h"
|
||||
#include "Encoding.h"
|
||||
#include "TypeDefs.h"
|
||||
#include "MuiLanguage.h"
|
||||
|
||||
#include "SciCall.h"
|
||||
#include "SciLexer.h"
|
||||
|
||||
@ -15,19 +15,8 @@
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
#include <shellapi.h>
|
||||
#include <commctrl.h>
|
||||
#include <stdlib.h>
|
||||
@ -35,10 +24,12 @@
|
||||
|
||||
#include "../uthash/utarray.h"
|
||||
|
||||
#include "Scintilla.h"
|
||||
#include "Helpers.h"
|
||||
#include "resource.h"
|
||||
#include "Encoding.h"
|
||||
#include "MuiLanguage.h"
|
||||
|
||||
#include "Scintilla.h"
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
|
||||
@ -15,30 +15,20 @@
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
//#include <uxtheme.h>
|
||||
#include <shlobj.h>
|
||||
#include <shellapi.h>
|
||||
//#include <pathcch.h>
|
||||
#include "Scintilla.h"
|
||||
|
||||
#include "resource.h"
|
||||
#include "Edit.h"
|
||||
#include "Encoding.h"
|
||||
#include "MuiLanguage.h"
|
||||
#include "Notepad3.h"
|
||||
|
||||
#include "Helpers.h"
|
||||
#include "Scintilla.h"
|
||||
|
||||
//=============================================================================
|
||||
|
||||
@ -676,75 +666,6 @@ bool IsCmdEnabled(HWND hwnd,UINT uId)
|
||||
return (!(ustate & (MF_GRAYED|MF_DISABLED)));
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLngStringW()
|
||||
//
|
||||
int LoadLngStringW(UINT uID, LPWSTR lpBuffer, int nBufferMax)
|
||||
{
|
||||
const int nLen = LoadStringW(Globals.hLngResContainer, uID, lpBuffer, nBufferMax);
|
||||
return (nLen != 0) ? nLen : LoadStringW(Globals.hInstance, uID, lpBuffer, nBufferMax);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLngStringW2MB()
|
||||
//
|
||||
static WCHAR s_tmpStringBuffer[512];
|
||||
|
||||
int LoadLngStringW2MB(UINT uID, LPSTR lpBuffer, int nBufferMax)
|
||||
{
|
||||
const int nLen = LoadStringW(Globals.hLngResContainer, uID, s_tmpStringBuffer, COUNTOF(s_tmpStringBuffer));
|
||||
if (nLen == 0) { LoadStringW(Globals.hInstance, uID, s_tmpStringBuffer, COUNTOF(s_tmpStringBuffer)); }
|
||||
return WideCharToMultiByte(CP_UTF8, 0, s_tmpStringBuffer, -1, lpBuffer, nBufferMax, NULL, NULL);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLngStringA()
|
||||
//
|
||||
int LoadLngStringA(UINT uID, LPSTR lpBuffer, int nBufferMax)
|
||||
{
|
||||
const int nLen = LoadStringA(Globals.hLngResContainer, uID, lpBuffer, nBufferMax);
|
||||
return (nLen != 0) ? nLen : LoadStringA(Globals.hInstance, uID, lpBuffer, nBufferMax);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// FormatLngStringW()
|
||||
//
|
||||
int FormatLngStringW(LPWSTR lpOutput, int nOutput, UINT uIdFormat, ...)
|
||||
{
|
||||
WCHAR* pBuffer = AllocMem(sizeof(WCHAR)*nOutput, HEAP_ZERO_MEMORY);
|
||||
if (pBuffer) {
|
||||
if (LoadLngStringW(uIdFormat, pBuffer, nOutput)) {
|
||||
StringCchVPrintfW(lpOutput, nOutput, pBuffer, (LPVOID)((PUINT_PTR)&uIdFormat + 1));
|
||||
}
|
||||
FreeMem(pBuffer);
|
||||
return (int)StringCchLenW(lpOutput, nOutput);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// FormatLngStringA()
|
||||
//
|
||||
int FormatLngStringA(LPSTR lpOutput, int nOutput, UINT uIdFormat, ...)
|
||||
{
|
||||
CHAR* pBuffer = AllocMem(sizeof(CHAR)*nOutput, HEAP_ZERO_MEMORY);
|
||||
if (pBuffer) {
|
||||
if (LoadLngStringA(uIdFormat, pBuffer, nOutput)) {
|
||||
StringCchVPrintfA(lpOutput, nOutput, pBuffer, (LPVOID)((PUINT_PTR)&uIdFormat + 1));
|
||||
}
|
||||
FreeMem(pBuffer);
|
||||
return (int)StringCchLenA(lpOutput, nOutput);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// GetKnownFolderPath()
|
||||
@ -764,7 +685,6 @@ bool GetKnownFolderPath(REFKNOWNFOLDERID rfid, LPWSTR lpOutPath, size_t cchCount
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// PathRelativeToApp()
|
||||
|
||||
@ -19,13 +19,12 @@
|
||||
#define STRSAFE_NO_CB_FUNCTIONS
|
||||
#define STRSAFE_NO_DEPRECATE // don't allow deprecated functions
|
||||
|
||||
#include "TypeDefs.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <strsafe.h>
|
||||
#include <shlwapi.h>
|
||||
#include <versionhelpers.h>
|
||||
|
||||
#include "TypeDefs.h"
|
||||
|
||||
// ============================================================================
|
||||
// --- Disable/Enable some CodeAnalysis Warnings ---
|
||||
|
||||
@ -262,17 +261,6 @@ bool IsCmdEnabled(HWND hwnd, UINT uId);
|
||||
if (GetFocus() == hctrl) { SendMessage((hdlg), WM_NEXTDLGCTL, 0, false); } }; EnableWindow(hctrl, (b)); }
|
||||
|
||||
|
||||
int LoadLngStringW(UINT uID, LPWSTR lpBuffer, int nBufferMax);
|
||||
int LoadLngStringA(UINT uID, LPSTR lpBuffer, int nBufferMax);
|
||||
int FormatLngStringW(LPWSTR lpOutput, int nOutput, UINT uIdFormat, ...);
|
||||
int FormatLngStringA(LPSTR lpOutput, int nOutput, UINT uIdFormat, ...);
|
||||
int LoadLngStringW2MB(UINT uID, LPSTR lpBuffer, int nBufferMax);
|
||||
|
||||
#define GetLngString(id,pb,cb) LoadLngStringW((id),(pb),(cb))
|
||||
#define GetLngStringA(id,pb,cb) LoadLngStringA((id),(pb),(cb))
|
||||
#define GetLngStringW2MB(id,pb,cb) LoadLngStringW2MB((id),(pb),(cb))
|
||||
|
||||
|
||||
bool GetKnownFolderPath(REFKNOWNFOLDERID, LPWSTR lpOutPath, size_t cchCount);
|
||||
void PathRelativeToApp(LPWSTR lpszSrc,LPWSTR lpszDest,int cchDest,bool,bool,bool);
|
||||
void PathAbsoluteFromApp(LPWSTR lpszSrc,LPWSTR lpszDest,int cchDest,bool);
|
||||
|
||||
354
src/MuiLanguage.c
Normal file
354
src/MuiLanguage.c
Normal file
@ -0,0 +1,354 @@
|
||||
/******************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Notepad3 *
|
||||
* *
|
||||
* MuiLanguage.c *
|
||||
* General MUI Language support functions *
|
||||
* *
|
||||
* (c) Rizonesoft 2008-2019 *
|
||||
* https://rizonesoft.com *
|
||||
* *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include "Helpers.h"
|
||||
|
||||
#include <muiload.h>
|
||||
|
||||
#include "resource.h"
|
||||
#include "Encoding.h"
|
||||
#include "MuiLanguage.h"
|
||||
|
||||
//=============================================================================
|
||||
|
||||
MUILANGUAGE MUI_LanguageDLLs[NUM_OF_MUI_LANGUAGES] =
|
||||
{
|
||||
{ IDM_MUI_LANG_EN_US, L"en-US", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), true, false }, // internal - must be 1st
|
||||
//
|
||||
{ IDM_MUI_LANG_AF_ZA, L"af-ZA", MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA), false, false },
|
||||
{ IDM_MUI_LANG_BE_BY, L"be-BY", MAKELANGID(LANG_BELARUSIAN, SUBLANG_BELARUSIAN_BELARUS), false, false },
|
||||
{ IDM_MUI_LANG_DE_DE, L"de-DE", MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), false, false },
|
||||
{ IDM_MUI_LANG_EN_GB, L"en-GB", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK), false, false },
|
||||
{ IDM_MUI_LANG_ES_ES, L"es-ES", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN), false, false },
|
||||
{ IDM_MUI_LANG_FR_FR, L"fr-FR", MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH), false, false },
|
||||
{ IDM_MUI_LANG_HU_HU, L"hu-HU", MAKELANGID(LANG_HUNGARIAN, SUBLANG_HUNGARIAN_HUNGARY), false, false },
|
||||
{ IDM_MUI_LANG_IT_IT, L"it-IT", MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN), false, false },
|
||||
{ IDM_MUI_LANG_JP_JP, L"ja-JP", MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN), false, false },
|
||||
{ IDM_MUI_LANG_KO_KR, L"ko-KR", MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN), false, false },
|
||||
{ IDM_MUI_LANG_NL_NL, L"nl-NL", MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH), false, false },
|
||||
{ IDM_MUI_LANG_PT_BR, L"pt-BR", MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN), false, false },
|
||||
{ IDM_MUI_LANG_RU_RU, L"ru-RU", MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN_RUSSIA), false, false },
|
||||
{ IDM_MUI_LANG_ZH_CN, L"zh-CN", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), false, false}
|
||||
};
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// CheckAvailableLanguages
|
||||
//
|
||||
//
|
||||
static void _CheckAvailableLanguageDLLs()
|
||||
{
|
||||
WCHAR wchRelPath[MAX_PATH];
|
||||
WCHAR wchAbsPath[MAX_PATH];
|
||||
|
||||
for (int i = 1; i < NUM_OF_MUI_LANGUAGES; ++i)
|
||||
{
|
||||
if (IsValidLocaleName(MUI_LanguageDLLs[i].szLocaleName))
|
||||
{
|
||||
//WCHAR wchLngLocalName[LOCALE_NAME_MAX_LENGTH];
|
||||
//if (ResolveLocaleName(MUI_LanguageDLLs[i].szLocaleName, wchLngLocalName, LOCALE_NAME_MAX_LENGTH)) {
|
||||
// StringCchCopy(MUI_LanguageDLLs[i].szLocaleName, COUNTOF(MUI_LanguageDLLs[i].szLocaleName), wchLngLocalName); // put back resolved name
|
||||
//}
|
||||
|
||||
// get LANGID
|
||||
GetLocaleInfoEx(MUI_LanguageDLLs[i].szLocaleName, LOCALE_ILANGUAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&(MUI_LanguageDLLs[i].LangId), sizeof(LANGID));
|
||||
|
||||
// check for DLL
|
||||
StringCchPrintf(wchRelPath, COUNTOF(wchRelPath), L"lng/%s/np3lng.dll.mui", MUI_LanguageDLLs[i].szLocaleName);
|
||||
PathAbsoluteFromApp(wchRelPath, wchAbsPath, COUNTOF(wchAbsPath), false);
|
||||
MUI_LanguageDLLs[i].bHasDLL = PathFileExists(wchAbsPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// _LngStrToMultiLngStr
|
||||
//
|
||||
//
|
||||
static bool _LngStrToMultiLngStr(WCHAR* pLngStr, WCHAR* pLngMultiStr, size_t lngMultiStrSize)
|
||||
{
|
||||
bool rtnVal = true;
|
||||
|
||||
size_t strLen = StringCchLenW(pLngStr, 0);
|
||||
|
||||
if ((strLen > 0) && pLngMultiStr && (lngMultiStrSize > 0)) {
|
||||
WCHAR* lngMultiStrPtr = pLngMultiStr;
|
||||
WCHAR* last = pLngStr + (Has_UTF16_LE_BOM((char*)pLngStr, clampi((int)strLen, 0, 8)) ? 1 : 0);
|
||||
while (last && rtnVal) {
|
||||
// make sure you validate the user input
|
||||
WCHAR* next = StrNextTok(last, L",; :");
|
||||
if (next) { *next = L'\0'; }
|
||||
strLen = StringCchLenW(last, LOCALE_NAME_MAX_LENGTH);
|
||||
if (strLen && IsValidLocaleName(last)) {
|
||||
lngMultiStrPtr[0] = L'\0';
|
||||
rtnVal &= SUCCEEDED(StringCchCatW(lngMultiStrPtr, (lngMultiStrSize - (lngMultiStrPtr - pLngMultiStr)), last));
|
||||
lngMultiStrPtr += strLen + 1;
|
||||
}
|
||||
last = (next ? next + 1 : next);
|
||||
}
|
||||
if (rtnVal && (lngMultiStrSize - (lngMultiStrPtr - pLngMultiStr))) // make sure there is a double null term for the multi-string
|
||||
{
|
||||
lngMultiStrPtr[0] = L'\0';
|
||||
}
|
||||
else // fail and guard anyone whom might use the multi-string
|
||||
{
|
||||
lngMultiStrPtr[0] = L'\0';
|
||||
lngMultiStrPtr[1] = L'\0';
|
||||
}
|
||||
}
|
||||
return rtnVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// _GetUserPreferredLanguage
|
||||
//
|
||||
//
|
||||
static bool _GetUserPreferredLanguage(LPWSTR pszPrefLocaleName, int cchBuffer, LANGID* pLangID)
|
||||
{
|
||||
int res = 0;
|
||||
LANGID lngID = *pLangID;
|
||||
WCHAR wchLngLocalName[LOCALE_NAME_MAX_LENGTH+1];
|
||||
|
||||
if (StringCchLen(pszPrefLocaleName, cchBuffer) > 0)
|
||||
{
|
||||
res = ResolveLocaleName(pszPrefLocaleName, wchLngLocalName, COUNTOF(wchLngLocalName));
|
||||
if (res > 0) {
|
||||
// get LANGID
|
||||
DWORD value;
|
||||
res = GetLocaleInfoEx(wchLngLocalName, LOCALE_ILANGUAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&value, sizeof(value) / sizeof(WCHAR));
|
||||
if (res > 0) {
|
||||
lngID = (LANGID)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (res == 0) // No preferred language defined or retrievable, try to get User UI Language
|
||||
{
|
||||
//~GetUserDefaultLocaleName(pszPrefLocaleName, cchBuffer);
|
||||
ULONG numLngs = 0;
|
||||
DWORD cchLngsBuffer = 0;
|
||||
BOOL hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLngs, NULL, &cchLngsBuffer);
|
||||
if (hr) {
|
||||
WCHAR* pwszLngsBuffer = AllocMem((cchLngsBuffer + 2) * sizeof(WCHAR), HEAP_ZERO_MEMORY);
|
||||
if (pwszLngsBuffer) {
|
||||
hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLngs, pwszLngsBuffer, &cchLngsBuffer);
|
||||
if (hr && (numLngs > 0)) {
|
||||
// get the first
|
||||
StringCchCopy(wchLngLocalName, COUNTOF(wchLngLocalName), pwszLngsBuffer);
|
||||
lngID = LANGIDFROMLCID(LocaleNameToLCID(wchLngLocalName, 0));
|
||||
res = 1;
|
||||
}
|
||||
FreeMem(pwszLngsBuffer);
|
||||
}
|
||||
}
|
||||
if (res == 0) { // last try
|
||||
lngID = GetUserDefaultUILanguage();
|
||||
LCID const lcid = MAKELCID(lngID, SORT_DEFAULT);
|
||||
res = LCIDToLocaleName(lcid, wchLngLocalName, COUNTOF(wchLngLocalName), 0);
|
||||
}
|
||||
}
|
||||
if (res != 0) {
|
||||
*pLangID = lngID;
|
||||
StringCchCopy(pszPrefLocaleName, cchBuffer, wchLngLocalName);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLanguageResources
|
||||
//
|
||||
//
|
||||
HMODULE LoadLanguageResources(LANGID* pPrefLanguageID)
|
||||
{
|
||||
// 1st check language resources
|
||||
_CheckAvailableLanguageDLLs();
|
||||
|
||||
LANGID languageID = MUI_LanguageDLLs[0].LangId;
|
||||
|
||||
WCHAR wchLngLocalName[LOCALE_NAME_MAX_LENGTH];
|
||||
StringCchCopy(wchLngLocalName, COUNTOF(wchLngLocalName), Settings2.PreferredLanguageLocaleName);
|
||||
|
||||
if (_GetUserPreferredLanguage(wchLngLocalName, COUNTOF(wchLngLocalName), &languageID)) {
|
||||
// push-back (corrected) name found
|
||||
StringCchCopy(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), wchLngLocalName);
|
||||
}
|
||||
|
||||
// set the appropriate fallback list
|
||||
int iPrefLngIndex = -1;
|
||||
WCHAR tchAvailLngs[2 * (LOCALE_NAME_MAX_LENGTH + 1)] = { L'\0' };
|
||||
for (int lng = 0; lng < NUM_OF_MUI_LANGUAGES; ++lng) {
|
||||
if (StringCchCompareXIW(MUI_LanguageDLLs[lng].szLocaleName, Settings2.PreferredLanguageLocaleName) == 0) {
|
||||
if (MUI_LanguageDLLs[lng].bHasDLL && (lng > 0)) {
|
||||
StringCchCatW(tchAvailLngs, COUNTOF(tchAvailLngs), MUI_LanguageDLLs[lng].szLocaleName);
|
||||
StringCchCatW(tchAvailLngs, COUNTOF(tchAvailLngs), L" ");
|
||||
}
|
||||
iPrefLngIndex = lng;
|
||||
break;
|
||||
}
|
||||
}
|
||||
StringCchCatW(tchAvailLngs, COUNTOF(tchAvailLngs), MUI_LanguageDLLs[0].szLocaleName); // en-US
|
||||
|
||||
// NOTES:
|
||||
// an application developer that makes the assumption the fallback list provided by the
|
||||
// system / OS is entirely sufficient may or may not be making a good assumption based mostly on:
|
||||
// A. your choice of languages installed with your application
|
||||
// B. the languages on the OS at application install time
|
||||
// C. the OS users propensity to install/uninstall language packs
|
||||
// D. the OS users propensity to change language settings
|
||||
|
||||
bool bFallbackOK = true;
|
||||
WCHAR tchUserLangMultiStrg[LARGE_BUFFER] = { L'\0' };
|
||||
if (!_LngStrToMultiLngStr(tchAvailLngs, tchUserLangMultiStrg, COUNTOF(tchUserLangMultiStrg)))
|
||||
{
|
||||
GetLastErrorToMsgBox(L"_LngStrToMultiLngStr()", ERROR_MUI_INVALID_LOCALE_NAME);
|
||||
bFallbackOK = false;
|
||||
}
|
||||
DWORD langCount = 0;
|
||||
// using SetProcessPreferredUILanguages is recommended for new applications (esp. multi-threaded applications)
|
||||
if (!SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, tchUserLangMultiStrg, &langCount) || (langCount == 0))
|
||||
{
|
||||
GetLastErrorToMsgBox(L"SetProcessPreferredUILanguages()", 0);
|
||||
bFallbackOK = false;
|
||||
}
|
||||
|
||||
// obtains access to the proper resource container
|
||||
// for standard Win32 resource loading this is normally a PE module - use LoadLibraryEx
|
||||
|
||||
HMODULE hLangResourceContainer = NULL;
|
||||
Globals.bPrefLngNotAvail = (iPrefLngIndex < 0);
|
||||
|
||||
if ((iPrefLngIndex >= 0) && MUI_LanguageDLLs[iPrefLngIndex].bHasDLL) {
|
||||
hLangResourceContainer = (0 == iPrefLngIndex) ? Globals.hInstance :
|
||||
LoadMUILibrary(L"lng/np3lng.dll", MUI_LANGUAGE_NAME | MUI_LANGUAGE_EXACT, languageID);
|
||||
MUI_LanguageDLLs[iPrefLngIndex].bIsLoaded = true;
|
||||
}
|
||||
|
||||
if (!hLangResourceContainer) {
|
||||
// fallback to ENGLISH_US
|
||||
Globals.bPrefLngNotAvail = (languageID != MUI_LanguageDLLs[0].LangId);
|
||||
languageID = MUI_LanguageDLLs[0].LangId;
|
||||
hLangResourceContainer = Globals.hInstance;
|
||||
MUI_LanguageDLLs[0].bIsLoaded = true;
|
||||
}
|
||||
|
||||
SetThreadUILanguage(languageID);
|
||||
|
||||
*pPrefLanguageID = languageID;
|
||||
return hLangResourceContainer;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// FreeLanguageResources
|
||||
//
|
||||
//
|
||||
void FreeLanguageResources(HMODULE hLangResourceContainer)
|
||||
{
|
||||
if (hLangResourceContainer) {
|
||||
if (hLangResourceContainer != Globals.hInstance) {
|
||||
FreeMUILibrary(hLangResourceContainer);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < NUM_OF_MUI_LANGUAGES; ++i) {
|
||||
MUI_LanguageDLLs[i].bIsLoaded = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLngStringW()
|
||||
//
|
||||
int LoadLngStringW(UINT uID, LPWSTR lpBuffer, int nBufferMax)
|
||||
{
|
||||
const int nLen = LoadStringW(Globals.hLngResContainer, uID, lpBuffer, nBufferMax);
|
||||
return (nLen != 0) ? nLen : LoadStringW(Globals.hInstance, uID, lpBuffer, nBufferMax);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLngStringW2MB()
|
||||
//
|
||||
static WCHAR s_tmpStringBuffer[512];
|
||||
|
||||
int LoadLngStringW2MB(UINT uID, LPSTR lpBuffer, int nBufferMax)
|
||||
{
|
||||
const int nLen = LoadStringW(Globals.hLngResContainer, uID, s_tmpStringBuffer, COUNTOF(s_tmpStringBuffer));
|
||||
if (nLen == 0) { LoadStringW(Globals.hInstance, uID, s_tmpStringBuffer, COUNTOF(s_tmpStringBuffer)); }
|
||||
return WideCharToMultiByte(CP_UTF8, 0, s_tmpStringBuffer, -1, lpBuffer, nBufferMax, NULL, NULL);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// LoadLngStringA()
|
||||
//
|
||||
int LoadLngStringA(UINT uID, LPSTR lpBuffer, int nBufferMax)
|
||||
{
|
||||
const int nLen = LoadStringA(Globals.hLngResContainer, uID, lpBuffer, nBufferMax);
|
||||
return (nLen != 0) ? nLen : LoadStringA(Globals.hInstance, uID, lpBuffer, nBufferMax);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// FormatLngStringW()
|
||||
//
|
||||
int FormatLngStringW(LPWSTR lpOutput, int nOutput, UINT uIdFormat, ...)
|
||||
{
|
||||
WCHAR* pBuffer = AllocMem(sizeof(WCHAR) * nOutput, HEAP_ZERO_MEMORY);
|
||||
if (pBuffer) {
|
||||
if (LoadLngStringW(uIdFormat, pBuffer, nOutput)) {
|
||||
StringCchVPrintfW(lpOutput, nOutput, pBuffer, (LPVOID)((PUINT_PTR)& uIdFormat + 1));
|
||||
}
|
||||
FreeMem(pBuffer);
|
||||
return (int)StringCchLenW(lpOutput, nOutput);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// FormatLngStringA()
|
||||
//
|
||||
int FormatLngStringA(LPSTR lpOutput, int nOutput, UINT uIdFormat, ...)
|
||||
{
|
||||
CHAR* pBuffer = AllocMem(sizeof(CHAR) * nOutput, HEAP_ZERO_MEMORY);
|
||||
if (pBuffer) {
|
||||
if (LoadLngStringA(uIdFormat, pBuffer, nOutput)) {
|
||||
StringCchVPrintfA(lpOutput, nOutput, pBuffer, (LPVOID)((PUINT_PTR)& uIdFormat + 1));
|
||||
}
|
||||
FreeMem(pBuffer);
|
||||
return (int)StringCchLenA(lpOutput, nOutput);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
/// End of MuiLanguage.c ///
|
||||
53
src/MuiLanguage.h
Normal file
53
src/MuiLanguage.h
Normal file
@ -0,0 +1,53 @@
|
||||
/******************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Notepad3 *
|
||||
* *
|
||||
* MuiLanguage.h *
|
||||
* Definitions for MUI Language support *
|
||||
* Based on code from Notepad2, (c) Florian Balmer 1996-2011 *
|
||||
* *
|
||||
* (c) Rizonesoft 2008-2019 *
|
||||
* https://rizonesoft.com *
|
||||
* *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
#pragma once
|
||||
#ifndef _NP3_MUI_LANGUAGE_H_
|
||||
#define _NP3_MUI_LANGUAGE_H_
|
||||
|
||||
|
||||
typedef struct _muilanguage
|
||||
{
|
||||
UINT rid;
|
||||
WCHAR szLocaleName[LOCALE_NAME_MAX_LENGTH];
|
||||
// !!! WARNING: LCID is DEPRECATED
|
||||
LANGID LangId; // just for historic reasons
|
||||
bool bHasDLL;
|
||||
bool bIsLoaded;
|
||||
|
||||
} MUILANGUAGE, *PMUILANGUAGE;
|
||||
|
||||
|
||||
#define NUM_OF_MUI_LANGUAGES 15
|
||||
extern MUILANGUAGE MUI_LanguageDLLs[];
|
||||
|
||||
|
||||
HMODULE LoadLanguageResources(LANGID* pPrefLanguageID);
|
||||
void FreeLanguageResources(HMODULE hLangResourceContainer);
|
||||
|
||||
int LoadLngStringW(UINT uID, LPWSTR lpBuffer, int nBufferMax);
|
||||
int LoadLngStringA(UINT uID, LPSTR lpBuffer, int nBufferMax);
|
||||
int FormatLngStringW(LPWSTR lpOutput, int nOutput, UINT uIdFormat, ...);
|
||||
int FormatLngStringA(LPSTR lpOutput, int nOutput, UINT uIdFormat, ...);
|
||||
int LoadLngStringW2MB(UINT uID, LPSTR lpBuffer, int nBufferMax);
|
||||
|
||||
#define GetLngString(id,pb,cb) LoadLngStringW((id),(pb),(cb))
|
||||
#define GetLngStringA(id,pb,cb) LoadLngStringA((id),(pb),(cb))
|
||||
#define GetLngStringW2MB(id,pb,cb) LoadLngStringW2MB((id),(pb),(cb))
|
||||
|
||||
|
||||
|
||||
#endif //_NP3_MUI_LANGUAGE_H_
|
||||
|
||||
/// End of MuiLanguage.h ///
|
||||
279
src/Notepad3.c
279
src/Notepad3.c
@ -13,19 +13,8 @@
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
#include <commctrl.h>
|
||||
#include <uxtheme.h>
|
||||
#include <shlobj.h>
|
||||
@ -36,7 +25,6 @@
|
||||
#include <string.h>
|
||||
//#include <pathcch.h>
|
||||
#include <time.h>
|
||||
#include <muiload.h>
|
||||
|
||||
#include "Edit.h"
|
||||
#include "Styles.h"
|
||||
@ -47,12 +35,14 @@
|
||||
#include "../uthash/utlist.h"
|
||||
#include "../tinyexpr/tinyexpr.h"
|
||||
#include "Encoding.h"
|
||||
#include "Helpers.h"
|
||||
#include "VersionEx.h"
|
||||
#include "SciCall.h"
|
||||
|
||||
#include "SciLexer.h"
|
||||
#include "SciXLexer.h"
|
||||
|
||||
#include "MuiLanguage.h"
|
||||
|
||||
#include "Notepad3.h"
|
||||
|
||||
|
||||
@ -84,9 +74,6 @@ static HWND s_hwndReBar = NULL;
|
||||
static WCHAR s_wchIniFile2[MAX_PATH] = { L'\0' };
|
||||
static WCHAR s_wchTmpFilePath[MAX_PATH] = { L'\0' };
|
||||
|
||||
// 'en-US' internal default
|
||||
static WCHAR* const s_tchAvailableLanguages = L"af-ZA be-BY de-DE en-GB es-ES fr-FR hu-HU it-IT ja-JP ko-KR nl-NL pt-BR ru-RU zh-CN";
|
||||
|
||||
static int s_iSettingsVersion = CFG_VER_CURRENT;
|
||||
static bool s_bEnableSaveSettings = true;
|
||||
|
||||
@ -413,7 +400,6 @@ static int s_flagChangeNotify = 0;
|
||||
// static forward declarations
|
||||
static void _UpdateStatusbarDelayed(bool bForceRedraw);
|
||||
static void _UpdateToolbarDelayed();
|
||||
static HMODULE _LoadLanguageResources(const WCHAR* localeName, LANGID langID);
|
||||
|
||||
//==============================================================================
|
||||
//
|
||||
@ -450,7 +436,7 @@ static void _InitGlobals()
|
||||
|
||||
Constants.FileBrowserMiniPath = L"minipath.exe";
|
||||
|
||||
|
||||
Globals.hMainMenu = NULL;
|
||||
Globals.CallTipType = CT_NONE;
|
||||
Globals.iWrapCol = 0;
|
||||
Globals.bCodeFoldingAvailable = false;
|
||||
@ -512,9 +498,8 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized)
|
||||
DestroyMenu(Globals.hMainMenu);
|
||||
}
|
||||
|
||||
if (Globals.hLngResContainer != Globals.hInstance) {
|
||||
FreeMUILibrary(Globals.hLngResContainer);
|
||||
}
|
||||
FreeLanguageResources(Globals.hLngResContainer);
|
||||
Globals.hLngResContainer = NULL;
|
||||
|
||||
if (s_hRichEdit) {
|
||||
FreeLibrary(s_hRichEdit);
|
||||
@ -617,55 +602,9 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||
// ----------------------------------------------------
|
||||
// MultiLingual
|
||||
//
|
||||
bool bPrefLngNotAvail = false;
|
||||
|
||||
int res = 0;
|
||||
if (StringCchLen(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName)) > 0)
|
||||
{
|
||||
WCHAR wchLngLocalName[LOCALE_NAME_MAX_LENGTH];
|
||||
res = ResolveLocaleName(Settings2.PreferredLanguageLocaleName, wchLngLocalName, LOCALE_NAME_MAX_LENGTH);
|
||||
if (res > 0) {
|
||||
StringCchCopy(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), wchLngLocalName); // put back resolved name
|
||||
}
|
||||
// get LANGID
|
||||
Globals.iPrefLANGID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
|
||||
res = GetLocaleInfoEx(Settings2.PreferredLanguageLocaleName, LOCALE_ILANGUAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&Globals.iPrefLANGID, sizeof(LANGID));
|
||||
}
|
||||
Globals.iPrefLANGID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
|
||||
Globals.hLngResContainer = LoadLanguageResources(&Globals.iPrefLANGID);
|
||||
|
||||
if (res == 0) // No preferred language defined or retrievable, try to get User UI Language
|
||||
{
|
||||
//~GetUserDefaultLocaleName(&Settings2.PreferredLanguageLocaleName[0], COUNTOF(Settings2.PreferredLanguageLocaleName));
|
||||
ULONG numLngs = 0;
|
||||
DWORD cchLngsBuffer = 0;
|
||||
BOOL hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLngs, NULL, &cchLngsBuffer);
|
||||
if (hr) {
|
||||
WCHAR* pwszLngsBuffer = AllocMem((cchLngsBuffer + 2) * sizeof(WCHAR), HEAP_ZERO_MEMORY);
|
||||
if (pwszLngsBuffer) {
|
||||
hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLngs, pwszLngsBuffer, &cchLngsBuffer);
|
||||
if (hr && (numLngs > 0)) {
|
||||
// get the first
|
||||
StringCchCopy(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), pwszLngsBuffer);
|
||||
Globals.iPrefLANGID = LANGIDFROMLCID(LocaleNameToLCID(Settings2.PreferredLanguageLocaleName, 0));
|
||||
res = 1;
|
||||
}
|
||||
FreeMem(pwszLngsBuffer);
|
||||
}
|
||||
}
|
||||
if (res == 0) { // last try
|
||||
Globals.iPrefLANGID = GetUserDefaultUILanguage();
|
||||
LCID const lcid = MAKELCID(Globals.iPrefLANGID, SORT_DEFAULT);
|
||||
/*res = */LCIDToLocaleName(lcid, Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), 0);
|
||||
}
|
||||
}
|
||||
|
||||
Globals.hLngResContainer = _LoadLanguageResources(Settings2.PreferredLanguageLocaleName, Globals.iPrefLANGID);
|
||||
|
||||
if (!Globals.hLngResContainer) // fallback en-US (1033)
|
||||
{
|
||||
LANGID const langID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
|
||||
Globals.hLngResContainer = Globals.hInstance;
|
||||
if (Globals.iPrefLANGID != langID) { bPrefLngNotAvail = true; }
|
||||
}
|
||||
// ----------------------------------------------------
|
||||
|
||||
if (s_hRichEdit == INVALID_HANDLE_VALUE) {
|
||||
@ -691,7 +630,6 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||
|
||||
s_msgTaskbarCreated = RegisterWindowMessage(L"TaskbarCreated");
|
||||
|
||||
Globals.hMainMenu = NULL;
|
||||
if (Globals.hLngResContainer != Globals.hInstance) {
|
||||
Globals.hMainMenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_MAINMENU));
|
||||
if (!Globals.hMainMenu) {
|
||||
@ -730,7 +668,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||
|
||||
SetTimer(hwnd, IDT_TIMER_MRKALL, USER_TIMER_MINIMUM, (TIMERPROC)MQ_ExecuteNext);
|
||||
|
||||
if (bPrefLngNotAvail) {
|
||||
if (Globals.bPrefLngNotAvail) {
|
||||
InfoBoxLng(MBWARN, L"MsgPrefLanguageNotAvailable", IDS_WARN_PREF_LNG_NOT_AVAIL, Settings2.PreferredLanguageLocaleName);
|
||||
}
|
||||
|
||||
@ -760,98 +698,6 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// _LngStrToMultiLngStr
|
||||
//
|
||||
//
|
||||
static bool _LngStrToMultiLngStr(WCHAR* pLngStr, WCHAR* pLngMultiStr, size_t lngMultiStrSize)
|
||||
{
|
||||
bool rtnVal = true;
|
||||
|
||||
size_t strLen = StringCchLenW(pLngStr,0);
|
||||
|
||||
if ((strLen > 0) && pLngMultiStr && (lngMultiStrSize > 0)) {
|
||||
WCHAR* lngMultiStrPtr = pLngMultiStr;
|
||||
WCHAR* last = pLngStr + (Has_UTF16_LE_BOM((char*)pLngStr,clampi((int)strLen,0,8)) ? 1 : 0);
|
||||
while (last && rtnVal) {
|
||||
// make sure you validate the user input
|
||||
WCHAR* next = StrNextTok(last, L",; :");
|
||||
if (next) { *next = L'\0'; }
|
||||
strLen = StringCchLenW(last, LOCALE_NAME_MAX_LENGTH);
|
||||
if (strLen && IsValidLocaleName(last)) {
|
||||
lngMultiStrPtr[0] = L'\0';
|
||||
rtnVal &= SUCCEEDED(StringCchCatW(lngMultiStrPtr, (lngMultiStrSize - (lngMultiStrPtr - pLngMultiStr)), last));
|
||||
lngMultiStrPtr += strLen + 1;
|
||||
}
|
||||
last = (next ? next + 1 : next);
|
||||
}
|
||||
if (rtnVal && (lngMultiStrSize - (lngMultiStrPtr - pLngMultiStr))) // make sure there is a double null term for the multi-string
|
||||
{
|
||||
lngMultiStrPtr[0] = L'\0';
|
||||
}
|
||||
else // fail and guard anyone whom might use the multi-string
|
||||
{
|
||||
lngMultiStrPtr[0] = L'\0';
|
||||
lngMultiStrPtr[1] = L'\0';
|
||||
}
|
||||
}
|
||||
return rtnVal;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// _LoadLanguageResources
|
||||
//
|
||||
//
|
||||
static HMODULE _LoadLanguageResources(const WCHAR* localeName, LANGID langID)
|
||||
{
|
||||
bool bLngAvailable = (StrStrIW(s_tchAvailableLanguages, localeName) != NULL);
|
||||
if (!bLngAvailable) { return NULL; }
|
||||
|
||||
WCHAR tchAvailLngs[LARGE_BUFFER] = { L'\0' };
|
||||
StringCchCopyW(tchAvailLngs, LARGE_BUFFER, s_tchAvailableLanguages);
|
||||
WCHAR tchUserLangMultiStrg[LARGE_BUFFER] = { L'\0' };
|
||||
if (!_LngStrToMultiLngStr(tchAvailLngs, tchUserLangMultiStrg, LARGE_BUFFER))
|
||||
{
|
||||
GetLastErrorToMsgBox(L"_LngStrToMultiLngStr()", ERROR_MUI_INVALID_LOCALE_NAME);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// set the appropriate fallback list
|
||||
DWORD langCount = 0;
|
||||
// using SetProcessPreferredUILanguages is recommended for new applications (esp. multi-threaded applications)
|
||||
if (!SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, tchUserLangMultiStrg, &langCount) || (langCount == 0))
|
||||
{
|
||||
GetLastErrorToMsgBox(L"SetProcessPreferredUILanguages()", 0);
|
||||
return NULL;
|
||||
}
|
||||
SetThreadUILanguage(langID);
|
||||
|
||||
// NOTES:
|
||||
// an application developer that makes the assumption the fallback list provided by the
|
||||
// system / OS is entirely sufficient may or may not be making a good assumption based mostly on:
|
||||
// A. your choice of languages installed with your application
|
||||
// B. the languages on the OS at application install time
|
||||
// C. the OS users propensity to install/uninstall language packs
|
||||
// D. the OS users propensity to change language settings
|
||||
|
||||
// obtains access to the proper resource container
|
||||
// for standard Win32 resource loading this is normally a PE module - use LoadLibraryEx
|
||||
|
||||
HMODULE hLangResourceContainer = LoadMUILibraryW(L"lng/np3lng.dll", MUI_LANGUAGE_NAME, langID);
|
||||
|
||||
//if (!hLangResourceContainer)
|
||||
//{
|
||||
// GetLastErrorToMsgBox(L"LoadMUILibrary", 0);
|
||||
// return NULL;
|
||||
//}
|
||||
|
||||
return hLangResourceContainer;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// WaitCursorStack
|
||||
@ -2140,8 +1986,6 @@ LRESULT MsgDPIChanged(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
DocPos const pos = SciCall_GetCurrentPos();
|
||||
|
||||
HINSTANCE hInstance = (HINSTANCE)(INT_PTR)GetWindowLongPtr(hwnd, GWLP_HINSTANCE);
|
||||
|
||||
#if 0
|
||||
char buf[128];
|
||||
sprintf(buf, "WM_DPICHANGED: dpi=%u,%u ppi=%u,%u\n", Globals.CurrentDPI.x, Globals.CurrentDPI.y, Globals.CurrentPPI.x, Globals.CurrentPPI.y);
|
||||
@ -2157,7 +2001,7 @@ LRESULT MsgDPIChanged(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
DestroyWindow(s_hwndToolbar);
|
||||
DestroyWindow(s_hwndReBar);
|
||||
DestroyWindow(Globals.hwndStatus);
|
||||
CreateBars(hwnd, hInstance);
|
||||
CreateBars(hwnd, Globals.hInstance);
|
||||
|
||||
RECT* const rc = (RECT*)lParam;
|
||||
SendWMSize(hwnd, rc);
|
||||
@ -3034,6 +2878,11 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
i = (int)StringCchLenW(Settings2.AdministrationTool, COUNTOF(Settings2.AdministrationTool));
|
||||
EnableCmd(hmenu, IDM_HELP_ADMINEXE, i);
|
||||
|
||||
for (int lng = 0; lng < NUM_OF_MUI_LANGUAGES; ++lng) {
|
||||
EnableCmd(hmenu, MUI_LanguageDLLs[lng].rid, MUI_LanguageDLLs[lng].bHasDLL);
|
||||
CheckCmd(hmenu, MUI_LanguageDLLs[lng].rid, MUI_LanguageDLLs[lng].bIsLoaded);
|
||||
}
|
||||
|
||||
return 0LL;
|
||||
}
|
||||
|
||||
@ -3069,6 +2918,57 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
EditUpdateVisibleUrlHotspot(Settings.HyperlinkHotspot);
|
||||
break;
|
||||
|
||||
|
||||
case IDM_MUI_LANG_EN_US:
|
||||
case IDM_MUI_LANG_AF_ZA:
|
||||
case IDM_MUI_LANG_BE_BY:
|
||||
case IDM_MUI_LANG_DE_DE:
|
||||
case IDM_MUI_LANG_EN_GB:
|
||||
case IDM_MUI_LANG_ES_ES:
|
||||
case IDM_MUI_LANG_FR_FR:
|
||||
case IDM_MUI_LANG_HU_HU:
|
||||
case IDM_MUI_LANG_IT_IT:
|
||||
case IDM_MUI_LANG_JP_JP:
|
||||
case IDM_MUI_LANG_KO_KR:
|
||||
case IDM_MUI_LANG_NL_NL:
|
||||
case IDM_MUI_LANG_PT_BR:
|
||||
case IDM_MUI_LANG_RU_RU:
|
||||
case IDM_MUI_LANG_ZH_CN:
|
||||
{
|
||||
int iLngIdx = (int)LOWORD(wParam) - IDM_MUI_LANG_EN_US;
|
||||
|
||||
if (Globals.iPrefLANGID != MUI_LanguageDLLs[iLngIdx].LangId)
|
||||
{
|
||||
if (IsWindow(Globals.hwndDlgFindReplace)) {
|
||||
SendMessage(Globals.hwndDlgFindReplace, WM_CLOSE, 0, 0);
|
||||
}
|
||||
if (IsWindow(Globals.hwndDlgCustomizeSchemes)) {
|
||||
SendMessage(Globals.hwndDlgCustomizeSchemes, WM_CLOSE, 0, 0);
|
||||
}
|
||||
|
||||
StringCchCopyW(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), MUI_LanguageDLLs[iLngIdx].szLocaleName);
|
||||
IniSetString(L"Settings2", L"PreferredLanguageLocaleName", Settings2.PreferredLanguageLocaleName);
|
||||
|
||||
DestroyMenu(Globals.hMainMenu);
|
||||
FreeLanguageResources(Globals.hLngResContainer);
|
||||
|
||||
Globals.iPrefLANGID = MUI_LanguageDLLs[iLngIdx].LangId;
|
||||
Globals.hLngResContainer = LoadLanguageResources(&Globals.iPrefLANGID);
|
||||
Globals.hMainMenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_MAINMENU));
|
||||
|
||||
SetMenu(Globals.hwndMain, Globals.hMainMenu);
|
||||
DrawMenuBar(Globals.hwndMain);
|
||||
|
||||
SendWMSize(Globals.hwndMain, NULL);
|
||||
UpdateUI();
|
||||
UpdateToolbar();
|
||||
UpdateStatusbar(true);
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case IDM_FILE_NEW:
|
||||
FileLoad(false,true,false,Settings.SkipUnicodeDetection,Settings.SkipANSICodePageDetection,L"");
|
||||
break;
|
||||
@ -8399,18 +8299,18 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
static DocLn s_iLnFromPos = -1;
|
||||
static DocLn s_iLnCnt = -1;
|
||||
|
||||
if (s_iLnFromPos != iLnFromPos) {
|
||||
if (bForceRedraw || (s_iLnFromPos != iLnFromPos)) {
|
||||
StringCchPrintf(tchLn, COUNTOF(tchLn), DOCPOSFMTW, iLnFromPos + 1);
|
||||
FormatNumberStr(tchLn);
|
||||
}
|
||||
|
||||
DocLn const iLnCnt = SciCall_GetLineCount();
|
||||
if (s_iLnCnt != iLnCnt) {
|
||||
if (bForceRedraw || (s_iLnCnt != iLnCnt)) {
|
||||
StringCchPrintf(tchLines, COUNTOF(tchLines), DOCPOSFMTW, iLnCnt);
|
||||
FormatNumberStr(tchLines);
|
||||
}
|
||||
|
||||
if ((s_iLnFromPos != iLnFromPos) || (s_iLnCnt != iLnCnt))
|
||||
if (bForceRedraw || ((s_iLnFromPos != iLnFromPos) || (s_iLnCnt != iLnCnt)))
|
||||
{
|
||||
StringCchPrintf(tchStatusBar[STATUS_DOCLINE], txtWidth, L"%s%s / %s%s",
|
||||
s_mxSBPrefix[STATUS_DOCLINE], tchLn, tchLines, s_mxSBPostfix[STATUS_DOCLINE]);
|
||||
@ -8429,7 +8329,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
|
||||
static DocPos s_iCol = -1;
|
||||
DocPos const iCol = SciCall_GetColumn(iPos) + SciCall_GetSelectionNCaretVirtualSpace(0);
|
||||
if (s_iCol != iCol) {
|
||||
if (bForceRedraw || (s_iCol != iCol)) {
|
||||
StringCchPrintf(tchCol, COUNTOF(tchCol), DOCPOSFMTW, iCol + colOffset);
|
||||
FormatNumberStr(tchCol);
|
||||
}
|
||||
@ -8437,12 +8337,12 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
static DocPos s_iCols = -1;
|
||||
static WCHAR tchCols[32] = { L'\0' };
|
||||
DocPos const iCols = SciCall_GetColumn(iLineBack);
|
||||
if (s_iCols != iCols) {
|
||||
if (bForceRedraw || (s_iCols != iCols)) {
|
||||
StringCchPrintf(tchCols, COUNTOF(tchCols), DOCPOSFMTW, iCols);
|
||||
FormatNumberStr(tchCols);
|
||||
}
|
||||
|
||||
if ((s_iCol != iCol) || (s_iCols != iCols)) {
|
||||
if (bForceRedraw || ((s_iCol != iCol) || (s_iCols != iCols))) {
|
||||
StringCchPrintf(tchStatusBar[STATUS_DOCCOLUMN], txtWidth, L"%s%s / %s%s",
|
||||
s_mxSBPrefix[STATUS_DOCCOLUMN], tchCol, tchCols, s_mxSBPostfix[STATUS_DOCCOLUMN]);
|
||||
|
||||
@ -8461,14 +8361,14 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
DocPos const chrOffset = Globals.bZeroBasedCharacterCount ? 0 : 1;
|
||||
|
||||
DocPos const iChr = SciCall_CountCharacters(iLineBegin, iPos);
|
||||
if (s_iChr != iChr) {
|
||||
if (bForceRedraw || (s_iChr != iChr)) {
|
||||
StringCchPrintf(tchChr, COUNTOF(tchChr), DOCPOSFMTW, iChr + chrOffset);
|
||||
FormatNumberStr(tchChr);
|
||||
}
|
||||
|
||||
static DocPos s_iChrs = -1;
|
||||
DocPos const iChrs = SciCall_CountCharacters(iLineBegin, iLineBack);
|
||||
if (s_iChrs != iChrs) {
|
||||
if (bForceRedraw || (s_iChrs != iChrs)) {
|
||||
StringCchPrintf(tchChrs, COUNTOF(tchChrs), DOCPOSFMTW, iChrs);
|
||||
FormatNumberStr(tchChrs);
|
||||
}
|
||||
@ -8493,7 +8393,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
static DocPos s_iSelStart = -1;
|
||||
static DocPos s_iSelEnd = -1;
|
||||
|
||||
if ((s_bIsSelCountable != bIsSelCountable) || (s_iSelStart != iSelStart) || (s_iSelEnd != iSelEnd))
|
||||
if (bForceRedraw || ((s_bIsSelCountable != bIsSelCountable) || (s_iSelStart != iSelStart) || (s_iSelEnd != iSelEnd)))
|
||||
{
|
||||
static WCHAR tchSelB[64] = { L'\0' };
|
||||
if (bIsSelCountable)
|
||||
@ -8533,7 +8433,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
|
||||
DocLn const iLinesSelected = ((iSelStart != iSelEnd) && (iStartOfLinePos != iSelEnd)) ? ((iLineEnd - iLineStart) + 1) : (iLineEnd - iLineStart);
|
||||
|
||||
if ((s_bIsSelectionEmpty != bIsSelectionEmpty) || (s_iLinesSelected != iLinesSelected))
|
||||
if (bForceRedraw || ((s_bIsSelectionEmpty != bIsSelectionEmpty) || (s_iLinesSelected != iLinesSelected)))
|
||||
{
|
||||
static WCHAR tchLinesSelected[32] = { L'\0' };
|
||||
if (bIsSelectionEmpty) {
|
||||
@ -8601,8 +8501,8 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
StringCchPrintf(tchExpression, COUNTOF(tchExpression), L"^[%i]", s_iExprError);
|
||||
}
|
||||
|
||||
if (!s_iExprError || (s_iExErr != s_iExprError)) {
|
||||
|
||||
if (bForceRedraw || (!s_iExprError || (s_iExErr != s_iExprError)))
|
||||
{
|
||||
StringCchPrintf(tchStatusBar[STATUS_TINYEXPR], txtWidth, L"%s%s%s ",
|
||||
s_mxSBPrefix[STATUS_TINYEXPR], tchExpression, s_mxSBPostfix[STATUS_TINYEXPR]);
|
||||
|
||||
@ -8619,7 +8519,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static int s_iMarkOccurrencesCount = -111;
|
||||
static bool s_bMOVisible = false;
|
||||
if ((s_bMOVisible != Settings.MarkOccurrencesMatchVisible) || (s_iMarkOccurrencesCount != Globals.iMarkOccurrencesCount))
|
||||
if (bForceRedraw || ((s_bMOVisible != Settings.MarkOccurrencesMatchVisible) || (s_iMarkOccurrencesCount != Globals.iMarkOccurrencesCount)))
|
||||
{
|
||||
if ((Globals.iMarkOccurrencesCount >= 0) && !Settings.MarkOccurrencesMatchVisible)
|
||||
{
|
||||
@ -8654,7 +8554,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static int s_iReplacedOccurrences = -1;
|
||||
|
||||
if (s_iReplacedOccurrences != Globals.iReplacedOccurrences)
|
||||
if (bForceRedraw || (s_iReplacedOccurrences != Globals.iReplacedOccurrences))
|
||||
{
|
||||
static WCHAR tchRepl[32] = { L'\0' };
|
||||
if (Globals.iReplacedOccurrences > 0)
|
||||
@ -8680,7 +8580,8 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static DocPos s_iTextLength = -1;
|
||||
DocPos const iTextLength = SciCall_GetTextLength();
|
||||
if (s_iTextLength != iTextLength) {
|
||||
if (bForceRedraw || (s_iTextLength != iTextLength))
|
||||
{
|
||||
static WCHAR tchBytes[32] = { L'\0' };
|
||||
StrFormatByteSize(iTextLength, tchBytes, COUNTOF(tchBytes));
|
||||
|
||||
@ -8697,7 +8598,8 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static int s_iEncoding = -1;
|
||||
int const iEncoding = Encoding_Current(CPI_GET);
|
||||
if (s_iEncoding != iEncoding) {
|
||||
if (bForceRedraw || (s_iEncoding != iEncoding))
|
||||
{
|
||||
Encoding_SetLabel(iEncoding);
|
||||
|
||||
StringCchPrintf(tchStatusBar[STATUS_CODEPAGE], txtWidth, L"%s%s%s",
|
||||
@ -8714,7 +8616,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
static int s_iEOLMode = -1;
|
||||
int const _eol_mode = SciCall_GetEOLMode();
|
||||
|
||||
if (s_iEOLMode != _eol_mode)
|
||||
if (bForceRedraw || (s_iEOLMode != _eol_mode))
|
||||
{
|
||||
if (_eol_mode == SC_EOL_LF) {
|
||||
StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, L"%sLF%s",
|
||||
@ -8738,7 +8640,8 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static bool s_bIsOVR = -1;
|
||||
bool const bIsOVR = (bool)SendMessage(Globals.hwndEdit, SCI_GETOVERTYPE, 0, 0);
|
||||
if (s_bIsOVR != bIsOVR) {
|
||||
if (bForceRedraw || (s_bIsOVR != bIsOVR))
|
||||
{
|
||||
if (bIsOVR)
|
||||
{
|
||||
StringCchPrintf(tchStatusBar[STATUS_OVRMODE], txtWidth, L"%sOVR%s",
|
||||
@ -8758,7 +8661,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static bool s_bUse2ndDefault = -1;
|
||||
bool const bUse2ndDefault = Style_GetUse2ndDefault();
|
||||
if (s_bUse2ndDefault != bUse2ndDefault)
|
||||
if (bForceRedraw || (s_bUse2ndDefault != bUse2ndDefault))
|
||||
{
|
||||
if (bUse2ndDefault)
|
||||
StringCchPrintf(tchStatusBar[STATUS_2ND_DEF], txtWidth, L"%s2ND%s",
|
||||
@ -8777,7 +8680,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
{
|
||||
static int s_iCurLexer = -1;
|
||||
int const iCurLexer = Style_GetCurrentLexerRID();
|
||||
if (s_iCurLexer != iCurLexer)
|
||||
if (bForceRedraw || (s_iCurLexer != iCurLexer))
|
||||
{
|
||||
static WCHAR tchLexerName[MINI_BUFFER];
|
||||
if (Style_IsCurLexerStandard())
|
||||
|
||||
@ -381,6 +381,7 @@
|
||||
<ClCompile Include="Encoding.c" />
|
||||
<ClCompile Include="EncodingCED.cpp" />
|
||||
<ClCompile Include="Helpers.c" />
|
||||
<ClCompile Include="MuiLanguage.c" />
|
||||
<ClCompile Include="Notepad3.c" />
|
||||
<ClCompile Include="Print.cpp" />
|
||||
<ClCompile Include="StyleLexers\styleLexAHK.c" />
|
||||
@ -468,6 +469,7 @@
|
||||
<ClInclude Include="Edit.h" />
|
||||
<ClInclude Include="Encoding.h" />
|
||||
<ClInclude Include="Helpers.h" />
|
||||
<ClInclude Include="MuiLanguage.h" />
|
||||
<ClInclude Include="Notepad3.h" />
|
||||
<ClInclude Include="SciCall.h" />
|
||||
<ClInclude Include="StyleLexers\EditLexer.h" />
|
||||
|
||||
@ -252,6 +252,9 @@
|
||||
<ClCompile Include="StyleLexers\styleLexNim.c">
|
||||
<Filter>Source Files\StyleLexers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MuiLanguage.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Dialogs.h">
|
||||
@ -389,6 +392,9 @@
|
||||
<ClInclude Include="..\uthash\utstack.h">
|
||||
<Filter>Source Files\uthash</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MuiLanguage.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\res\Copy.cur">
|
||||
|
||||
@ -15,19 +15,11 @@
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
extern "C" {
|
||||
#include "Helpers.h"
|
||||
#include "MuiLanguage.h"
|
||||
}
|
||||
|
||||
#include <commctrl.h>
|
||||
#include <shellapi.h>
|
||||
#include <shlwapi.h>
|
||||
@ -44,8 +36,6 @@
|
||||
|
||||
extern "C" {
|
||||
#include "Dialogs.h"
|
||||
#include "Helpers.h"
|
||||
#include "TypeDefs.h"
|
||||
#include "SciCall.h"
|
||||
}
|
||||
|
||||
|
||||
18
src/Styles.c
18
src/Styles.c
@ -13,19 +13,8 @@
|
||||
* *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
#include "Helpers.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <commctrl.h>
|
||||
#include <commdlg.h>
|
||||
@ -42,7 +31,8 @@
|
||||
#include "Dialogs.h"
|
||||
#include "resource.h"
|
||||
#include "Encoding.h"
|
||||
#include "Helpers.h"
|
||||
#include "MuiLanguage.h"
|
||||
|
||||
#include "SciCall.h"
|
||||
|
||||
#include "Styles.h"
|
||||
|
||||
@ -14,7 +14,22 @@
|
||||
#ifndef _NP3_TYPEDEFS_H_
|
||||
#define _NP3_TYPEDEFS_H_
|
||||
|
||||
#if !defined(WINVER)
|
||||
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(_WIN32_WINNT)
|
||||
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
|
||||
#endif
|
||||
#if !defined(NTDDI_VERSION)
|
||||
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
|
||||
#endif
|
||||
#define VC_EXTRALEAN 1
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#define NOMINMAX 1
|
||||
#include <windows.h>
|
||||
|
||||
#include <intsafe.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
@ -245,6 +260,7 @@ typedef struct _globals_t
|
||||
HINSTANCE hInstance;
|
||||
HINSTANCE hPrevInst;
|
||||
HMODULE hLngResContainer;
|
||||
bool bPrefLngNotAvail;
|
||||
HWND hwndMain;
|
||||
HANDLE hndlProcessHeap;
|
||||
HWND hwndEdit;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user