diff --git a/CMakeLists.txt b/CMakeLists.txt index 152d0c05686..2716eb1c98d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 2.8) if(POLICY CMP0017) # Shadow cmake provided modules diff --git a/base/applications/CMakeLists.txt b/base/applications/CMakeLists.txt index ca7fba2f8cc..df969c08f7c 100644 --- a/base/applications/CMakeLists.txt +++ b/base/applications/CMakeLists.txt @@ -19,10 +19,11 @@ add_subdirectory(mmc) add_subdirectory(mplay32) add_subdirectory(msconfig) add_subdirectory(mscutils) +add_subdirectory(mspaint) add_subdirectory(mstsc) add_subdirectory(network) add_subdirectory(notepad) -add_subdirectory(mspaint) +add_subdirectory(osk) add_subdirectory(rapps) add_subdirectory(regedit) add_subdirectory(regedt32) diff --git a/base/applications/calc/lang/bg-BG.rc b/base/applications/calc/lang/bg-BG.rc index dac3a71eb3c..0c07c6c439d 100644 --- a/base/applications/calc/lang/bg-BG.rc +++ b/base/applications/calc/lang/bg-BG.rc @@ -336,8 +336,8 @@ BEGIN END POPUP "Изглед" BEGIN - MENUITEM "Обикновен", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Научен", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Обикновен", IDM_VIEW_STANDARD + MENUITEM "Научен", IDM_VIEW_SCIENTIFIC MENUITEM "Преобразуване", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Шестнaдесетичен\tF5", IDM_VIEW_HEX, CHECKED @@ -368,8 +368,8 @@ BEGIN END POPUP "Изглед" BEGIN - MENUITEM "Стандартно", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Научен", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Стандартно", IDM_VIEW_STANDARD + MENUITEM "Научен", IDM_VIEW_SCIENTIFIC MENUITEM "Преобразуване", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Шестнaдесетичен\tF5", IDM_VIEW_HEX, CHECKED @@ -401,8 +401,8 @@ BEGIN END POPUP "Изглед" BEGIN - MENUITEM "Стандартно", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Научен", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Стандартно", IDM_VIEW_STANDARD + MENUITEM "Научен", IDM_VIEW_SCIENTIFIC MENUITEM "Преобразуване", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Разделяне на хилядите", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/cs-CZ.rc b/base/applications/calc/lang/cs-CZ.rc index 8078042defe..7b0031ad100 100644 --- a/base/applications/calc/lang/cs-CZ.rc +++ b/base/applications/calc/lang/cs-CZ.rc @@ -335,8 +335,8 @@ BEGIN END POPUP "Zobrazit" BEGIN - MENUITEM "Standardní", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standardní", IDM_VIEW_STANDARD + MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC MENUITEM "Převody", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Šestnáctkově\tF5", IDM_VIEW_HEX, CHECKED @@ -367,8 +367,8 @@ BEGIN END POPUP "Zobrazit" BEGIN - MENUITEM "Standardní", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standardní", IDM_VIEW_STANDARD + MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC MENUITEM "Převody", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Šestnáctkově\tF5", IDM_VIEW_HEX, CHECKED @@ -400,8 +400,8 @@ BEGIN END POPUP "Zobrazit" BEGIN - MENUITEM "Standardní", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standardní", IDM_VIEW_STANDARD + MENUITEM "Vědecká", IDM_VIEW_SCIENTIFIC MENUITEM "Převody", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Seskupování číslic", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/de-DE.rc b/base/applications/calc/lang/de-DE.rc index 8275d2f1fa2..5a9149bd955 100644 --- a/base/applications/calc/lang/de-DE.rc +++ b/base/applications/calc/lang/de-DE.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "Ansicht" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC MENUITEM "Konversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "Ansicht" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC MENUITEM "Konversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "Ansicht" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Wissenschaftlich", IDM_VIEW_SCIENTIFIC MENUITEM "Konversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Zifferngruppierung", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/el-GR.rc b/base/applications/calc/lang/el-GR.rc index 9425e8c013f..ba7b6975460 100644 --- a/base/applications/calc/lang/el-GR.rc +++ b/base/applications/calc/lang/el-GR.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Τυπική", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Τυπική", IDM_VIEW_STANDARD + MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC MENUITEM "Μετατροπή", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Τυπική", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Τυπική", IDM_VIEW_STANDARD + MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC MENUITEM "Μετατροπή", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Δεκαεξαδικό\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Τυπική", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Τυπική", IDM_VIEW_STANDARD + MENUITEM "Επιστημονική", IDM_VIEW_SCIENTIFIC MENUITEM "Μετατροπή", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Ομαδοποίηση ψηφίων", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/en-US.rc b/base/applications/calc/lang/en-US.rc index b7c04a6dc6d..dc04ceb653f 100644 --- a/base/applications/calc/lang/en-US.rc +++ b/base/applications/calc/lang/en-US.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC MENUITEM "Conversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC MENUITEM "Conversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC MENUITEM "Conversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Group digits", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/es-ES.rc b/base/applications/calc/lang/es-ES.rc index a52a6c1056a..8444c9df353 100644 --- a/base/applications/calc/lang/es-ES.rc +++ b/base/applications/calc/lang/es-ES.rc @@ -336,8 +336,8 @@ BEGIN END POPUP "Ver" BEGIN - MENUITEM "Estándar", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Estándar", IDM_VIEW_STANDARD + MENUITEM "Científica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversión", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED @@ -368,8 +368,8 @@ BEGIN END POPUP "Ver" BEGIN - MENUITEM "Estándar", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Estándar", IDM_VIEW_STANDARD + MENUITEM "Científica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversión", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED @@ -401,8 +401,8 @@ BEGIN END POPUP "Ver" BEGIN - MENUITEM "Estándar", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Estándar", IDM_VIEW_STANDARD + MENUITEM "Científica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversión", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Agrupar dígitos", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/fr-FR.rc b/base/applications/calc/lang/fr-FR.rc index 0ea25af6e0d..97ab52bf51a 100644 --- a/base/applications/calc/lang/fr-FR.rc +++ b/base/applications/calc/lang/fr-FR.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "Affichage" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC MENUITEM "Conversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hexadécimal\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "Affichage" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC MENUITEM "Conversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hexadécimal\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "Affichage" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientifique", IDM_VIEW_SCIENTIFIC MENUITEM "Conversion", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Grouper les chiffres", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/he-IL.rc b/base/applications/calc/lang/he-IL.rc index 2b928bf5def..365232fc7db 100644 --- a/base/applications/calc/lang/he-IL.rc +++ b/base/applications/calc/lang/he-IL.rc @@ -332,8 +332,8 @@ BEGIN END POPUP "תצוגה" BEGIN - MENUITEM "רגילה", IDM_VIEW_STANDARD, CHECKED - MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "רגילה", IDM_VIEW_STANDARD + MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC MENUITEM "המרה", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "הקס\tF5", IDM_VIEW_HEX, CHECKED @@ -364,8 +364,8 @@ BEGIN END POPUP "תצוגה" BEGIN - MENUITEM "רגילה", IDM_VIEW_STANDARD, CHECKED - MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "רגילה", IDM_VIEW_STANDARD + MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC MENUITEM "המרה", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "הקס\tF5", IDM_VIEW_HEX, CHECKED @@ -397,8 +397,8 @@ BEGIN END POPUP "תצוגה" BEGIN - MENUITEM "רגילה", IDM_VIEW_STANDARD, CHECKED - MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "רגילה", IDM_VIEW_STANDARD + MENUITEM "מדעית", IDM_VIEW_SCIENTIFIC MENUITEM "המרה", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "קיבוץ ספרות", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/hu-HU.rc b/base/applications/calc/lang/hu-HU.rc index 125c58c9576..c6182abd68c 100644 --- a/base/applications/calc/lang/hu-HU.rc +++ b/base/applications/calc/lang/hu-HU.rc @@ -338,8 +338,8 @@ BEGIN END POPUP "&Nézet" BEGIN - MENUITEM "&Szokásos", IDM_VIEW_STANDARD, CHECKED - MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "&Szokásos", IDM_VIEW_STANDARD + MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC MENUITEM "Át&váltás", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "&Hexadecimális\tF5", IDM_VIEW_HEX, CHECKED @@ -370,8 +370,8 @@ BEGIN END POPUP "&Nézet" BEGIN - MENUITEM "&Szokásos", IDM_VIEW_STANDARD, CHECKED - MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "&Szokásos", IDM_VIEW_STANDARD + MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC MENUITEM "Át&váltás", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "&Hexadecimális\tF5", IDM_VIEW_HEX, CHECKED @@ -403,8 +403,8 @@ BEGIN END POPUP "&Nézet" BEGIN - MENUITEM "&Szokásos", IDM_VIEW_STANDARD, CHECKED - MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "&Szokásos", IDM_VIEW_STANDARD + MENUITEM "&Tudományos", IDM_VIEW_SCIENTIFIC MENUITEM "Át&váltás", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Számjegyek &csoportosítása", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/it-IT.rc b/base/applications/calc/lang/it-IT.rc index e53739de391..4f1a95a2c13 100644 --- a/base/applications/calc/lang/it-IT.rc +++ b/base/applications/calc/lang/it-IT.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "Visualizza" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversione", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "Visualizza" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversione", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "Visualizza" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Scientifica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversione", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Raggruppamento cifre", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/ja-JP.rc b/base/applications/calc/lang/ja-JP.rc index 64021330f2a..734760f2215 100644 --- a/base/applications/calc/lang/ja-JP.rc +++ b/base/applications/calc/lang/ja-JP.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "表示(&V)" BEGIN - MENUITEM "標準(&T)", IDM_VIEW_STANDARD, CHECKED - MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "標準(&T)", IDM_VIEW_STANDARD + MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC MENUITEM "変換(&C)", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "1&6進\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "表示(&V)" BEGIN - MENUITEM "標準(&T)", IDM_VIEW_STANDARD, CHECKED - MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "標準(&T)", IDM_VIEW_STANDARD + MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC MENUITEM "変換(&C)", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "1&6進\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "表示" BEGIN - MENUITEM "標準(&T)", IDM_VIEW_STANDARD, CHECKED - MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "標準(&T)", IDM_VIEW_STANDARD + MENUITEM "関数電卓(&S)", IDM_VIEW_SCIENTIFIC MENUITEM "変換(&C)", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "桁を区切る(&I)", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/ko-KR.rc b/base/applications/calc/lang/ko-KR.rc index 5736d529759..e47e2c4d4e9 100644 --- a/base/applications/calc/lang/ko-KR.rc +++ b/base/applications/calc/lang/ko-KR.rc @@ -332,8 +332,8 @@ BEGIN END POPUP "보기" BEGIN - MENUITEM "일반", IDM_VIEW_STANDARD, CHECKED - MENUITEM "공학", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "일반", IDM_VIEW_STANDARD + MENUITEM "공학", IDM_VIEW_SCIENTIFIC MENUITEM "전환", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -364,8 +364,8 @@ BEGIN END POPUP "보기" BEGIN - MENUITEM "일반", IDM_VIEW_STANDARD, CHECKED - MENUITEM "공학", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "일반", IDM_VIEW_STANDARD + MENUITEM "공학", IDM_VIEW_SCIENTIFIC MENUITEM "전환", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -397,8 +397,8 @@ BEGIN END POPUP "보기" BEGIN - MENUITEM "일반", IDM_VIEW_STANDARD, CHECKED - MENUITEM "공학", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "일반", IDM_VIEW_STANDARD + MENUITEM "공학", IDM_VIEW_SCIENTIFIC MENUITEM "전환", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "자릿수 구분 단위", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/nl-NL.rc b/base/applications/calc/lang/nl-NL.rc index 4fd8b8cba6c..3b17be99d32 100644 --- a/base/applications/calc/lang/nl-NL.rc +++ b/base/applications/calc/lang/nl-NL.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "Beeld" BEGIN - MENUITEM "Standaard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standaard", IDM_VIEW_STANDARD + MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC MENUITEM "Converteren", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "Beeld" BEGIN - MENUITEM "Standaard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standaard", IDM_VIEW_STANDARD + MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC MENUITEM "Converteren", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "View" BEGIN - MENUITEM "Standaard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standaard", IDM_VIEW_STANDARD + MENUITEM "Wetenschappelijk", IDM_VIEW_SCIENTIFIC MENUITEM "Converteren", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Cijfergroeperingen", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/no-NO.rc b/base/applications/calc/lang/no-NO.rc index f69437c5f25..9c25dfb6860 100644 --- a/base/applications/calc/lang/no-NO.rc +++ b/base/applications/calc/lang/no-NO.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "Vis" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC MENUITEM "Konvertering", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Heksadesimalt\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "Vis" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC MENUITEM "konvertering", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Heksadesimalt\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "Vis" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Vitenskapelig", IDM_VIEW_SCIENTIFIC MENUITEM "Konvertering", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Siffergruppering", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/pl-PL.rc b/base/applications/calc/lang/pl-PL.rc index 30602af7659..ee2ebe3ecdf 100644 --- a/base/applications/calc/lang/pl-PL.rc +++ b/base/applications/calc/lang/pl-PL.rc @@ -339,8 +339,8 @@ BEGIN END POPUP "Wygląd" BEGIN - MENUITEM "Standardowy", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standardowy", IDM_VIEW_STANDARD + MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC MENUITEM "Przeliczanie", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Szesnastkowy\tF5", IDM_VIEW_HEX, CHECKED @@ -371,8 +371,8 @@ BEGIN END POPUP "Wygląd" BEGIN - MENUITEM "Standardowy", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standardowy", IDM_VIEW_STANDARD + MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC MENUITEM "Przeliczanie", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Szesnastkowo\tF5", IDM_VIEW_HEX, CHECKED @@ -404,8 +404,8 @@ BEGIN END POPUP "Wygląd" BEGIN - MENUITEM "Standardowy", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standardowy", IDM_VIEW_STANDARD + MENUITEM "Naukowy", IDM_VIEW_SCIENTIFIC MENUITEM "Przeliczanie", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Grupowanie cyfr", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/pt-BR.rc b/base/applications/calc/lang/pt-BR.rc index b4ce55152b3..8a402880c35 100644 --- a/base/applications/calc/lang/pt-BR.rc +++ b/base/applications/calc/lang/pt-BR.rc @@ -332,8 +332,8 @@ BEGIN END POPUP "Visualizar" BEGIN - MENUITEM "Padrão", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Padrão", IDM_VIEW_STANDARD + MENUITEM "Científica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversão", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -364,8 +364,8 @@ BEGIN END POPUP "Visualizar" BEGIN - MENUITEM "Padrão", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Padrão", IDM_VIEW_STANDARD + MENUITEM "Científica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversão", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -397,8 +397,8 @@ BEGIN END POPUP "Visualizar" BEGIN - MENUITEM "Padrão", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Científica", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Padrão", IDM_VIEW_STANDARD + MENUITEM "Científica", IDM_VIEW_SCIENTIFIC MENUITEM "Conversão", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Agrupar dígitos", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/ro-RO.rc b/base/applications/calc/lang/ro-RO.rc index d4e206f7da7..b70e11673ca 100644 --- a/base/applications/calc/lang/ro-RO.rc +++ b/base/applications/calc/lang/ro-RO.rc @@ -331,8 +331,8 @@ BEGIN END POPUP "&Afișare" BEGIN - MENUITEM "Mod st&andard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Mod st&andard", IDM_VIEW_STANDARD + MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC MENUITEM "Con&versie", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "&Hexazecimal\tF5", IDM_VIEW_HEX, CHECKED @@ -363,8 +363,8 @@ BEGIN END POPUP "&Afișare" BEGIN - MENUITEM "Mod st&andard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Mod st&andard", IDM_VIEW_STANDARD + MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC MENUITEM "Con&versie", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "&Hexazecimal\tF5", IDM_VIEW_HEX, CHECKED @@ -396,8 +396,8 @@ BEGIN END POPUP "&Afișare" BEGIN - MENUITEM "Mod st&andard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Mod st&andard", IDM_VIEW_STANDARD + MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC MENUITEM "Con&versie", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Grupează &cifre", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/ru-RU.rc b/base/applications/calc/lang/ru-RU.rc index 59ca8fc95a1..59ee1175bb8 100644 --- a/base/applications/calc/lang/ru-RU.rc +++ b/base/applications/calc/lang/ru-RU.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "Вид" BEGIN - MENUITEM "Обычный", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Научный", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Обычный", IDM_VIEW_STANDARD + MENUITEM "Научный", IDM_VIEW_SCIENTIFIC MENUITEM "Преобразование", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "Вид" BEGIN - MENUITEM "Обычный", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Научный", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Обычный", IDM_VIEW_STANDARD + MENUITEM "Научный", IDM_VIEW_SCIENTIFIC MENUITEM "Преобразование", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "Вид" BEGIN - MENUITEM "Обычный", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Научный", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Обычный", IDM_VIEW_STANDARD + MENUITEM "Научный", IDM_VIEW_SCIENTIFIC MENUITEM "Преобразование", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Количество цифр в группе", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/sk-SK.rc b/base/applications/calc/lang/sk-SK.rc index c0fef783f69..0a6d8ea7a40 100644 --- a/base/applications/calc/lang/sk-SK.rc +++ b/base/applications/calc/lang/sk-SK.rc @@ -337,8 +337,8 @@ BEGIN END POPUP "Zobraziť" BEGIN - MENUITEM "Štandardná", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Štandardná", IDM_VIEW_STANDARD + MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC MENUITEM "Prevody", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Šestnástková\tF5", IDM_VIEW_HEX, CHECKED @@ -369,8 +369,8 @@ BEGIN END POPUP "Zobraziť" BEGIN - MENUITEM "Štandardná", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Štandardná", IDM_VIEW_STANDARD + MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC MENUITEM "Prevody", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Šestnástková\tF5", IDM_VIEW_HEX, CHECKED @@ -402,8 +402,8 @@ BEGIN END POPUP "Zobraziť" BEGIN - MENUITEM "Štandardná", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Štandardná", IDM_VIEW_STANDARD + MENUITEM "Vedecká", IDM_VIEW_SCIENTIFIC MENUITEM "Prevody", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Zoskupovať číslice", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/sq-AL.rc b/base/applications/calc/lang/sq-AL.rc index 73cf0403815..64cc8d3c924 100644 --- a/base/applications/calc/lang/sq-AL.rc +++ b/base/applications/calc/lang/sq-AL.rc @@ -334,8 +334,8 @@ BEGIN END POPUP "Modifko" BEGIN - MENUITEM "Standart", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standart", IDM_VIEW_STANDARD + MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC MENUITEM "Konvertim", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -366,8 +366,8 @@ BEGIN END POPUP "Vëzhgo" BEGIN - MENUITEM "Standart", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standart", IDM_VIEW_STANDARD + MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC MENUITEM "Konverto", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED @@ -399,8 +399,8 @@ BEGIN END POPUP "Vëzhgo" BEGIN - MENUITEM "Standar", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standar", IDM_VIEW_STANDARD + MENUITEM "Shkencor", IDM_VIEW_SCIENTIFIC MENUITEM "Konverto", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Grupim numeror", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/sv-SE.rc b/base/applications/calc/lang/sv-SE.rc index e91e2e593d9..ac52639b3ff 100644 --- a/base/applications/calc/lang/sv-SE.rc +++ b/base/applications/calc/lang/sv-SE.rc @@ -337,8 +337,8 @@ BEGIN END POPUP "Visa" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC MENUITEM "Konvertering", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED @@ -369,8 +369,8 @@ BEGIN END POPUP "Vis" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Vetenskaplig", IDM_VIEW_SCIENTIFIC MENUITEM "Konvertering", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Hexadecimal\tF5", IDM_VIEW_HEX, CHECKED @@ -402,8 +402,8 @@ BEGIN END POPUP "Visa" BEGIN - MENUITEM "Standard", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Vetenskapelig", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Standard", IDM_VIEW_STANDARD + MENUITEM "Vetenskapelig", IDM_VIEW_SCIENTIFIC MENUITEM "Konvertering", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Siffergruppering", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/th-TH.rc b/base/applications/calc/lang/th-TH.rc index 3f7912a052c..a2457d61500 100644 --- a/base/applications/calc/lang/th-TH.rc +++ b/base/applications/calc/lang/th-TH.rc @@ -330,8 +330,8 @@ BEGIN END POPUP "&มุมมอง" BEGIN - MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD, CHECKED - MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD + MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC MENUITEM "ความเปลี่ยนแปลง", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "ฐานสิบหก\tF5", IDM_VIEW_HEX, CHECKED @@ -362,8 +362,8 @@ BEGIN END POPUP "&มุมมอง" BEGIN - MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD, CHECKED - MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD + MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC MENUITEM "ความเปลี่ยนแปลง", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "ฐานสิบหก\tF5", IDM_VIEW_HEX, CHECKED @@ -395,8 +395,8 @@ BEGIN END POPUP "&มุมมอง" BEGIN - MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD, CHECKED - MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "แบบมาตรฐาน", IDM_VIEW_STANDARD + MENUITEM "แบบวิทยาศาสตร์", IDM_VIEW_SCIENTIFIC MENUITEM "ความเปลี่ยนแปลง", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "แสดงหลักตัวเลข", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/tr-TR.rc b/base/applications/calc/lang/tr-TR.rc index 090a4e4b8e6..358ef9dc6ea 100644 --- a/base/applications/calc/lang/tr-TR.rc +++ b/base/applications/calc/lang/tr-TR.rc @@ -332,8 +332,8 @@ BEGIN END POPUP "&Görünüm" BEGIN - MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD, CHECKED - MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD + MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC MENUITEM "&Dönüştürme", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "&Onaltılık\tF5", IDM_VIEW_HEX, CHECKED @@ -364,8 +364,8 @@ BEGIN END POPUP "&Görünüm" BEGIN - MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD, CHECKED - MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD + MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC MENUITEM "&Dönüştürme", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "&Onaltılık\tF5", IDM_VIEW_HEX, CHECKED @@ -397,8 +397,8 @@ BEGIN END POPUP "&Görünüm" BEGIN - MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD, CHECKED - MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "&Ölçünlü", IDM_VIEW_STANDARD + MENUITEM "&Bilimlik", IDM_VIEW_SCIENTIFIC MENUITEM "&Dönüştürme", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "B&asamakları Takımla", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/uk-UA.rc b/base/applications/calc/lang/uk-UA.rc index 2b8a2b7c241..5eaaad20846 100644 --- a/base/applications/calc/lang/uk-UA.rc +++ b/base/applications/calc/lang/uk-UA.rc @@ -338,8 +338,8 @@ BEGIN END POPUP "Вигляд" BEGIN - MENUITEM "Звичайний", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Звичайний", IDM_VIEW_STANDARD + MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC MENUITEM "Перетворення", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Шістнадцятковий\tF5", IDM_VIEW_HEX, CHECKED @@ -370,8 +370,8 @@ BEGIN END POPUP "Вигляд" BEGIN - MENUITEM "Звичайний", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Звичайний", IDM_VIEW_STANDARD + MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC MENUITEM "Перетворення", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Шістнадцятковий\tF5", IDM_VIEW_HEX, CHECKED @@ -403,8 +403,8 @@ BEGIN END POPUP "Вигляд" BEGIN - MENUITEM "Звичайний", IDM_VIEW_STANDARD, CHECKED - MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "Звичайний", IDM_VIEW_STANDARD + MENUITEM "Науковий", IDM_VIEW_SCIENTIFIC MENUITEM "Перетворення", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "Кількість цифр у групі", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/lang/zh-CN.rc b/base/applications/calc/lang/zh-CN.rc index 4913c86dc8e..17e7b3fc930 100644 --- a/base/applications/calc/lang/zh-CN.rc +++ b/base/applications/calc/lang/zh-CN.rc @@ -332,8 +332,8 @@ BEGIN END POPUP "查看" BEGIN - MENUITEM "标准型", IDM_VIEW_STANDARD, CHECKED - MENUITEM "科学型", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "标准型", IDM_VIEW_STANDARD + MENUITEM "科学型", IDM_VIEW_SCIENTIFIC MENUITEM "转换", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "十六进制\tF5", IDM_VIEW_HEX, CHECKED @@ -364,8 +364,8 @@ BEGIN END POPUP "查看" BEGIN - MENUITEM "标准型", IDM_VIEW_STANDARD, CHECKED - MENUITEM "科学型", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "标准型", IDM_VIEW_STANDARD + MENUITEM "科学型", IDM_VIEW_SCIENTIFIC MENUITEM "转换", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "十六进制\tF5", IDM_VIEW_HEX, CHECKED @@ -397,8 +397,8 @@ BEGIN END POPUP "查看" BEGIN - MENUITEM "标准型", IDM_VIEW_STANDARD, CHECKED - MENUITEM "科学型", IDM_VIEW_SCIENTIFIC, CHECKED + MENUITEM "标准型", IDM_VIEW_STANDARD + MENUITEM "科学型", IDM_VIEW_SCIENTIFIC MENUITEM "转换", IDM_VIEW_CONVERSION MENUITEM SEPARATOR MENUITEM "数字分组", IDM_VIEW_GROUP, CHECKED diff --git a/base/applications/calc/winmain.c b/base/applications/calc/winmain.c index 589a453a6ae..ca72f2ace2c 100644 --- a/base/applications/calc/winmain.c +++ b/base/applications/calc/winmain.c @@ -225,38 +225,40 @@ calc_t calc; static void load_config(void) { - TCHAR buf[32]; DWORD tmp; -#if _WIN32_WINNT >= 0x0500 HKEY hKey; -#endif + + /* If no settings are found in the registry, then use the default options */ + calc.layout = CALC_LAYOUT_STANDARD; + calc.usesep = FALSE; - /* Try to load last selected layout */ - GetProfileString(TEXT("SciCalc"), TEXT("layout"), TEXT("0"), buf, SIZEOF(buf)); - if (_stscanf(buf, TEXT("%lu"), &calc.layout) != 1) - calc.layout = CALC_LAYOUT_STANDARD; + /* Get the configuration based on what version of Windows that's being used */ + if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Calc"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) + { + /* Try to load last selected layout */ + tmp = sizeof(calc.layout); + if (RegQueryValueEx(hKey, TEXT("layout"), NULL, NULL, (LPBYTE)&calc.layout, &tmp) != ERROR_SUCCESS) + calc.layout = CALC_LAYOUT_STANDARD; - /* Try to load last selected formatting option */ - GetProfileString(TEXT("SciCalc"), TEXT("UseSep"), TEXT("0"), buf, SIZEOF(buf)); - if (_stscanf(buf, TEXT("%lu"), &tmp) != 1) - calc.usesep = FALSE; - else - calc.usesep = (tmp == 1) ? TRUE : FALSE; + /* Try to load last selected formatting option */ + tmp = sizeof(calc.usesep); + if (RegQueryValueEx(hKey, TEXT("UseSep"), NULL, NULL, (LPBYTE)&calc.usesep, &tmp) != ERROR_SUCCESS) + calc.usesep = FALSE; + + /* close the key */ + RegCloseKey(hKey); + } /* memory is empty at startup */ calc.is_memory = FALSE; -#if _WIN32_WINNT >= 0x0500 /* empty these values */ calc.sDecimal[0] = TEXT('\0'); calc.sThousand[0] = TEXT('\0'); /* try to open the registry */ - if (RegOpenKeyEx(HKEY_CURRENT_USER, - TEXT("Control Panel\\International"), - 0, - KEY_QUERY_VALUE, - &hKey) == ERROR_SUCCESS) { + if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\International"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) + { /* get these values (ignore errors) */ tmp = sizeof(calc.sDecimal); RegQueryValueEx(hKey, TEXT("sDecimal"), NULL, NULL, (LPBYTE)calc.sDecimal, &tmp); @@ -277,20 +279,24 @@ static void load_config(void) /* get the string lengths */ calc.sDecimal_len = _tcslen(calc.sDecimal); calc.sThousand_len = _tcslen(calc.sThousand); -#else - /* acquire regional settings */ - calc.sDecimal_len = GetProfileString(TEXT("intl"), TEXT("sDecimal"), TEXT("."), calc.sDecimal, SIZEOF(calc.sDecimal)); - calc.sThousand_len = GetProfileString(TEXT("intl"), TEXT("sThousand"), TEXT(","), calc.sThousand, SIZEOF(calc.sThousand)); -#endif } static void save_config(void) { - TCHAR buf[32]; + HKEY hKey; + DWORD sepValue; - _stprintf(buf, TEXT("%lu"), calc.layout); - WriteProfileString(TEXT("SciCalc"), TEXT("layout"), buf); - WriteProfileString(TEXT("SciCalc"), TEXT("UseSep"), (calc.usesep==TRUE) ? TEXT("1") : TEXT("0")); + if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Calc"), 0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS ) + { + return; + } + + sepValue = (calc.usesep) ? 1 : 0; + + RegSetValueEx(hKey, TEXT("layout"), 0, REG_DWORD, (const BYTE*)&calc.layout, sizeof(calc.layout)); + RegSetValueEx(hKey, TEXT("UseSep"), 0, REG_DWORD, (const BYTE*)&sepValue, sizeof(sepValue)); + + RegCloseKey(hKey); } static LRESULT post_key_press(LPARAM lParam, WORD idc) @@ -657,7 +663,33 @@ static void update_menu(HWND hwnd) HMENU hMenu = GetSubMenu(GetMenu(hwnd), 1); unsigned int x; - for (x=0; x #include #include #include #include +#include #define STRBUF 1024 /* getline: read a line, return length */ -INT GetLine(char *line, FILE *in) +INT GetBuff(char *buff, FILE *in) { - if (fgets(line, STRBUF, in) == NULL) - return 0; - else - return strlen(line); + return fread(buff, 1, STRBUF, in); } -/* print program usage */ +INT FileSize(FILE * fd) +{ + INT result = -1; + if (fseek(fd, 0, SEEK_END) == 0 && (result = ftell(fd)) != -1) + { + /* Restoring file pointer */ + rewind(fd); + } + return result; +} + +/* Print program usage */ VOID Usage(VOID) { _tprintf(_T("\nCompares the contents of two files or sets of files.\n\n" - "COMP [data1] [data2]\n\n" + "COMP [/L] [/A] [data1] [data2]\n\n" " data1 Specifies location and name of first file to compare.\n" - " data2 Specifies location and name of second file to compare.\n")); + " data2 Specifies location and name of second file to compare.\n" + " /A Display differences in ASCII characters.\n" + " /L Display line numbers for differences.\n")); } int _tmain (int argc, TCHAR *argv[]) { INT i; - FILE *fp1, *fp2; // file pointers - PTCHAR Line1 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR)); - PTCHAR Line2 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR)); - TCHAR File1[_MAX_PATH], // file paths - File2[_MAX_PATH]; - BOOL bMatch = TRUE, // files match - bAscii = FALSE, // /A switch - bLineNos = FALSE; // /L switch - /* parse command line for options */ + /* File pointers */ + FILE *fp1 = NULL; + FILE *fp2 = NULL; + + INT BufLen1, BufLen2; + PTCHAR Buff1 = NULL; + PTCHAR Buff2 = NULL; + TCHAR File1[_MAX_PATH + 1], // File paths + File2[_MAX_PATH + 1]; + BOOL bAscii = FALSE, // /A switch + bLineNos = FALSE; // /L switch + UINT LineNumber; + UINT Offset; + INT FileSizeFile1; + INT FileSizeFile2; + INT NumberOfOptions = 0; + INT FilesOK = 1; + INT Status = EXIT_SUCCESS; + + /* Parse command line for options */ for (i = 1; i < argc; i++) { if (argv[i][0] == '/') { - --argc; - switch (argv[i][1]) { - case 'A': bAscii = TRUE; - _tprintf(_T("/a not Supported\n")); (void)bAscii; /*FIXME: needs adding */ - break; - case 'L': bLineNos = TRUE; - _tprintf(_T("/l not supported\n")); (void)bLineNos; /*FIXME: needs adding */ - break; - case '?': Usage(); - return EXIT_SUCCESS; - default: - _tprintf(_T("Invalid switch - /%c\n"), argv[i][1]); - Usage(); - return EXIT_FAILURE; + switch (argv[i][1]) + { + case 'A': + bAscii = TRUE; + NumberOfOptions++; + break; + + case 'L': + bLineNos = TRUE; + NumberOfOptions++; + break; + + case '?': + Usage(); + return EXIT_SUCCESS; + + default: + _tprintf(_T("Invalid switch - /%c\n"), argv[i][1]); + Usage(); + return EXIT_FAILURE; } } } - switch (argc) + if (argc - NumberOfOptions == 3) { - case 1 : - _tprintf(_T("Name of first file to compare: ")); - fgets(File1, _MAX_PATH, stdin); - for (i=0; i<_MAX_PATH; i++) - { - if (File1[i] == '\n') - { - File1[i] = '\0'; - break; - } - } - - _tprintf(_T("Name of second file to compare: ")); - fgets(File2, _MAX_PATH, stdin); - for (i=0; i<_MAX_PATH; i++) - { - if (File2[i] == '\n') - { - File2[i] = '\0'; - break; - } - } - break; - case 2 : - _tcsncpy(File1, argv[1], _MAX_PATH); - _tprintf(_T("Name of second file to compare: ")); - fgets(File2, _MAX_PATH, stdin); - for (i=0; i<_MAX_PATH; i++) - { - if (File2[i] == '\n') - { - File2[i] = '\0'; - break; - } - } - break; - case 3 : - _tcsncpy(File1, argv[1], _MAX_PATH); - _tcsncpy(File2, argv[2], _MAX_PATH); - break; - default : - _tprintf(_T("Bad command line syntax\n")); - return EXIT_FAILURE; - break; + _tcsncpy(File1, argv[1 + NumberOfOptions], _MAX_PATH); + _tcsncpy(File2, argv[2 + NumberOfOptions], _MAX_PATH); + } + else + { + _tprintf(_T("Bad command line syntax\n")); + return EXIT_FAILURE; } + Buff1 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR)); + if (Buff1 == NULL) + { + _tprintf(_T("Can't get free memory for Buff1\n")); + return EXIT_FAILURE; + } + Buff2 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR)); + if (Buff2 == NULL) + { + _tprintf(_T("Can't get free memory for Buff2\n")); + Status = EXIT_FAILURE; + goto Cleanup; + } - if ((fp1 = fopen(File1, "r")) == NULL) + if ((fp1 = fopen(File1, "rb")) == NULL) { _tprintf(_T("Can't find/open file: %s\n"), File1); - return EXIT_FAILURE; + Status = EXIT_FAILURE; + goto Cleanup; } - if ((fp2 = fopen(File2, "r")) == NULL) + if ((fp2 = fopen(File2, "rb")) == NULL) { _tprintf(_T("Can't find/open file: %s\n"), File2); - fclose(fp1); - return EXIT_FAILURE; + Status = EXIT_FAILURE; + goto Cleanup; } _tprintf(_T("Comparing %s and %s...\n"), File1, File2); - while ((GetLine(Line1, fp1) != 0) && - (GetLine(Line2, fp2) != 0)) + FileSizeFile1 = FileSize(fp1); + if (FileSizeFile1 == -1) { - // LineCount++; - while ((*Line1 != '\0') && (*Line2 != '\0')) - { - if (*Line1 != *Line2) - { - bMatch = FALSE; - break; - } - Line1++, Line2++; - } + _tprintf(_T("Can't determine size of file: %s\n"), File1); + Status = EXIT_FAILURE; + goto Cleanup; } - bMatch ? _tprintf(_T("Files compare OK\n")) : _tprintf(_T("Files are different sizes.\n")); + FileSizeFile2 = FileSize(fp2); + if (FileSizeFile2 == -1) + { + _tprintf(_T("Can't determine size of file: %s\n"), File2); + Status = EXIT_FAILURE; + goto Cleanup; + } - fclose(fp1); - fclose(fp2); + if (FileSizeFile1 != FileSizeFile2) + { + _tprintf(_T("Files are different sizes.\n")); + Status = EXIT_FAILURE; + goto Cleanup; + } + LineNumber = 1; + Offset = 0; + while (1) + { + BufLen1 = GetBuff(Buff1, fp1); + BufLen2 = GetBuff(Buff2, fp2); - return EXIT_SUCCESS; + if (ferror(fp1) || ferror(fp2)) + { + _tprintf(_T("Files read error.\n")); + Status = EXIT_FAILURE; + goto Cleanup; + } + + if (!BufLen1 && !BufLen2) + break; + + assert(BufLen1 == BufLen2); + for (i = 0; i < BufLen1; i++) + { + if (Buff1[i] != Buff2[i]) + { + FilesOK = 0; + + /* Reporting here a mismatch */ + if (bLineNos) + { + _tprintf(_T("Compare error at LINE %d\n"), LineNumber); + } + else + { + _tprintf(_T("Compare error at OFFSET %d\n"), Offset); + } + + if (bAscii) + { + _tprintf(_T("file1 = %c\n"), Buff1[i]); + _tprintf(_T("file2 = %c\n"), Buff2[i]); + } + else + { + _tprintf(_T("file1 = %X\n"), Buff1[i]); + _tprintf(_T("file2 = %X\n"), Buff2[i]); + } + + Offset++; + + if (Buff1[i] == '\n') + LineNumber++; + } + } + } + + if (FilesOK) + _tprintf(_T("Files compare OK\n")); + +Cleanup: + if (fp1) + fclose(fp1); + if (fp2) + fclose(fp2); + + if (Buff1) + free(Buff1); + if (Buff2) + free(Buff2); + + return Status; } + /* EOF */ diff --git a/base/applications/cmdutils/tree/CMakeLists.txt b/base/applications/cmdutils/tree/CMakeLists.txt new file mode 100644 index 00000000000..ada59fe1d0a --- /dev/null +++ b/base/applications/cmdutils/tree/CMakeLists.txt @@ -0,0 +1,6 @@ + +add_executable(tree tree.c tree.rc) +set_module_type(tree win32cui UNICODE) +set_target_properties(tree PROPERTIES SUFFIX ".com") +add_importlibs(tree msvcrt kernel32 user32) +add_cd_file(TARGET tree DESTINATION reactos/system32 FOR all) diff --git a/base/applications/cmdutils/tree/lang/de-DE.rc b/base/applications/cmdutils/tree/lang/de-DE.rc new file mode 100644 index 00000000000..7da7c493148 --- /dev/null +++ b/base/applications/cmdutils/tree/lang/de-DE.rc @@ -0,0 +1,12 @@ +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +STRINGTABLE +BEGIN + IDS_USAGE "Zeigt die Ordnerstruktur eines Laufwerks oder Pfads grafisch an.\n\n\ +TREE [Laufwerk:][Pfad] [/F] [/A]\n\n\ +\t/F Zeigt die Namen der Dateien in jedem Ordner an.\n\ +\t/A Verwendet den ASCII- statt des erweiterten Zeichensatzes.\n" + IDS_NO_SUBDIRECTORIES "Es sind keine Unterordner vorhanden" + IDS_FOLDER_PATH "Auflistung der Ordnerpfade\n" + IDS_VOL_SERIAL "Volumeseriennummer : %x:%x\n" +END diff --git a/base/applications/cmdutils/tree/lang/en-US.rc b/base/applications/cmdutils/tree/lang/en-US.rc new file mode 100644 index 00000000000..1e00abf1122 --- /dev/null +++ b/base/applications/cmdutils/tree/lang/en-US.rc @@ -0,0 +1,12 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE +BEGIN + IDS_USAGE "Visually displays the folder structure of a drive or path.\n\n\ +TREE [drive:][path] [/F] [/A]\n\n\ +\t/F Display the names of the files in each folder.\n\ +\t/A Use ASCII instead of extended characters.\n" + IDS_NO_SUBDIRECTORIES "No subdirectories exist" + IDS_FOLDER_PATH "Folder PATH Listing\n" + IDS_VOL_SERIAL "Volume serial number is %x:%x\n" +END diff --git a/base/applications/cmdutils/tree/resource.h b/base/applications/cmdutils/tree/resource.h new file mode 100644 index 00000000000..59827cba4f1 --- /dev/null +++ b/base/applications/cmdutils/tree/resource.h @@ -0,0 +1,9 @@ +#ifndef RESOURCE_H +#define RESOURCE_H + +#define IDS_USAGE 0 +#define IDS_NO_SUBDIRECTORIES 1 +#define IDS_FOLDER_PATH 2 +#define IDS_VOL_SERIAL 3 + +#endif /* RESOURCE_H */ \ No newline at end of file diff --git a/base/applications/cmdutils/tree/tree.c b/base/applications/cmdutils/tree/tree.c new file mode 100644 index 00000000000..69d4055c77d --- /dev/null +++ b/base/applications/cmdutils/tree/tree.c @@ -0,0 +1,374 @@ +/* + * PROJECT: ReactOS + * LICENSE: GNU GPLv2 only as published by the Free Software Foundation + * PURPOSE: Implements tree.com functionality similar to Windows + * PROGRAMMERS: Asif Bahrainwala (asif_bahrainwala@hotmail.com) + */ + +// Tree.cpp : Defines the entry point for the console application. +// +#include +#include +//#include + +#include "resource.h" + +#define STR_MAX 2048 + +static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, const size_t szArr, UINT width, const wchar_t *prevLine, BOOL drawfolder); +static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine); + +BOOL bShowFiles = FALSE; //if this flag is set to true, files will also be listed +BOOL bUseAscii = FALSE; //if this flag is true, ASCII characters will be used instead of UNICODE ones + +/* + * This takes strings from a resource string table + * and outputs it to the console. + */ +VOID PrintResourceString(INT resID, ...) +{ + WCHAR tmpBuffer[STR_MAX]; + va_list arg_ptr; + + va_start(arg_ptr, resID); + LoadStringW(GetModuleHandle(NULL), resID, tmpBuffer, STR_MAX); + vfwprintf(stdout, tmpBuffer, arg_ptr); + va_end(arg_ptr); +} + +/** +* @name: HasSubFolder +* +* @param strPath +* Must specify folder name +* +* @return +* true if folder has sub folders, else will return false +*/ +static BOOL HasSubFolder(const wchar_t *strPath1) +{ + BOOL ret = FALSE; + WIN32_FIND_DATA FindFileData; + HANDLE hFind = NULL; + static wchar_t strPath[STR_MAX]= L""; + ZeroMemory(strPath, sizeof(strPath)); + + wcscat(strPath,strPath1); + wcscat(strPath,L"\\*."); + + hFind=FindFirstFile(strPath, &FindFileData); + do + { + if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + if(wcscmp(FindFileData.cFileName, L".")==0 || + wcscmp(FindFileData.cFileName, L"..")==0 ) + { + continue; + } + + ret=TRUE; //found subfolder + break; + } + } + while(FindNextFile(hFind, &FindFileData)); + + FindClose(hFind); + return ret; +} + +/** + * @name: DrawTree + * + * @param strPath + * Must specify folder name + * + * @param arrFolder + * must be a list of folder names to be drawn in tree format + * + * @param width + * specifies drawing distance for correct formatting of tree structure being drawn on console screen + * used internally for adding spaces + * + * @param prevLine + * used internally for formatting reasons + * + * @return + * void + */ +static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, const size_t szArr, UINT width, const wchar_t *prevLine, BOOL drawfolder) +{ + BOOL bHasSubFolder = HasSubFolder(strPath); + UINT i = 0; + + //this will format the spaces required for correct formatting + for(i = 0; i < szArr; ++i) + { + wchar_t *consoleOut = (wchar_t*)malloc(sizeof(wchar_t) * STR_MAX); + UINT j=0; + static wchar_t str[STR_MAX]; + + // As we do not seem to have the _s functions properly set up, use the non-secure version for now + //wcscpy_s(consoleOut, STR_MAX, L""); + //wcscpy_s(str, STR_MAX, L""); + wcscpy(consoleOut, L""); + wcscpy(str, L""); + + for(j=0;j> 16, dwSerial & 0xffff); + + sz = GetCurrentDirectory(1, &t); //get the buffer size + strPath = (wchar_t*)malloc(sizeof(wchar_t) * sz); //must not return before calling delete[] + + GetCurrentDirectory(sz, strPath); //get the current directory + + + driveLetter = (wchar_t*)malloc(sizeof(wchar_t) * sz); //get the drive letter , must not return before calling delete[] + + // As we do not seem to have the _s functions properly set up, use the non-secure version for now + //wcscpy_s(driveLetter,sz,strPath); + //wcstok_s(driveLetter,L":", &context); //parse for the drive letter + wcscpy(driveLetter,strPath); + wcstok(driveLetter, L":"); + + wprintf(L"%s:.\n",driveLetter); + + free(driveLetter); + + GetDirectoryStructure(strPath, 1, L" "); //get the sub directories within this current folder + + free(strPath); + wprintf(L"\n"); + + return 0; +} diff --git a/base/applications/cmdutils/tree/tree.rc b/base/applications/cmdutils/tree/tree.rc new file mode 100644 index 00000000000..0dddf0f9a7d --- /dev/null +++ b/base/applications/cmdutils/tree/tree.rc @@ -0,0 +1,20 @@ +#include +#include + +#include "resource.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Tree Walk Utility" +#define REACTOS_STR_INTERNAL_NAME "tree" +#define REACTOS_STR_ORIGINAL_FILENAME "tree.exe" +#include + +/* UTF-8 */ +#pragma code_page(65001) +#ifdef LANGUAGE_DE_DE + #include "lang/de-DE.rc" +#endif +#ifdef LANGUAGE_EN_US + #include "lang/en-US.rc" +#endif diff --git a/base/applications/mscutils/eventvwr/eventvwr.c b/base/applications/mscutils/eventvwr/eventvwr.c index ab5709fca75..22c4671895b 100644 --- a/base/applications/mscutils/eventvwr/eventvwr.c +++ b/base/applications/mscutils/eventvwr/eventvwr.c @@ -116,7 +116,7 @@ wWinMain(HINSTANCE hInstance, return FALSE; } - hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_EVENTVWR)); + hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_EVENTVWR)); /* Main message loop: */ while (GetMessageW(&msg, NULL, 0, 0)) @@ -575,13 +575,13 @@ QueryEventMessages(LPWSTR lpMachineName, if (dwTotalRecords > 0) { - EnableMenuItem(hMainMenu, ID_CLEAR_EVENTS, MF_BYCOMMAND | MF_ENABLED); - EnableMenuItem(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hMainMenu, IDM_CLEAR_EVENTS, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hMainMenu, IDM_SAVE_PROTOCOL, MF_BYCOMMAND | MF_ENABLED); } else { - EnableMenuItem(hMainMenu, ID_CLEAR_EVENTS, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMainMenu, IDM_CLEAR_EVENTS, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMainMenu, IDM_SAVE_PROTOCOL, MF_BYCOMMAND | MF_GRAYED); } g_RecordPtrs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwTotalRecords * sizeof(PVOID)); @@ -646,7 +646,7 @@ QueryEventMessages(LPWSTR lpMachineName, GetEventUserName(pevlr, szUsername); GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time, NULL, szLocalDate, MAX_PATH); - GetTimeFormatW(LOCALE_USER_DEFAULT, TIME_NOSECONDS, &time, NULL, szLocalTime, MAX_PATH); + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &time, NULL, szLocalTime, MAX_PATH); GetEventType(pevlr->EventType, szEventTypeText); GetEventCategory(lpLogName, lpSourceName, pevlr, szCategory); @@ -851,7 +851,6 @@ MyRegisterClass(HINSTANCE hInstance) WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); - wcex.style = 0; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; @@ -860,9 +859,14 @@ MyRegisterClass(HINSTANCE hInstance) wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_EVENTVWR)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_EVENTVWR); + wcex.lpszMenuName = MAKEINTRESOURCE(IDM_EVENTVWR); wcex.lpszClassName = szWindowClass; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); + wcex.hIconSm = (HICON)LoadImage(hInstance, + MAKEINTRESOURCE(IDI_EVENTVWR), + IMAGE_ICON, + 16, + 16, + LR_SHARED); return RegisterClassExW(&wcex); } @@ -1002,11 +1006,11 @@ BuildLogList(void) if (lpDisplayName) { - InsertMenuW(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_STRING, ID_FIRST_LOG + dwIndex, lpDisplayName); + InsertMenuW(hMainMenu, IDM_SAVE_PROTOCOL, MF_BYCOMMAND | MF_STRING, ID_FIRST_LOG + dwIndex, lpDisplayName); } else { - InsertMenuW(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_STRING, ID_FIRST_LOG + dwIndex, LogNames[dwIndex]); + InsertMenuW(hMainMenu, IDM_SAVE_PROTOCOL, MF_BYCOMMAND | MF_STRING, ID_FIRST_LOG + dwIndex, LogNames[dwIndex]); } LocalFree(lpDisplayName); @@ -1014,7 +1018,7 @@ BuildLogList(void) } } - InsertMenuW(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_SEPARATOR, ID_FIRST_LOG + dwIndex + 1, NULL); + InsertMenuW(hMainMenu, IDM_SAVE_PROTOCOL, MF_BYCOMMAND | MF_SEPARATOR, ID_FIRST_LOG + dwIndex + 1, NULL); RegCloseKey(hKey); @@ -1244,7 +1248,7 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) if (lpnmitem->iItem != -1) { DialogBox(hInst, - MAKEINTRESOURCE(IDD_EVENTDETAILDIALOG), + MAKEINTRESOURCE(IDD_EVENTPROPERTIES), hWnd, EventDetails); } @@ -1270,11 +1274,11 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) switch (LOWORD(wParam)) { - case ID_SAVE_PROTOCOL: + case IDM_SAVE_PROTOCOL: SaveProtocol(); break; - case ID_CLEAR_EVENTS: + case IDM_CLEAR_EVENTS: if (ClearEvents()) { Refresh(); @@ -1306,22 +1310,21 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) break; case WM_SIZE: - { - // Gets the window rectangle - GetClientRect(hWnd, &rect); + // Gets the window rectangle + GetClientRect(hWnd, &rect); - // Relocate the listview - MoveWindow(hwndListView, - 0, - 0, - rect.right, - rect.bottom - 20, - 1); + // Relocate the listview + MoveWindow(hwndListView, + 0, + 0, + rect.right, + rect.bottom - 20, + 1); - // Resize the statusbar; - SendMessage(hwndStatus, message, wParam, lParam); - } + // Resize the statusbar; + SendMessage(hwndStatus, message, wParam, lParam); break; + case WM_DESTROY: FreeRecords(); FreeLogList(); @@ -1438,6 +1441,56 @@ DisplayEvent(HWND hDlg) } } +VOID +CopyEventEntry(HWND hWnd) +{ + const SIZE_T entrySize = 2056; + WCHAR output[4130], tmpHeader[512]; + WCHAR szEventType[MAX_PATH]; + WCHAR szSource[MAX_PATH]; + WCHAR szCategory[MAX_PATH]; + WCHAR szEventID[MAX_PATH]; + WCHAR szDate[MAX_PATH]; + WCHAR szTime[MAX_PATH]; + WCHAR szUser[MAX_PATH]; + WCHAR szComputer[MAX_PATH]; + WCHAR evtDesc[entrySize]; + HGLOBAL hMem; + + if (!OpenClipboard(hWnd)) + return; + + /* First, empty the clipboard before we begin to use it */ + EmptyClipboard(); + + /* Get the formatted text needed to place the content into */ + LoadStringW(hInst, IDS_COPY, tmpHeader, sizeof(tmpHeader) / sizeof(WCHAR)); + + /* Grabs all the information and get it ready for the clipboard */ + GetDlgItemText(hWnd, IDC_EVENTTYPESTATIC, szEventType, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTSOURCESTATIC, szSource, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTCATEGORYSTATIC, szCategory, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTIDSTATIC, szEventID, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTDATESTATIC, szDate, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTTIMESTATIC, szTime, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTUSERSTATIC, szUser, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTCOMPUTERSTATIC, szComputer, MAX_PATH); + GetDlgItemText(hWnd, IDC_EVENTTEXTEDIT, evtDesc, entrySize); + + /* Consolidate the information into on big piece */ + wsprintfW(output, tmpHeader, szEventType, szSource, szCategory, szEventID, szDate, szTime, szUser, szComputer, evtDesc); + + /* Sort out the memory needed to write to the clipboard */ + hMem = GlobalAlloc(GMEM_MOVEABLE, entrySize); + memcpy(GlobalLock(hMem), output, entrySize); + GlobalUnlock(hMem); + + /* Write the final content to the clipboard */ + SetClipboardData(CF_UNICODETEXT, hMem); + + /* Close the clipboard once we're done with it */ + CloseClipboard(); +} static INT_PTR CALLBACK @@ -1458,6 +1511,18 @@ StatusMessageWindowProc(IN HWND hwndDlg, return FALSE; } +static +VOID +InitDetailsDlg(HWND hDlg) +{ + HANDLE nextIcon = LoadImage(hInst, MAKEINTRESOURCE(IDI_NEXT), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); + HANDLE prevIcon = LoadImage(hInst, MAKEINTRESOURCE(IDI_PREV), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); + HANDLE copyIcon = LoadImage(hInst, MAKEINTRESOURCE(IDI_COPY), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); + + SendMessage(GetDlgItem(hDlg, IDC_NEXT), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)nextIcon); + SendMessage(GetDlgItem(hDlg, IDC_PREVIOUS), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)prevIcon); + SendMessage(GetDlgItem(hDlg, IDC_COPY), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)copyIcon); +} // Message handler for event details box. INT_PTR CALLBACK @@ -1468,6 +1533,8 @@ EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) switch (message) { case WM_INITDIALOG: + InitDetailsDlg(hDlg); + // Show event info on dialog box DisplayEvent(hDlg); return (INT_PTR)TRUE; @@ -1480,20 +1547,24 @@ EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; - case IDPREVIOUS: + case IDC_PREVIOUS: SendMessage(hwndListView, WM_KEYDOWN, VK_UP, 0); // Show event info on dialog box DisplayEvent(hDlg); return (INT_PTR)TRUE; - case IDNEXT: + case IDC_NEXT: SendMessage(hwndListView, WM_KEYDOWN, VK_DOWN, 0); // Show event info on dialog box DisplayEvent(hDlg); return (INT_PTR)TRUE; + case IDC_COPY: + CopyEventEntry(hDlg); + return (INT_PTR)TRUE; + case IDC_BYTESRADIO: return (INT_PTR)TRUE; diff --git a/base/applications/mscutils/eventvwr/eventvwr.rc b/base/applications/mscutils/eventvwr/eventvwr.rc index d2c9a69cac5..c0578f7317e 100644 --- a/base/applications/mscutils/eventvwr/eventvwr.rc +++ b/base/applications/mscutils/eventvwr/eventvwr.rc @@ -18,6 +18,11 @@ IDI_WARNINGICON ICON "res/warning.ico" IDI_INFORMATIONICON ICON "res/info.ico" IDI_ERRORICON ICON "res/error.ico" +/* Event Navigation */ +IDI_NEXT ICON "res/next_event.ico" +IDI_PREV ICON "res/prev_event.ico" +IDI_COPY ICON "res/copy.ico" + /* UTF-8 */ #pragma code_page(65001) diff --git a/base/applications/mscutils/eventvwr/lang/bg-BG.rc b/base/applications/mscutils/eventvwr/lang/bg-BG.rc index db30ca55b80..db034f8c5a9 100644 --- a/base/applications/mscutils/eventvwr/lang/bg-BG.rc +++ b/base/applications/mscutils/eventvwr/lang/bg-BG.rc @@ -1,12 +1,12 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Дневник" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "Из&ход", IDM_EXIT END @@ -14,7 +14,7 @@ BEGIN BEGIN MENUITEM "О&пресняване", IDM_REFRESH END - MENUITEM "На&стройки", ID_OPTIONS + MENUITEM "На&стройки", IDM_OPTIONS POPUP "Помо&щ" BEGIN MENUITEM "Помо&щ", IDM_HELP @@ -23,7 +23,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -48,38 +48,43 @@ BEGIN CTEXT "Зареждане на събитията. Почакайте...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Подробно за събитието" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Затваряне", IDOK, 12, 258, 50, 14 - PUSHBUTTON "На&зад", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "На&пред", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "Помо&щ", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Описание:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Дата:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 60, 14, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Време:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 60, 27, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Потребител:", IDC_STATIC, 14, 41, 50, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 60, 41, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Компютър:", IDC_STATIC, 14, 54, 40, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 60, 54, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Означител събитие:", IDC_STATIC, 105, 15, 71, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Източник:", IDC_STATIC, 105, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Вид:", IDC_STATIC, 105, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Раздел:", IDC_STATIC, 105, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 40, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "&Данни", IDC_STATIC, 14, 194, 25, 8 - CONTROL "&Байтове", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 40, 8 - CONTROL "&Думи", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 85, 194, 33, 8 + LTEXT "Дата:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Източник:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Време:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Раздел:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Вид:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Означител събитие:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Потребител:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Компютър:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Описание:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "&Данни:", IDC_STATIC, 8, 169, 25, 8 + CONTROL "&Байтове", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 40, 8 + CONTROL "&Думи", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 85, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "Помо&щ", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Затваряне", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -112,6 +117,19 @@ BEGIN IDS_COLUMNEVENTDATA "Данни за събитието" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/cs-CZ.rc b/base/applications/mscutils/eventvwr/lang/cs-CZ.rc index ef28104cc03..1267d9fde51 100644 --- a/base/applications/mscutils/eventvwr/lang/cs-CZ.rc +++ b/base/applications/mscutils/eventvwr/lang/cs-CZ.rc @@ -1,12 +1,12 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Protokol" BEGIN - MENUITEM "Uložit &Protokol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Uložit &Protokol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "&Odstranit události", ID_CLEAR_EVENTS, GRAYED + MENUITEM "&Odstranit události", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "&Konec", IDM_EXIT END @@ -14,7 +14,7 @@ BEGIN BEGIN MENUITEM "&Obnovit", IDM_REFRESH END - MENUITEM "&Možnosti", ID_OPTIONS + MENUITEM "&Možnosti", IDM_OPTIONS POPUP "&Nápověda" BEGIN MENUITEM "Ná&pověda", IDM_HELP @@ -23,7 +23,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -48,38 +48,43 @@ BEGIN CTEXT "Načítám protokol událostí. Prosím čekejte ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Podrobnosti události" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Zavřít", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Předchozí", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Další", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Nápověda", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Popis:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Datum:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Čas:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Uživatel:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "P&očítač:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ID události:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Zdroj:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Typ:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategorie:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ata", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Byty", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Datum:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Zdroj:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Čas:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategorie:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Typ:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ID události:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Uživatel:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "P&očítač:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 52, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Popis:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ata:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Byty", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Nápověda", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Zavřít", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -112,6 +117,19 @@ BEGIN IDS_COLUMNEVENTDATA "Data události" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Žádný" diff --git a/base/applications/mscutils/eventvwr/lang/de-DE.rc b/base/applications/mscutils/eventvwr/lang/de-DE.rc index 00b2fdf2510..791e8748b61 100644 --- a/base/applications/mscutils/eventvwr/lang/de-DE.rc +++ b/base/applications/mscutils/eventvwr/lang/de-DE.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Protokoll" BEGIN - MENUITEM "Protokoll s&peichern...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Protokoll s&peichern...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "Alle E&reignisse löschen", ID_CLEAR_EVENTS, GRAYED + MENUITEM "Alle E&reignisse löschen", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "B&eenden", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Aktualisieren", IDM_REFRESH END - MENUITEM "&Optionen", ID_OPTIONS + MENUITEM "&Optionen", IDM_OPTIONS POPUP "&Hilfe" BEGIN MENUITEM "H&ilfe", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Ereignis-Protokolle werden geladen. Bitte warten...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Ereignisdetails" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Schließen", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Vorige", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Nächste", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Hilfe", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Bezeichnung:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Datum:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Zeit:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Benutzer:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Computer:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ereignis-ID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Quelle:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Typ:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategorie:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&aten", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Datum:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Quelle:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Zeit:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategorie:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Typ:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ereignis-ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Benutzer:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Computer:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Bezeichnung:", IDC_STATIC, 8, 65, 45, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&aten:", IDC_STATIC, 8, 169, 24, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Hilfe", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Schließen", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Ereignisdaten" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Keine" diff --git a/base/applications/mscutils/eventvwr/lang/el-GR.rc b/base/applications/mscutils/eventvwr/lang/el-GR.rc index c40203aa0b6..a60ee3eb185 100644 --- a/base/applications/mscutils/eventvwr/lang/el-GR.rc +++ b/base/applications/mscutils/eventvwr/lang/el-GR.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_GREEK, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Log" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "Έ&ξοδος", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Ανανέωση", IDM_REFRESH END - MENUITEM "&Επιλογές", ID_OPTIONS + MENUITEM "&Επιλογές", IDM_OPTIONS POPUP "&Βοήθεια" BEGIN MENUITEM "Βο&ήθεια", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Γίνεται φόρτωση των Logs συμβάντων. Παρακαλώ περιμένετε ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Λεπτομέρειες συμβάντος" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Κλείσιμο", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Προηγούμενο", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Επόμενο", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Βοήθεια", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Περιγραφή:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Ημερομηνία:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ώρα:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Χρήστης:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Υπολογιστής:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "EventID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Πηγή:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Τύπος:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Κατηγορία:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Δ&εδομένα", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Ημερομηνία:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Πηγή:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ώρα:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Κατηγορία:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Τύπος:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "EventID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Χρήστης:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Υπολογιστής:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Περιγραφή:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Δ&εδομένα:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Βοήθεια", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Κλείσιμο", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Event Data" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/en-US.rc b/base/applications/mscutils/eventvwr/lang/en-US.rc index 7cda9ee606f..95ef4fc8b66 100644 --- a/base/applications/mscutils/eventvwr/lang/en-US.rc +++ b/base/applications/mscutils/eventvwr/lang/en-US.rc @@ -8,13 +8,13 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Log" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "E&xit", IDM_EXIT END @@ -22,7 +22,7 @@ BEGIN BEGIN MENUITEM "&Refresh", IDM_REFRESH END - MENUITEM "&Options", ID_OPTIONS + MENUITEM "&Options", IDM_OPTIONS POPUP "&Help" BEGIN MENUITEM "H&elp", IDM_HELP @@ -31,7 +31,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -56,38 +56,43 @@ BEGIN CTEXT "Loading Event Logs. Please wait ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP -CAPTION "Event Detail" +CAPTION "Event Properties" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Close", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Previous", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Next", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Help", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Description:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Date:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Time:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&User:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Computer:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "EventID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Source:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Type:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Category:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ata", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Date:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Source:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Time:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Category:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Type:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Event ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&User:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Computer:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Description:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_BORDER + + LTEXT "D&ata:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_BORDER + + PUSHBUTTON "&Help", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Close", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -120,6 +125,19 @@ BEGIN IDS_COLUMNEVENTDATA "Event Data" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/es-ES.rc b/base/applications/mscutils/eventvwr/lang/es-ES.rc index f3e1f70325e..67d07e5dc2b 100644 --- a/base/applications/mscutils/eventvwr/lang/es-ES.rc +++ b/base/applications/mscutils/eventvwr/lang/es-ES.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Registro" BEGIN - MENUITEM "Guardar &protocolo...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Guardar &protocolo...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "&Borrar todos los eventos", ID_CLEAR_EVENTS, GRAYED + MENUITEM "&Borrar todos los eventos", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "S&alir", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Actualizar", IDM_REFRESH END - MENUITEM "&Opciones", ID_OPTIONS + MENUITEM "&Opciones", IDM_OPTIONS POPUP "Ay&uda" BEGIN MENUITEM "Ay&uda", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Recuperando eventos. Espere un momento...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Detalles del evento" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Cerrar", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Anterior", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Siguiente", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Ayuda", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Descripción:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Fecha:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Hora:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Usuario:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Equipo:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ID de evento:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Origen:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tipo:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Categoría:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&atos", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Fecha:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Origen:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Hora:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Categoría:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tipo:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ID de evento:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Usuario:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Equipo:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Descripción:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&atos:", IDC_STATIC, 8, 169, 25, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Ayuda", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Cerrar", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Datos del evento" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Ninguno" diff --git a/base/applications/mscutils/eventvwr/lang/fr-FR.rc b/base/applications/mscutils/eventvwr/lang/fr-FR.rc index 83ff4a1176d..f41b80b4586 100644 --- a/base/applications/mscutils/eventvwr/lang/fr-FR.rc +++ b/base/applications/mscutils/eventvwr/lang/fr-FR.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "Journa&l" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "Effacer tous &les événements", ID_CLEAR_EVENTS, GRAYED + MENUITEM "Effacer tous &les événements", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "Quitter", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Rafraîchir", IDM_REFRESH END - MENUITEM "&Options", ID_OPTIONS + MENUITEM "&Options", IDM_OPTIONS POPUP "Aide" BEGIN MENUITEM "Aide", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Chargement des journaux d'événements. Veuillez patienter...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Détail de l'événement" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Fermer", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Précédent", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "Suiva&nt", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "Aide", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Description :", IDC_STATIC, 14, 70, 45, 8 - LTEXT "Date :", IDC_STATIC, 14, 14, 40, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Heure :", IDC_STATIC, 14, 27, 40, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Utilisateur :", IDC_STATIC, 14, 41, 40, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ordinateur :", IDC_STATIC, 14, 54, 40, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Événement :", IDC_STATIC, 133, 15, 42, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Source :", IDC_STATIC, 133, 28, 42, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Type :", IDC_STATIC, 133, 42, 42, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Catégorie :", IDC_STATIC, 133, 55, 42, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Données :", IDC_STATIC, 14, 194, 35, 8 - CONTROL "&Octets", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 50, 194, 34, 8 - CONTROL "&Mots", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 88, 194, 33, 8 + LTEXT "Date :", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Source :", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Heure :", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Catégorie :", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Type :", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Événement :", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Utilisateur :", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ordinateur :", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Description :", IDC_STATIC, 8, 65, 45, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Données :", IDC_STATIC, 8, 169, 35, 8 + CONTROL "&Octets", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 50, 169, 34, 8 + CONTROL "&Mots", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 88, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "Aide", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "Fermer", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Données" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/he-IL.rc b/base/applications/mscutils/eventvwr/lang/he-IL.rc index 6b46f4ace85..535302368f3 100644 --- a/base/applications/mscutils/eventvwr/lang/he-IL.rc +++ b/base/applications/mscutils/eventvwr/lang/he-IL.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "מציג האירועים (מקומי)" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "יציאה", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "רענן", IDM_REFRESH END - MENUITEM "אפשרויות", ID_OPTIONS + MENUITEM "אפשרויות", IDM_OPTIONS POPUP "עזרה" BEGIN MENUITEM "עזרה", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "טוען יומני אירועים, נא להמתין...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "מאפייני אירוע" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "סגור", IDOK, 12, 258, 50, 14 - PUSHBUTTON "הקודם", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "הבא", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "עזרה", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "תיאור", IDC_STATIC, 15, 70, 39, 8 - LTEXT "תאריך:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "זמן:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "משתמש:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "מחשב:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "מזהה אירוע:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "מקור:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "סוג:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "קטגוריה:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "נתונים:", IDC_STATIC, 14, 194, 20, 8 - CONTROL "בתים", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "מילים", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "תאריך:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "מקור:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "זמן:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "קטגוריה:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "סוג:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "מזהה אירוע:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "משתמש:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "מחשב:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "תיאור:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "נתונים:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "בתים", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "מילים", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "עזרה", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "סגור", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "מידע יומן" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "ללא" diff --git a/base/applications/mscutils/eventvwr/lang/it-IT.rc b/base/applications/mscutils/eventvwr/lang/it-IT.rc index 90462eb1d13..abec4ab59c1 100644 --- a/base/applications/mscutils/eventvwr/lang/it-IT.rc +++ b/base/applications/mscutils/eventvwr/lang/it-IT.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Log" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "E&sci", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Aggiorna", IDM_REFRESH END - MENUITEM "&Opzioni", ID_OPTIONS + MENUITEM "&Opzioni", IDM_OPTIONS POPUP "&Aiuto" BEGIN MENUITEM "A&iuto", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Caricamento eventi in corso. Attendere...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Dettagli" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Chiudi", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Precedente", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Successivo", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Aiuto", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Descrizione:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Data:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ore:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&UTente:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Computer:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "IDEvento:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Sorgente:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tipo:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Categoria:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ati", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Data:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Sorgente:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ore:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Categoria:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tipo:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "IDEvento:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&UTente:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Computer:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Descrizione:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ati:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Aiuto", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Chiudi", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Dati Evento" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Nessuna" diff --git a/base/applications/mscutils/eventvwr/lang/ja-JP.rc b/base/applications/mscutils/eventvwr/lang/ja-JP.rc index 9ccff1e78b0..d36370cfe70 100644 --- a/base/applications/mscutils/eventvwr/lang/ja-JP.rc +++ b/base/applications/mscutils/eventvwr/lang/ja-JP.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "ログ(&L)" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "終了(&X)", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "更新(&R)", IDM_REFRESH END - MENUITEM "オプション(&O)", ID_OPTIONS + MENUITEM "オプション(&O)", IDM_OPTIONS POPUP "ヘルプ(&H)" BEGIN MENUITEM "ヘルプ(&E)", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "イベント ログを読み込んでいます。 お待ちください ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "イベントの詳細情報" FONT 9, "MS UI Gothic", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "閉じる(&C)", IDOK, 12, 258, 50, 14 - PUSHBUTTON "前へ(&P)", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "次へ(&N)", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "ヘルプ(&H)", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "説明(&D):", IDC_STATIC, 15, 70, 39, 8 - LTEXT "日付:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "時刻:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ユーザー(&U):", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "コンピュータ(&C):", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "イベントID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ソース:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "種類:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "分類:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "データ(&A)", IDC_STATIC, 14, 194, 20, 8 - CONTROL "バイト(&B)", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "ワード(&W)", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "日付:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ソース:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "時刻:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "分類:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "種類:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "イベントID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ユーザー(&U):", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "コンピュータ(&C):", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "説明(&D):", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "データ(&A):", IDC_STATIC, 8, 169, 20, 8 + CONTROL "バイト(&B)", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "ワード(&W)", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "ヘルプ(&H)", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "閉じる(&C)", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Event Data" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/ko-KR.rc b/base/applications/mscutils/eventvwr/lang/ko-KR.rc index d48971915d6..12109eef462 100644 --- a/base/applications/mscutils/eventvwr/lang/ko-KR.rc +++ b/base/applications/mscutils/eventvwr/lang/ko-KR.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "로그(&L)" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "종료(&X)", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "새로 고침(&R)", IDM_REFRESH END - MENUITEM "옵션(&O)", ID_OPTIONS + MENUITEM "옵션(&O)", IDM_OPTIONS POPUP "도움말(&H)" BEGIN MENUITEM "도움말(&H)", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "이벤트 로그 로딩중. 기다려주세요...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Event Detail" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "닫기(&C)", IDOK, 12, 258, 50, 14 - PUSHBUTTON "이전(&P)", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "다음(&N)", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "도움말(&H)", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "설명(&D):", IDC_STATIC, 15, 70, 39, 8 - LTEXT "날짜:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "시간:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "사용자(&U):", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "컴퓨터(&C):", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "이벤트ID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "소스:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "타입:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "카테고리:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "데이터(&A)", IDC_STATIC, 14, 194, 20, 8 - CONTROL "바이트(&B)", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "글자(&W)", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "날짜:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "소스:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "시간:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "카테고리:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "타입:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "이벤트ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 35, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "사용자(&U):", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "컴퓨터(&C):", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "설명(&D):", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "데이터(&A):", IDC_STATIC, 8, 169, 20, 8 + CONTROL "바이트(&B)", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "글자(&W)", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "도움말(&H)", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "닫기(&C)", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Event Data" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/no-NO.rc b/base/applications/mscutils/eventvwr/lang/no-NO.rc index ff2bf2f824a..a8f16040028 100644 --- a/base/applications/mscutils/eventvwr/lang/no-NO.rc +++ b/base/applications/mscutils/eventvwr/lang/no-NO.rc @@ -1,12 +1,12 @@ LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Logg" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "A&vslutt", IDM_EXIT END @@ -14,7 +14,7 @@ BEGIN BEGIN MENUITEM "&Oppdater", IDM_REFRESH END - MENUITEM "&Handling", ID_OPTIONS + MENUITEM "&Handling", IDM_OPTIONS POPUP "&Hjelp" BEGIN MENUITEM "Hj&elp", IDM_HELP @@ -23,7 +23,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -48,38 +48,43 @@ BEGIN CTEXT "Laster Hendelseliste. Venligst vent ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Hendelse detaljer" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Lukk", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Forrige", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Neste", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Hjelp", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Beskrivelse:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Dato:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT "Statisk", IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tid:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT "Statisk", IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Bruker:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT "Statisk", IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Datamaskin:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT "Statisk", IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Hendelse ID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT "Statisk", IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kilde:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT "Statisk", IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Type:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT "Statisk", IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategori:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT "Statisk", IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ata", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Tegn", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Ord", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Dato:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kilde:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tid:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategori:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Type:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Hendelse ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Bruker:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Datamaskin:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Beskrivelse:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ata", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Tegn", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Ord", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Hjelp", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Lukk", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -112,6 +117,19 @@ BEGIN IDS_COLUMNEVENTDATA "Event Data" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/pl-PL.rc b/base/applications/mscutils/eventvwr/lang/pl-PL.rc index d139ed1969c..1131a6918d2 100644 --- a/base/applications/mscutils/eventvwr/lang/pl-PL.rc +++ b/base/applications/mscutils/eventvwr/lang/pl-PL.rc @@ -4,13 +4,13 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Logi" BEGIN - MENUITEM "Zapisz &protokół...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Zapisz &protokół...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "W&yczyść wszystkie zdarzenia", ID_CLEAR_EVENTS, GRAYED + MENUITEM "W&yczyść wszystkie zdarzenia", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "&Wyjście", IDM_EXIT END @@ -18,7 +18,7 @@ BEGIN BEGIN MENUITEM "&Odśwież", IDM_REFRESH END - MENUITEM "Op&cje", ID_OPTIONS + MENUITEM "Op&cje", IDM_OPTIONS POPUP "Po&moc" BEGIN MENUITEM "Pomo&c", IDM_HELP @@ -27,7 +27,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -52,38 +52,43 @@ BEGIN CTEXT "Ładowanie logów zdarzeń. Proszę czekać ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Szczegóły zdarzenia" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Zamknij", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Poprzedni", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Następny", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "Po&moc", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Opis:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Data:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Czas:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Użytkownik:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Komputer:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Numer ID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Źródło:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Typ:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategoria:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ane", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bajty", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Słowa", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Data:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Źródło:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Czas:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategoria:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Typ:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Numer ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Użytkownik:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Komputer:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Opis:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ane", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bajty", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Słowa", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "Po&moc", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Zamknij", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -116,6 +121,19 @@ BEGIN IDS_COLUMNEVENTDATA "Dane zdarzenia" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Brak" diff --git a/base/applications/mscutils/eventvwr/lang/pt-BR.rc b/base/applications/mscutils/eventvwr/lang/pt-BR.rc index ceb727e0d9d..1f00302e223 100644 --- a/base/applications/mscutils/eventvwr/lang/pt-BR.rc +++ b/base/applications/mscutils/eventvwr/lang/pt-BR.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Registro" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "&Sair", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Atualizar", IDM_REFRESH END - MENUITEM "&Opções", ID_OPTIONS + MENUITEM "&Opções", IDM_OPTIONS POPUP "&Ajuda" BEGIN MENUITEM "&Ajuda", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Carregando Registros de Eventos. Por favor aguarde ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Detalhes do Evento" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Fechar", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Anterior", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Próximo", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "A&juda", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Descrição:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Data:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tempo:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Usuário:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Computador:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "EventID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Fonte:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tipo:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Categoria:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Dad&os", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Data:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Fonte:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tempo:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Categoria:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tipo:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "EventID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Usuário:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Computador:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Descrição:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Dad&os:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "A&juda", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Fechar", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Dados do Evento" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Nenhum" diff --git a/base/applications/mscutils/eventvwr/lang/ro-RO.rc b/base/applications/mscutils/eventvwr/lang/ro-RO.rc index ebb1f6182e8..2429d6eb0d5 100644 --- a/base/applications/mscutils/eventvwr/lang/ro-RO.rc +++ b/base/applications/mscutils/eventvwr/lang/ro-RO.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "J&urnal" BEGIN - MENUITEM "Păstrare p&rotocol…", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Păstrare p&rotocol…", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "Înlăt&ură toate evenimentele", ID_CLEAR_EVENTS, GRAYED + MENUITEM "Înlăt&ură toate evenimentele", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "I&eșire", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "Împ&rospătare", IDM_REFRESH END - MENUITEM "&Opțiuni", ID_OPTIONS + MENUITEM "&Opțiuni", IDM_OPTIONS POPUP "&?" BEGIN MENUITEM "&Manual…", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Se încarcă jurnalul de evenimentele…", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Detalii eveniment" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Î&nchide", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Precedent", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "U&rmător", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Manual…", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Descriere:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Dată:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Oră:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Utilizator:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Calculator:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ID Eveniment:", IDC_STATIC, 133, 15, 46, 8 - EDITTEXT IDC_EVENTIDSTATIC, 185, 15, 77, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Sursă:", IDC_STATIC, 133, 28, 46, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 185, 28, 77, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tip:", IDC_STATIC, 133, 42, 46, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 185, 42, 77, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Categorie:", IDC_STATIC, 133, 55, 46, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 185, 55, 77, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ate", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&8 biți", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&16 biți", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Dată:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Sursă:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Oră:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Categorie:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tip:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ID Eveniment:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Utilizator:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Calculator:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Descriere:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ate:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&8 biți", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&16 biți", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Manual…", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "Î&nchide", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Date eveniment" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "nespecificat" diff --git a/base/applications/mscutils/eventvwr/lang/ru-RU.rc b/base/applications/mscutils/eventvwr/lang/ru-RU.rc index 61438fbd7a3..40fd9425078 100644 --- a/base/applications/mscutils/eventvwr/lang/ru-RU.rc +++ b/base/applications/mscutils/eventvwr/lang/ru-RU.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "С&обытия" BEGIN - MENUITEM "Сохранить &протокол...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Сохранить &протокол...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "Очистить &все события", ID_CLEAR_EVENTS, GRAYED + MENUITEM "Очистить &все события", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "В&ыход", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Обновить", IDM_REFRESH END - MENUITEM "&Настройки", ID_OPTIONS + MENUITEM "&Настройки", IDM_OPTIONS POPUP "&Справка" BEGIN MENUITEM "&Помощь", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Идет загрузка. Подождите...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Свойства события" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Закрыть", IDOK, 14, 258, 55, 14 - PUSHBUTTON "&Предыдущее", IDPREVIOUS, 78, 258, 55, 14 - PUSHBUTTON "С&ледующее", IDNEXT, 142, 258, 55, 14 - PUSHBUTTON "П&омощь", IDHELP, 206, 258, 55, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "Описание:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Дата:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 68, 14, 60, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Время:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 68, 27, 60, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Пользователь:", IDC_STATIC, 14, 41, 50, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 68, 41, 60, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Компьютер:", IDC_STATIC, 14, 54, 45, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 68, 54, 60, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Код (ID):", IDC_STATIC, 143, 15, 45, 8 - EDITTEXT IDC_EVENTIDSTATIC, 183, 15, 80, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Источник:", IDC_STATIC, 143, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 183, 28, 80, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Тип:", IDC_STATIC, 143, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 183, 42, 80, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Категория:", IDC_STATIC, 143, 55, 38, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 183, 55, 80, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Данные:", IDC_STATIC, 14, 192, 30, 8 - CONTROL "&Байты", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 49, 192, 34, 8 - CONTROL "&Слова", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 87, 192, 33, 8 + LTEXT "Дата:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Источник:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Время:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Категория:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Тип:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Код (ID):", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Пользователь:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Компьютер:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "Описание:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Данные:", IDC_STATIC, 8, 169, 30, 8 + CONTROL "&Байты", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 49, 169, 34, 8 + CONTROL "&Слова", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 87, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "П&омощь", IDHELP, 8, 228, 55, 14 + DEFPUSHBUTTON "&Закрыть", IDOK, 199, 228, 55, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Данные события" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Нет" diff --git a/base/applications/mscutils/eventvwr/lang/sk-SK.rc b/base/applications/mscutils/eventvwr/lang/sk-SK.rc index 12e3b00a094..cef3a39efcf 100644 --- a/base/applications/mscutils/eventvwr/lang/sk-SK.rc +++ b/base/applications/mscutils/eventvwr/lang/sk-SK.rc @@ -5,13 +5,13 @@ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Záznam" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "&Skončiť", IDM_EXIT END @@ -19,7 +19,7 @@ BEGIN BEGIN MENUITEM "&Obnoviť", IDM_REFRESH END - MENUITEM "&Možnosti", ID_OPTIONS + MENUITEM "&Možnosti", IDM_OPTIONS POPUP "&Pomocník" BEGIN MENUITEM "&Pomocník", IDM_HELP @@ -28,7 +28,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -53,38 +53,43 @@ BEGIN CTEXT "Nahrávam záznamy s udalosťami. Počkajte, prosím ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Podrobnosti o udalosti" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Zavrieť", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Predošlá", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Nasledujúca", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Pomocník", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Popis:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Dátum:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Čas:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Po&užívateľ:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "P&očítač:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ID udalosti:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Zdroj:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Typ:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategória:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Ú&daje:", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bajty", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Slová", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Dátum:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Zdroj:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Čas:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategória:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Typ:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ID udalosti:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Po&užívateľ:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "P&očítač:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Popis:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Ú&daje:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bajty", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Slová", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Pomocník", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Zavrieť", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -117,6 +122,19 @@ BEGIN IDS_COLUMNEVENTDATA "Event Data" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/sq-AL.rc b/base/applications/mscutils/eventvwr/lang/sq-AL.rc index 7dc078369c3..2cbf6647875 100644 --- a/base/applications/mscutils/eventvwr/lang/sq-AL.rc +++ b/base/applications/mscutils/eventvwr/lang/sq-AL.rc @@ -8,13 +8,13 @@ LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Log" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "Dil", IDM_EXIT END @@ -22,7 +22,7 @@ BEGIN BEGIN MENUITEM "&Rifresko", IDM_REFRESH END - MENUITEM "&Opsione", ID_OPTIONS + MENUITEM "&Opsione", IDM_OPTIONS POPUP "Ndihmë" BEGIN MENUITEM "Ndihmë", IDM_HELP @@ -31,7 +31,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -56,38 +56,43 @@ BEGIN CTEXT "Ngarkim loget e ngjarjeve. Ju lutem prisniPlease wait ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Detaje te ngjarjeve" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Mbylle", IDOK, 12, 258, 50, 14 - PUSHBUTTON "I mëparshmi", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "Tjetri", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "Ndihmë", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "Përshkrimi:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Data:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ora:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Përdoruesi:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kompjuteri:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "NgjarjeID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Burimi:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tipi:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategoria:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ata", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Data:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Burimi:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ora:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategoria:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tipi:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "NgjarjeID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Përdoruesi:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kompjuteri:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "Përshkrimi:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ata:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Bytes", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Word", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "Ndihmë", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "Mbylle", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -120,6 +125,19 @@ BEGIN IDS_COLUMNEVENTDATA "Data e Ngjarjes" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Asnje" diff --git a/base/applications/mscutils/eventvwr/lang/sv-SE.rc b/base/applications/mscutils/eventvwr/lang/sv-SE.rc index 8b8e01e6a87..a849460b7d3 100644 --- a/base/applications/mscutils/eventvwr/lang/sv-SE.rc +++ b/base/applications/mscutils/eventvwr/lang/sv-SE.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Logg" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "A&vsluta", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Uppdatera", IDM_REFRESH END - MENUITEM "&Åtgärd", ID_OPTIONS + MENUITEM "&Åtgärd", IDM_OPTIONS POPUP "&Hjälp" BEGIN MENUITEM "Hj&älp", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Laddar in Händelseloggen. Vänligen vänta...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Händelsedetaljer" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Stäng", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Föregående", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Näste", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Hjälp", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Beskrivning:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Datum:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tid:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Användare:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Dator:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Händelse ID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Källa:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Type:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kategori:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "D&ata", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Byte", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Ord", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Datum:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Källa:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tid:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kategori:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Type:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Händelse ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Användare:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Dator:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Beskrivning:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "D&ata", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Byte", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Ord", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Hjälp", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Stäng", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Händelsedata" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "None" diff --git a/base/applications/mscutils/eventvwr/lang/tr-TR.rc b/base/applications/mscutils/eventvwr/lang/tr-TR.rc index 615c45ff529..8d157cf2806 100644 --- a/base/applications/mscutils/eventvwr/lang/tr-TR.rc +++ b/base/applications/mscutils/eventvwr/lang/tr-TR.rc @@ -8,13 +8,13 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Kayıt" BEGIN - MENUITEM "&Protokolü Sakla...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "&Protokolü Sakla...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "&Tüm Olayları Sil", ID_CLEAR_EVENTS, GRAYED + MENUITEM "&Tüm Olayları Sil", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "&Çıkış", IDM_EXIT END @@ -22,7 +22,7 @@ BEGIN BEGIN MENUITEM "&Yenile", IDM_REFRESH END - MENUITEM "&Seçenekler", ID_OPTIONS + MENUITEM "&Seçenekler", IDM_OPTIONS POPUP "&Yardım" BEGIN MENUITEM "&Yardım", IDM_HELP @@ -31,7 +31,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -56,38 +56,43 @@ BEGIN CTEXT "Olay kayıtları yükleniyor. Lütfen bekleyiniz.", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Olay Ayrıntıları" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Kapat", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Önceki", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Sonraki", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Yardım", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "Açıklama:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Târih:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Saat:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kullanıcı:", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Bilgisayar:", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Olay Kimliği:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Kaynak:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Tür:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ulam:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Veri:", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Çoklu", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "Sö&zcük", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Târih:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kaynak:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Saat:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ulam:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Tür:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Olay Kimliği:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Kullanıcı:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Bilgisayar:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "Açıklama:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Veri:", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Çoklu", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "Sö&zcük", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Yardım", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Kapat", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -120,6 +125,19 @@ BEGIN IDS_COLUMNEVENTDATA "Olay Verisi" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Hiçbiri" diff --git a/base/applications/mscutils/eventvwr/lang/uk-UA.rc b/base/applications/mscutils/eventvwr/lang/uk-UA.rc index c6c6353c3e4..e13baa75f70 100644 --- a/base/applications/mscutils/eventvwr/lang/uk-UA.rc +++ b/base/applications/mscutils/eventvwr/lang/uk-UA.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "&Звіт" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "В&ихід", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "&Оновити", IDM_REFRESH END - MENUITEM "&Властивості", ID_OPTIONS + MENUITEM "&Властивості", IDM_OPTIONS POPUP "&Допомога" BEGIN MENUITEM "Д&опомога", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "Завантаження Звіту подій. Будь ласка, зачекайте ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Деталі події" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "&Закрити", IDOK, 12, 258, 50, 14 - PUSHBUTTON "&Попередня", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "&Наступна", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "&Допомога", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "&Опис:", IDC_STATIC, 15, 70, 39, 8 - LTEXT "Дата:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 59, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Час:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 59, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Користувач:", IDC_STATIC, 14, 41, 41, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 59, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Ко&мп'ютер:", IDC_STATIC, 14, 54, 37, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 59, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ID Події:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Джерело:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Тип:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Категорія:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "Д&aта", IDC_STATIC, 14, 194, 20, 8 - CONTROL "&Байт", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "&Слово", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "Дата:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Джерело:", IDC_STATIC, 103, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Час:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Категорія:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Тип:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "ID Події:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "&Користувач:", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "Ко&мп'ютер:", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "&Опис:", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "Д&aта", IDC_STATIC, 8, 169, 20, 8 + CONTROL "&Байт", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "&Слово", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "&Допомога", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "&Закрити", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "Дані події" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "Немає" diff --git a/base/applications/mscutils/eventvwr/lang/zh-CN.rc b/base/applications/mscutils/eventvwr/lang/zh-CN.rc index 7ec7f850e55..77b4596c094 100644 --- a/base/applications/mscutils/eventvwr/lang/zh-CN.rc +++ b/base/applications/mscutils/eventvwr/lang/zh-CN.rc @@ -2,13 +2,13 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED -IDC_EVENTVWR MENU +IDM_EVENTVWR MENU BEGIN POPUP "日志(&L)" BEGIN - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Save &Protocol...", IDM_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "C&lear all Events", IDM_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "退出(&X)", IDM_EXIT END @@ -16,7 +16,7 @@ BEGIN BEGIN MENUITEM "刷新(&R)", IDM_REFRESH END - MENUITEM "选项(&O)", ID_OPTIONS + MENUITEM "选项(&O)", IDM_OPTIONS POPUP "帮助(&H)" BEGIN MENUITEM "帮助内容(&E)", IDM_HELP @@ -25,7 +25,7 @@ BEGIN END END -IDC_EVENTVWR ACCELERATORS +IDA_EVENTVWR ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -50,38 +50,43 @@ BEGIN CTEXT "正在载入日志。请稍候...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTPROPERTIES DIALOGEX 0, 0, 266, 251 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "事件详细信息" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "关闭(&C)", IDOK, 12, 258, 50, 14 - PUSHBUTTON "上一个(&P)", IDPREVIOUS, 78, 258, 50, 14 - PUSHBUTTON "下一个(&N)", IDNEXT, 144, 258, 50, 14 - PUSHBUTTON "帮助(&H)", IDHELP, 210, 258, 50, 14 - EDITTEXT IDC_EVENTTEXTEDIT, 14, 81, 247, 108, ES_MULTILINE | ES_READONLY - LTEXT "描述(&D):", IDC_STATIC, 15, 70, 39, 8 - LTEXT "日期:", IDC_STATIC, 14, 14, 36, 8 - EDITTEXT IDC_EVENTDATESTATIC, 56, 14, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "时间:", IDC_STATIC, 14, 27, 36, 8 - EDITTEXT IDC_EVENTTIMESTATIC, 56, 27, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "用户(&U):", IDC_STATIC, 14, 41, 36, 8 - EDITTEXT IDC_EVENTUSERSTATIC, 56, 41, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "计算机(&C):", IDC_STATIC, 14, 54, 36, 8 - EDITTEXT IDC_EVENTCOMPUTERSTATIC, 56, 54, 72, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "事件 ID:", IDC_STATIC, 133, 15, 36, 8 - EDITTEXT IDC_EVENTIDSTATIC, 175, 15, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "来源:", IDC_STATIC, 133, 28, 36, 8 - EDITTEXT IDC_EVENTSOURCESTATIC, 175, 28, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "类型:", IDC_STATIC, 133, 42, 36, 8 - EDITTEXT IDC_EVENTTYPESTATIC, 175, 42, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "分类:", IDC_STATIC, 133, 55, 36, 8 - EDITTEXT IDC_EVENTCATEGORYSTATIC, 175, 55, 87, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - EDITTEXT IDC_EVENTDATAEDIT, 14, 204, 247, 44, ES_MULTILINE | ES_READONLY - LTEXT "数据(&A)", IDC_STATIC, 14, 194, 20, 8 - CONTROL "字节(&B)", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 194, 34, 8 - CONTROL "字(&W)", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 194, 33, 8 + LTEXT "日期:", IDC_STATIC, 8, 5, 31, 8 + EDITTEXT IDC_EVENTDATESTATIC, 46, 5, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "来源:", IDC_STATIC, 104, 5, 36, 8 + EDITTEXT IDC_EVENTSOURCESTATIC, 140, 5, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "时间:", IDC_STATIC, 8, 15, 31, 8 + EDITTEXT IDC_EVENTTIMESTATIC, 46, 15, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "分类:", IDC_STATIC, 103, 15, 36, 8 + EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "类型:", IDC_STATIC, 8, 25, 31, 8 + EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "事件 ID:", IDC_STATIC, 103, 25, 36, 8 + EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "用户(&U):", IDC_STATIC, 8, 35, 36, 8 + EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + LTEXT "计算机(&C):", IDC_STATIC, 8, 45, 36, 8 + EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL + + PUSHBUTTON "", IDC_PREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDC_NEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDC_COPY, 225, 37, 28, 14, BS_ICON + + LTEXT "描述(&D):", IDC_STATIC, 8, 65, 39, 8 + EDITTEXT IDC_EVENTTEXTEDIT, 8, 76, 247, 88, ES_MULTILINE | ES_READONLY + + LTEXT "数据(&A)", IDC_STATIC, 8, 169, 20, 8 + CONTROL "字节(&B)", IDC_BYTESRADIO, "Button", BS_AUTORADIOBUTTON, 39, 169, 34, 8 + CONTROL "字(&W)", IDC_WORDRADIO, "Button", BS_AUTORADIOBUTTON, 77, 169, 33, 8 + EDITTEXT IDC_EVENTDATAEDIT, 8, 179, 247, 44, ES_MULTILINE | ES_READONLY + + PUSHBUTTON "帮助(&H)", IDHELP, 8, 228, 50, 14 + DEFPUSHBUTTON "关闭(&C)", IDOK, 206, 228, 50, 14 END STRINGTABLE @@ -114,6 +119,19 @@ BEGIN IDS_COLUMNEVENTDATA "事件数据" END +STRINGTABLE +BEGIN + IDS_COPY "Event Type: %s\n\ +Event Source: %s\n\ +Event Category: %s\n\ +Event ID: %s\n\ +Date: %s\n\ +Time: %s\n\ +User: %s\n\ +Computer: %s\n\ +Description:\n%s" +END + STRINGTABLE BEGIN IDS_NONE "无" diff --git a/base/applications/mscutils/eventvwr/res/copy.ico b/base/applications/mscutils/eventvwr/res/copy.ico new file mode 100644 index 00000000000..7bb1635dd85 Binary files /dev/null and b/base/applications/mscutils/eventvwr/res/copy.ico differ diff --git a/base/applications/mscutils/eventvwr/res/next_event.ico b/base/applications/mscutils/eventvwr/res/next_event.ico new file mode 100644 index 00000000000..b826dec50b6 Binary files /dev/null and b/base/applications/mscutils/eventvwr/res/next_event.ico differ diff --git a/base/applications/mscutils/eventvwr/res/prev_event.ico b/base/applications/mscutils/eventvwr/res/prev_event.ico new file mode 100644 index 00000000000..1e3417b0387 Binary files /dev/null and b/base/applications/mscutils/eventvwr/res/prev_event.ico differ diff --git a/base/applications/mscutils/eventvwr/resource.h b/base/applications/mscutils/eventvwr/resource.h index f5cd0cb49fd..f9511267403 100644 --- a/base/applications/mscutils/eventvwr/resource.h +++ b/base/applications/mscutils/eventvwr/resource.h @@ -1,53 +1,58 @@ #pragma once -#define IDC_STATIC -1 +/* Icon IDs */ +#define IDI_EVENTVWR 10 +#define IDI_WARNINGICON 11 +#define IDI_INFORMATIONICON 12 +#define IDI_ERRORICON 13 +#define IDI_NEXT 14 +#define IDI_PREV 15 +#define IDI_COPY 16 -#define IDC_MYICON 2 -#define IDNEXT 3 -#define IDD_EVENTVWR_DIALOG 102 -#define IDD_PROGRESSBOX 150 -#define IDD_ABOUTBOX 103 -#define IDM_ABOUT 104 -#define IDM_EXIT 105 -#define IDI_EVENTVWR 107 -#define IDI_SMALL 108 -#define IDC_EVENTVWR 109 -#define IDC_PROCESSPROGRESS 250 -#define IDR_MAINFRAME 128 -#define IDI_WARNINGICON 129 -#define IDI_INFORMATIONICON 130 -#define IDI_ERRORICON 131 -#define IDD_EVENTDETAILDIALOG 132 +/* Accelerator IDs */ +#define IDA_EVENTVWR 50 -#define IDC_EVENTTEXTEDIT 1000 + +/* Dialog IDs */ +#define IDD_ABOUTBOX 101 +#define IDD_PROGRESSBOX 102 +#define IDD_EVENTPROPERTIES 103 + + +/* Control IDs*/ +#define IDC_STATIC -1 +#define IDC_MYICON 1000 #define IDC_EVENTDATESTATIC 1001 -#define IDC_EVENTTIMESTATIC 1002 -#define IDC_EVENTUSERSTATIC 1003 -#define IDC_EVENTCOMPUTERSTATIC 1004 -#define IDC_EVENTIDSTATIC 1005 -#define IDC_EVENTSOURCESTATIC 1006 -#define IDC_EVENTTYPESTATIC 1007 -#define IDC_EVENTCATEGORYSTATIC 1008 -#define IDPREVIOUS 1009 -#define IDC_EVENTTEXTEDIT2 1010 -#define IDC_BYTESRADIO 1011 -#define IDC_WORDRADIO 1013 -#define IDC_EVENTDATAEDIT 1014 +#define IDC_EVENTSOURCESTATIC 1002 +#define IDC_EVENTTIMESTATIC 1003 +#define IDC_EVENTCATEGORYSTATIC 1004 +#define IDC_EVENTTYPESTATIC 1005 +#define IDC_EVENTIDSTATIC 1006 +#define IDC_EVENTUSERSTATIC 1007 +#define IDC_EVENTCOMPUTERSTATIC 1008 +#define IDC_PREVIOUS 1009 +#define IDC_NEXT 1010 +#define IDC_COPY 1011 +#define IDC_EVENTTEXTEDIT 1012 +#define IDC_BYTESRADIO 1013 +#define IDC_WORDRADIO 1014 +#define IDC_EVENTDATAEDIT 1015 -#define ID_HELP_HELP 32771 -#define ID_HELP 32772 -#define ID_OPTIONS 32773 -#define ID_VIEW 32774 -#define IDM_HELP 32775 -#define ID_VIEW_REFRESH 32776 -#define ID_REFRESH 32777 -#define IDM_REFRESH 32778 -#define ID_CLEAR_EVENTS 32779 -#define ID_SAVE_PROTOCOL 32780 + +/* Menu IDs */ +#define IDM_EVENTVWR 32771 +#define IDM_CLEAR_EVENTS 32772 +#define IDM_SAVE_PROTOCOL 32773 +#define IDM_EXIT 32774 +#define IDM_REFRESH 32775 +#define IDM_OPTIONS 32776 +#define IDM_HELP 32777 +#define IDM_ABOUT 32778 #define ID_FIRST_LOG 45000 + /* String IDs */ #define IDS_APP_TITLE 103 #define IDS_APP_TITLE_EX 104 @@ -73,5 +78,7 @@ #define IDS_COLUMNCOMPUTER 307 #define IDS_COLUMNEVENTDATA 308 +#define IDS_COPY 400 + #define IDS_NONE 320 #define IDS_NOT_AVAILABLE 321 diff --git a/base/applications/mspaint/definitions.h b/base/applications/mspaint/definitions.h index 011c20bfc97..6a0ed6c4fa6 100644 --- a/base/applications/mspaint/definitions.h +++ b/base/applications/mspaint/definitions.h @@ -5,7 +5,7 @@ * PURPOSE: Defines the resource ids and other stuff * PROGRAMMERS: Benedikt Freisen */ - + /* DEFINES **********************************************************/ #define HISTORYSIZE 11 diff --git a/base/applications/mspaint/drawing.c b/base/applications/mspaint/drawing.c index acbf5424e07..e46af30b668 100644 --- a/base/applications/mspaint/drawing.c +++ b/base/applications/mspaint/drawing.c @@ -128,7 +128,7 @@ Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, L { LONG a, b, x, y; b = max(1, max(abs(x2 - x1), abs(y2 - y1))); - + for(a = 0; a <= b; a++) for(y = (y1 * (b - a) + y2 * a) / b - radius + 1; y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++) @@ -142,7 +142,7 @@ void Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r) { LONG a, b; - + for(b = -r; b <= r; b++) for(a = -r; a <= r; a++) if ((a * a + b * b <= r * r) && (rand() % 4 == 0)) @@ -195,7 +195,7 @@ Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style) case 10: case 11: { - POINT offsTop[] = {{4, -3}, {2, -2}, {0, 0}, + POINT offsTop[] = {{4, -3}, {2, -2}, {0, 0}, {-3, -3}, {-2, -2}, {-1, 0}}; POINT offsBtm[] = {{-3, 4}, {-2, 2}, {-1, 1}, {4, 4}, {2, 2}, {0, 1}}; diff --git a/base/applications/mspaint/globalvar.h b/base/applications/mspaint/globalvar.h index a51d329a455..927d53ce5af 100644 --- a/base/applications/mspaint/globalvar.h +++ b/base/applications/mspaint/globalvar.h @@ -5,7 +5,7 @@ * PURPOSE: Declaring global variables for later initialization * PROGRAMMERS: Benedikt Freisen */ - + /* INCLUDES *********************************************************/ //#include @@ -93,7 +93,7 @@ extern HWND hScrlClient; extern HWND hToolBtn[16]; extern HINSTANCE hProgInstance; - + extern TCHAR filename[256]; extern TCHAR filepathname[1000]; extern BOOL isAFile; diff --git a/base/applications/mspaint/lang/pl-PL.rc b/base/applications/mspaint/lang/pl-PL.rc index 36b53bd8b10..cd68e91dc1e 100644 --- a/base/applications/mspaint/lang/pl-PL.rc +++ b/base/applications/mspaint/lang/pl-PL.rc @@ -4,7 +4,7 @@ * FILE: base/applications/mspaint/lang/pl-PL.rc * PURPOSE: Polish Language resource file * TRANSLATOR: Caemyr - Olaf Siejka (May, 2009), Use ReactOS forum PM or IRC to contact me - * UTF-8 conversion by Caemyr (May, 2011) + * UTF-8 conversion by Caemyr (May, 2011) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT diff --git a/base/applications/mspaint/main.c b/base/applications/mspaint/main.c index 8275ed375f4..18044e4916a 100644 --- a/base/applications/mspaint/main.c +++ b/base/applications/mspaint/main.c @@ -139,7 +139,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application are saved */ - + TCHAR progtitle[1000]; TCHAR resstr[100]; HMENU menu; @@ -150,7 +150,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument int i; TCHAR tooltips[16][30]; HDC hDC; - + TCHAR *c; TCHAR sfnFilename[1000]; TCHAR sfnFiletitle[256]; @@ -202,7 +202,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument LoadString(hThisInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr)); _stprintf(progtitle, resstr, filename); LoadString(hThisInstance, IDS_MINIATURETITLE, miniaturetitle, SIZEOF(miniaturetitle)); - + /* create main window */ hwnd = CreateWindowEx(0, _T("MainWindow"), progtitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, @@ -240,8 +240,8 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument /* creating the 16 bitmap radio buttons and setting the bitmap */ - /* - * FIXME: Unintentionally there is a line above the tool bar (hidden by y-offset). + /* + * FIXME: Unintentionally there is a line above the tool bar (hidden by y-offset). * To prevent cropping of the buttons height has been increased from 200 to 205 */ hToolbar = @@ -254,7 +254,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument ImageList_AddMasked(hImageList, tempBm, 0xff00ff); DeleteObject(tempBm); SendMessage(hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); - + for(i = 0; i < 16; i++) { TBBUTTON tbbutton; @@ -272,7 +272,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument tbbutton.iBitmap = i; SendMessage(hToolbar, TB_ADDBUTTONS, 1, (LPARAM) &tbbutton); } - + SendMessage(hToolbar, TB_CHECKBUTTON, ID_PEN, MAKELONG(TRUE, 0)); SendMessage(hToolbar, TB_SETMAXTEXTROWS, 0, 0); SendMessage(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(25, 25)); diff --git a/base/applications/mspaint/rsrc.rc b/base/applications/mspaint/rsrc.rc index cece6304bf4..77e681972be 100644 --- a/base/applications/mspaint/rsrc.rc +++ b/base/applications/mspaint/rsrc.rc @@ -5,7 +5,7 @@ * PURPOSE: Managing the resources * PROGRAMMERS: Benedikt Freisen */ - + /* INCLUDES *********************************************************/ #include diff --git a/base/applications/mspaint/selection.c b/base/applications/mspaint/selection.c index e0e0e339d5c..8253a116c7b 100644 --- a/base/applications/mspaint/selection.c +++ b/base/applications/mspaint/selection.c @@ -25,8 +25,8 @@ /* FUNCTIONS ********************************************************/ LPCTSTR cursors[9] = { /* action to mouse cursor lookup table */ - IDC_SIZEALL, - + IDC_SIZEALL, + IDC_SIZENWSE, IDC_SIZENS, IDC_SIZENESW, IDC_SIZEWE, IDC_SIZEWE, IDC_SIZENESW, IDC_SIZENS, IDC_SIZENWSE @@ -66,7 +66,7 @@ ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HBITMAP hTempBm; HBRUSH hTempBrush; HBITMAP hTempMask; - + hTempDC = CreateCompatibleDC(hdcSrc); hTempDC2 = CreateCompatibleDC(hdcSrc); hTempBm = CreateCompatibleBitmap(hTempDC, nWidth, nHeight); @@ -280,7 +280,7 @@ SelectionWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { if (activeTool == TOOL_TEXT) { - + // FIXME: What to do? } else { diff --git a/base/applications/mspaint/textedit.c b/base/applications/mspaint/textedit.c index 6bc1864d671..29c74ab24c8 100644 --- a/base/applications/mspaint/textedit.c +++ b/base/applications/mspaint/textedit.c @@ -65,6 +65,6 @@ TextEditWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) default: return DefWindowProc(hwnd, message, wParam, lParam); } - + return 0; } diff --git a/base/applications/mspaint/winproc.c b/base/applications/mspaint/winproc.c index 76af666a0ad..b154d7e5b81 100644 --- a/base/applications/mspaint/winproc.c +++ b/base/applications/mspaint/winproc.c @@ -440,7 +440,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } break; - // mouse events used for drawing + // mouse events used for drawing case WM_SETCURSOR: if (hwnd == hImageArea) diff --git a/base/applications/osk/CMakeLists.txt b/base/applications/osk/CMakeLists.txt new file mode 100644 index 00000000000..1a145032cc0 --- /dev/null +++ b/base/applications/osk/CMakeLists.txt @@ -0,0 +1,10 @@ + +list(APPEND SOURCE + main.c + osk.h) + +add_executable(osk ${SOURCE} rsrc.rc) +set_module_type(osk win32gui UNICODE) +add_importlibs(osk comdlg32 shell32 user32 gdi32 advapi32 comctl32 msvcrt kernel32) +add_pch(osk osk.h SOURCE) +add_cd_file(TARGET osk DESTINATION reactos/system32 FOR all) diff --git a/base/applications/osk/lang/ar-DZ.rc b/base/applications/osk/lang/ar-DZ.rc new file mode 100644 index 00000000000..fa99defaaad --- /dev/null +++ b/base/applications/osk/lang/ar-DZ.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/ar-DZ.rc + * PURPOSE: Arabic (Algeria) translation for On screen keyboard + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_ARABIC, SUBLANG_DEFAULT + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "On screen keyboard" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Esc",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Prn",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Stop",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Attn",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "ذ",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "-",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "ض",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "ص",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "ث",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "ق",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "ف",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "غ",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "ع",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "ه",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "خ",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "ح",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "ج",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "د",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "\\",SCAN_CODE_29,366,61,35,22 + PUSHBUTTON "Verr maj",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "ش",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "س",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "ي",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "ب",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "ل",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "ا",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "ت",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "ن",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "م",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON "ك",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "ط",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,350,87,51,22,BS_ICON + PUSHBUTTON "shift",SCAN_CODE_44,3,113,57,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ئ",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "ء",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "ؤ",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "ر",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "ﻻ",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "ﻯ",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "ﺓ",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON "و",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON "ز",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "ظ",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "shift",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "del",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "end",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg AR",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg AV",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/de-DE.rc b/base/applications/osk/lang/de-DE.rc new file mode 100644 index 00000000000..704dfedabf3 --- /dev/null +++ b/base/applications/osk/lang/de-DE.rc @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/de-DE.rc + * PURPOSE: On screen keyboard (German resources). + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Bildschirmtastatur" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Esc",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Druck",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Rollen",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Pause",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "^",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "ß",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "´",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Z",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "Ü",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "+",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Feststell",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON "Ö",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "Ä",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "#",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "Ent",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "Umsch",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "<",SCAN_CODE_45,37,113,23,22 + PUSHBUTTON "Y",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "-",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "Umsch",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Strg",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "Alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "Alt Gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "Menü",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "Strg",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Einfg",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "Entf",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "Pos1",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "Ende",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "Bild auf",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "Bild ab",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "Num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ",",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "Ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Rollen",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/en-GB.rc b/base/applications/osk/lang/en-GB.rc new file mode 100644 index 00000000000..e3e541ba722 --- /dev/null +++ b/base/applications/osk/lang/en-GB.rc @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/en-GB.rc + * PURPOSE: On screen keyboard (English resources) + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "On screen keyboard" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Ech",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Prn",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Stop",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Attn",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "|",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "-",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "[",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "]",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON ";",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "'",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "#",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "Shift",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "\\",SCAN_CODE_45,37,113,23,22 + PUSHBUTTON "Z",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "/",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "Shift",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "can",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "End",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg up",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg down",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/en-US.rc b/base/applications/osk/lang/en-US.rc new file mode 100644 index 00000000000..9fd4035a053 --- /dev/null +++ b/base/applications/osk/lang/en-US.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/en-US.rc + * PURPOSE: On screen keyboard (American resources). + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "On screen keyboard" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Esc",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Prn",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Stop",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Attn",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "`",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "-",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "[",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "]",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "\\",SCAN_CODE_29,366,61,35,22 + PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON ";",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "'",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,350,87,51,22,BS_ICON + PUSHBUTTON "shift",SCAN_CODE_44,3,113,57,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Z",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "/",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "shift",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "del",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "end",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg up",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg down",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/es-ES.rc b/base/applications/osk/lang/es-ES.rc new file mode 100644 index 00000000000..52bf432891b --- /dev/null +++ b/base/applications/osk/lang/es-ES.rc @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/es-ES.rc + * PURPOSE: On screen keyboard (Spanish resources) + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Teclado visual" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "ech",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "imp",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "arr",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "att",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "°",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "'",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "¡",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "`",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "+",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Verr maj",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON "Ñ",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON ",",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "ç",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "maj",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "<",SCAN_CODE_45,37,113,23,22 + PUSHBUTTON "Z",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "-",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "maj",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "sup",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "fin",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg AR",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg AV",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/fr-CA.rc b/base/applications/osk/lang/fr-CA.rc new file mode 100644 index 00000000000..0cbbf7abb10 --- /dev/null +++ b/base/applications/osk/lang/fr-CA.rc @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/fr-CA.rc + * PURPOSE: On screen keyboard (French canadian resources) + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_CANADIAN + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Clavier visuel" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "ech",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "imp",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "arr",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "att",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "#",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "-",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "^",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "¨",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Verr maj",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON ";",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "`",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "<",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "maj",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "«",SCAN_CODE_45,37,113,23,22 + PUSHBUTTON "Z",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "/",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "maj",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "sup",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "fin",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg AR",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg AV",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/fr-FR.rc b/base/applications/osk/lang/fr-FR.rc new file mode 100644 index 00000000000..5e126341fc2 --- /dev/null +++ b/base/applications/osk/lang/fr-FR.rc @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/fr-FR.rc + * PURPOSE: On screen keyboard (French resources). + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Clavier visuel" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "ech",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "imp",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "arr",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "att",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "²",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "&&",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "é",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON """",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "'",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "(",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "-",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "è",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "_",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "ç",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "à",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON ")",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "Z",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "^",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "$",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Verr maj",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON "M",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "ù",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "*",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "maj",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "<",SCAN_CODE_45,37,113,23,22 + PUSHBUTTON "W",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON ",",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ";",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ":",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "!",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "maj",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "sup",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "fin",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg AR",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg AV",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/it-IT.rc b/base/applications/osk/lang/it-IT.rc new file mode 100644 index 00000000000..db2b4882759 --- /dev/null +++ b/base/applications/osk/lang/it-IT.rc @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/it-IT.rc + * PURPOSE: On screen keyboard (Italian resources) + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Tastiera visivo" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Esc",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Imp",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Arr",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Attn",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "\\",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0 ",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "'",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "|",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "è",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "+",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Verr maj",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON "ò",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "à",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "ù",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "Shift",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "<",SCAN_CODE_45,37,113,23,22 + PUSHBUTTON "Z",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "-",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "Shift",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "del",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "fin",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg up",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg down",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/pl-PL.rc b/base/applications/osk/lang/pl-PL.rc new file mode 100644 index 00000000000..4c89b54e312 --- /dev/null +++ b/base/applications/osk/lang/pl-PL.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/pl-PL.rc + * PURPOSE: On screen keyboard (Polish resources) + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Klawiatura Ekranowa" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Esc",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Prn",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Stop",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Attn",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "`",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "-",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "W",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "E",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "R",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "T",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Y",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "U",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "I",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "O",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "P",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "[",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "]",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "\\",SCAN_CODE_29,366,61,35,22 + PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "S",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "D",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "F",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "G",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "H",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "J",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "K",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "L",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON ";",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "'",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,350,87,51,22,BS_ICON + PUSHBUTTON "shift",SCAN_CODE_44,3,113,57,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Z",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "X",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "V",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "B",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "N",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "M",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON ",",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON ".",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON "/",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "shift",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "del",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "end",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg AR",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg AV",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/lang/ru-RU.rc b/base/applications/osk/lang/ru-RU.rc new file mode 100644 index 00000000000..a6a0a52e2f4 --- /dev/null +++ b/base/applications/osk/lang/ru-RU.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/lang/ru-RU.rc + * PURPOSE: On screen keyboard (Russian resources) + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 608, 164 +CAPTION "Клавиатура визуальный" +FONT 8, "MS Shell Dlg" +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE +BEGIN + PUSHBUTTON "Esc",SCAN_CODE_110,3,3,23,22 + PUSHBUTTON "F1",SCAN_CODE_112,48,3,23,22 + PUSHBUTTON "F2",SCAN_CODE_113,75,3,23,22 + PUSHBUTTON "F3",SCAN_CODE_114,101,3,23,22 + PUSHBUTTON "F4",SCAN_CODE_115,128,3,23,22 + PUSHBUTTON "F5",SCAN_CODE_116,173,3,23,22 + PUSHBUTTON "F6",SCAN_CODE_117,199,3,23,22 + PUSHBUTTON "F7",SCAN_CODE_118,225,3,23,22 + PUSHBUTTON "F8",SCAN_CODE_119,251,3,23,22 + PUSHBUTTON "F9",SCAN_CODE_120,296,3,23,22 + PUSHBUTTON "F10",SCAN_CODE_121,323,3,23,22 + PUSHBUTTON "F11",SCAN_CODE_122,350,3,23,22 + PUSHBUTTON "F12",SCAN_CODE_123,377,3,23,22 + PUSHBUTTON "Prn",SCAN_CODE_124,411,3,23,22 + PUSHBUTTON "Stop",SCAN_CODE_125,438,3,23,22 + PUSHBUTTON "Attn",SCAN_CODE_126,465,3,23,22 + PUSHBUTTON "Ë",SCAN_CODE_1,3,35,23,22 + PUSHBUTTON "1",SCAN_CODE_2,30,35,23,22 + PUSHBUTTON "2",SCAN_CODE_3,57,35,23,22 + PUSHBUTTON "3",SCAN_CODE_4,84,35,23,22 + PUSHBUTTON "4",SCAN_CODE_5,111,35,23,22 + PUSHBUTTON "5",SCAN_CODE_6,138,35,23,22 + PUSHBUTTON "6",SCAN_CODE_7,165,35,23,22 + PUSHBUTTON "7",SCAN_CODE_8,192,35,23,22 + PUSHBUTTON "8",SCAN_CODE_9,219,35,23,22 + PUSHBUTTON "9",SCAN_CODE_10,246,35,23,22 + PUSHBUTTON "0",SCAN_CODE_11,273,35,23,22 + PUSHBUTTON "-",SCAN_CODE_12,300,35,23,22 + PUSHBUTTON "=",SCAN_CODE_13,327,35,23,22 + PUSHBUTTON "<--",SCAN_CODE_15,354,35,47,22,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,61,35,22,BS_ICON + PUSHBUTTON "Й",SCAN_CODE_17,42,61,23,22 + PUSHBUTTON "Ц",SCAN_CODE_18,69,61,23,22 + PUSHBUTTON "У",SCAN_CODE_19,96,61,23,22 + PUSHBUTTON "К",SCAN_CODE_20,123,61,23,22 + PUSHBUTTON "E",SCAN_CODE_21,150,61,23,22 + PUSHBUTTON "Н",SCAN_CODE_22,177,61,23,22 + PUSHBUTTON "Г",SCAN_CODE_23,204,61,23,22 + PUSHBUTTON "Ш",SCAN_CODE_24,231,61,23,22 + PUSHBUTTON "Щ",SCAN_CODE_25,258,61,23,22 + PUSHBUTTON "З",SCAN_CODE_26,285,61,23,22 + PUSHBUTTON "X",SCAN_CODE_27,312,61,23,22 + PUSHBUTTON "Ъ",SCAN_CODE_28,339,61,23,22 + PUSHBUTTON "Caps lock",SCAN_CODE_30,3,87,46,22,BS_ICON + PUSHBUTTON "Ф",SCAN_CODE_31,53,87,23,22 + PUSHBUTTON "Ы",SCAN_CODE_32,80,87,23,22 + PUSHBUTTON "В",SCAN_CODE_33,107,87,23,22 + PUSHBUTTON "A",SCAN_CODE_34,134,87,23,22 + PUSHBUTTON "П",SCAN_CODE_35,161,87,23,22 + PUSHBUTTON "P",SCAN_CODE_36,188,87,23,22 + PUSHBUTTON "O",SCAN_CODE_37,215,87,23,22 + PUSHBUTTON "Л",SCAN_CODE_38,242,87,23,22 + PUSHBUTTON "Д",SCAN_CODE_39,269,87,23,22 + PUSHBUTTON "Ж",SCAN_CODE_40,296,87,23,22 + PUSHBUTTON "Э",SCAN_CODE_41,323,87,23,22 + PUSHBUTTON "\\",SCAN_CODE_42,350,87,23,22 + PUSHBUTTON "ret",SCAN_CODE_43,377,61,23,48,BS_ICON + PUSHBUTTON "shift",SCAN_CODE_44,3,113,57,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Я",SCAN_CODE_46,64,113,23,22 + PUSHBUTTON "Ч",SCAN_CODE_47,91,113,23,22 + PUSHBUTTON "C",SCAN_CODE_48,118,113,23,22 + PUSHBUTTON "M",SCAN_CODE_49,145,113,23,22 + PUSHBUTTON "И",SCAN_CODE_50,172,113,23,22 + PUSHBUTTON "T",SCAN_CODE_51,199,113,23,22 + PUSHBUTTON "b",SCAN_CODE_52,226,113,23,22 + PUSHBUTTON "Б",SCAN_CODE_53,253,113,23,22 + PUSHBUTTON "Ю",SCAN_CODE_54,280,113,23,22 + PUSHBUTTON ".",SCAN_CODE_55,307,113,23,22 + PUSHBUTTON "shift",SCAN_CODE_57,334,113,67,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ctrl",SCAN_CODE_58,3,139,41,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,48,139,30,22,BS_ICON + PUSHBUTTON "alt",SCAN_CODE_60,82,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,116,139,143,22 + PUSHBUTTON "alt gr",SCAN_CODE_62,264,139,30,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,298,139,30,22,BS_ICON + PUSHBUTTON "menu",SCAN_CODE_129,332,139,30,22,BS_ICON + PUSHBUTTON "ctrl",SCAN_CODE_64,366,139,35,22,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ins",SCAN_CODE_75,411,35,23,22 + PUSHBUTTON "del",SCAN_CODE_76,411,61,23,22 + PUSHBUTTON "home",SCAN_CODE_80,438,35,23,22,BS_ICON + PUSHBUTTON "end",SCAN_CODE_81,438,61,23,22 + PUSHBUTTON "pg AR",SCAN_CODE_85,465,35,23,22,BS_ICON + PUSHBUTTON "pg AV",SCAN_CODE_86,465,61,23,22,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,411,139,23,22,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,438,113,23,22,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,438,139,23,22,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,465,139,23,22,BS_ICON + PUSHBUTTON "num",SCAN_CODE_90,500,35,23,22 + PUSHBUTTON "7",SCAN_CODE_91,500,61,23,22 + PUSHBUTTON "4",SCAN_CODE_92,500,87,23,22 + PUSHBUTTON "1",SCAN_CODE_93,500,113,23,22 + PUSHBUTTON "/",SCAN_CODE_95,527,35,23,22 + PUSHBUTTON "8",SCAN_CODE_96,527,61,23,22 + PUSHBUTTON "5",SCAN_CODE_97,527,87,23,22 + PUSHBUTTON "2",SCAN_CODE_98,527,113,23,22 + PUSHBUTTON "0",SCAN_CODE_99,500,139,50,22 + PUSHBUTTON "*",SCAN_CODE_100,554,35,23,22 + PUSHBUTTON "9",SCAN_CODE_101,554,61,23,22 + PUSHBUTTON "6",SCAN_CODE_102,554,87,23,22 + PUSHBUTTON "3",SCAN_CODE_103,554,113,23,22 + PUSHBUTTON ".",SCAN_CODE_104,554,139,23,22 + PUSHBUTTON "-",SCAN_CODE_105,581,35,23,22 + PUSHBUTTON "+",SCAN_CODE_106,581,61,23,48 + PUSHBUTTON "ent",SCAN_CODE_108,581,113,23,48 + CTEXT "Num",IDC_STATIC,510,4,21,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,518,16,4,3 + CTEXT "Caps",IDC_STATIC,540,4,21,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,548,16,4,3 + CTEXT "Scroll",IDC_STATIC,572,4,21,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3 +END + +/* EOF */ diff --git a/base/applications/osk/main.c b/base/applications/osk/main.c new file mode 100644 index 00000000000..1d05285ac23 --- /dev/null +++ b/base/applications/osk/main.c @@ -0,0 +1,395 @@ +/* + * PROJECT: ReactOS On-Screen Keyboard + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/main.c + * PURPOSE: On-screen keyboard. + * PROGRAMMERS: Denis ROBERT + */ + +/* INCLUDES *******************************************************************/ + +#include "osk.h" + +/* GLOBALS ********************************************************************/ + +OSK_GLOBALS Globals; + +/* Functions */ +int OSK_SetImage(int IdDlgItem, int IdResource); +int OSK_DlgInitDialog(HWND hDlg); +int OSK_DlgClose(void); +int OSK_DlgTimer(void); +BOOL OSK_DlgCommand(WPARAM wCommand, HWND hWndControl); +BOOL OSK_ReleaseKey(WORD ScanCode); + +INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); +int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int); + +/* FUNCTIONS ******************************************************************/ + +/*********************************************************************** + * + * OSK_SetImage + * + * Set an image on a button + */ +int OSK_SetImage(int IdDlgItem, int IdResource) +{ + HICON hIcon; + HWND hWndItem; + + hIcon = (HICON)LoadImage(Globals.hInstance, MAKEINTRESOURCE(IdResource), + IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); + if (hIcon == NULL) return FALSE; + + hWndItem = GetDlgItem(Globals.hMainWnd, IdDlgItem); + if (hWndItem == NULL) return FALSE; + + SendMessage(hWndItem, BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon); + + /* The system automatically deletes these resources when the process that created them terminates (MSDN) */ + + return TRUE; +} + + +/*********************************************************************** + * + * OSK_DlgInitDialog + * + * Handling of WM_INITDIALOG + */ +int OSK_DlgInitDialog(HWND hDlg) +{ + HMONITOR monitor; + MONITORINFO info; + POINT Pt; + RECT rcWindow; + + /* Save handle */ + Globals.hMainWnd = hDlg; + + /* Get screen info */ + memset(&Pt, 0, sizeof(Pt)); + monitor = MonitorFromPoint(Pt, MONITOR_DEFAULTTOPRIMARY ); + info.cbSize = sizeof(info); + GetMonitorInfoW(monitor, &info); + + /* Move the dialog on the bottom of main screen */ + GetWindowRect(hDlg, &rcWindow); + MoveWindow(hDlg, + (info.rcMonitor.left + info.rcMonitor.right) / 2 - // Center of screen + (rcWindow.right - rcWindow.left) / 2, // - half size of dialog + info.rcMonitor.bottom - // Bottom of screen + (rcWindow.bottom - rcWindow.top), // - size of window + rcWindow.right - rcWindow.left, // Width + rcWindow.bottom - rcWindow.top, // Height + TRUE); + + /* Set icon on visual buttons */ + OSK_SetImage(SCAN_CODE_15, IDI_BACK); + OSK_SetImage(SCAN_CODE_16, IDI_TAB); + OSK_SetImage(SCAN_CODE_30, IDI_CAPS_LOCK); + OSK_SetImage(SCAN_CODE_43, IDI_RETURN); + OSK_SetImage(SCAN_CODE_44, IDI_SHIFT); + OSK_SetImage(SCAN_CODE_57, IDI_SHIFT); + OSK_SetImage(SCAN_CODE_127, IDI_REACTOS); + OSK_SetImage(SCAN_CODE_128, IDI_REACTOS); + OSK_SetImage(SCAN_CODE_129, IDI_MENU); + OSK_SetImage(SCAN_CODE_80, IDI_HOME); + OSK_SetImage(SCAN_CODE_85, IDI_PG_UP); + OSK_SetImage(SCAN_CODE_86, IDI_PG_DOWN); + OSK_SetImage(SCAN_CODE_79, IDI_LEFT); + OSK_SetImage(SCAN_CODE_83, IDI_TOP); + OSK_SetImage(SCAN_CODE_84, IDI_BOTTOM); + OSK_SetImage(SCAN_CODE_89, IDI_RIGHT); + + /* Create a green brush for leds */ + Globals.hBrushGreenLed = CreateSolidBrush(RGB(0, 255, 0)); + + /* Set a timer for periodics tasks */ + Globals.iTimer = SetTimer(hDlg, 0, 200, NULL); + + return TRUE; +} + +/*********************************************************************** + * + * OSK_DlgClose + * + * Handling of WM_CLOSE + */ +int OSK_DlgClose(void) +{ + KillTimer(Globals.hMainWnd, Globals.iTimer); + + /* Release Ctrl, Shift, Alt keys */ + OSK_ReleaseKey(SCAN_CODE_44); // Left shift + OSK_ReleaseKey(SCAN_CODE_57); // Right shift + OSK_ReleaseKey(SCAN_CODE_58); // Left ctrl + OSK_ReleaseKey(SCAN_CODE_60); // Left alt + OSK_ReleaseKey(SCAN_CODE_62); // Right alt + OSK_ReleaseKey(SCAN_CODE_64); // Right ctrl + + /* delete GDI objects */ + if (Globals.hBrushGreenLed) DeleteObject(Globals.hBrushGreenLed); + + return TRUE; +} + +/*********************************************************************** + * + * OSK_DlgTimer + * + * Handling of WM_TIMER + */ +int OSK_DlgTimer(void) +{ + /* FIXME: To be deleted when Reactos will support WS_EX_NOACTIVATE */ + HWND hWndActiveWindow; + + hWndActiveWindow = GetForegroundWindow(); + if (hWndActiveWindow != NULL && hWndActiveWindow != Globals.hMainWnd) + { + Globals.hActiveWnd = hWndActiveWindow; + } + + /* Always redraw leds because it can be changed by the real keyboard) */ + InvalidateRect(GetDlgItem(Globals.hMainWnd, IDC_LED_NUM), NULL, TRUE); + InvalidateRect(GetDlgItem(Globals.hMainWnd, IDC_LED_CAPS), NULL, TRUE); + InvalidateRect(GetDlgItem(Globals.hMainWnd, IDC_LED_SCROLL), NULL, TRUE); + + return TRUE; +} + +/*********************************************************************** + * + * OSK_DlgCommand + * + * All handling of dialog command + */ +BOOL OSK_DlgCommand(WPARAM wCommand, HWND hWndControl) +{ + WORD ScanCode; + INPUT Input; + BOOL bExtendedKey; + BOOL bKeyDown; + BOOL bKeyUp; + LONG WindowStyle; + + /* FIXME: To be deleted when Reactos will support WS_EX_NOACTIVATE */ + if (Globals.hActiveWnd) + { + MSG msg; + + SetForegroundWindow(Globals.hActiveWnd); + while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + /* KeyDown and/or KeyUp ? */ + WindowStyle = GetWindowLong(hWndControl, GWL_STYLE); + if ((WindowStyle & BS_AUTOCHECKBOX) == BS_AUTOCHECKBOX) + { + /* 2-states key like Shift, Alt, Ctrl, ... */ + if (SendMessage(hWndControl, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + bKeyDown = TRUE; + bKeyUp = FALSE; + } + else + { + bKeyDown = FALSE; + bKeyUp = TRUE; + } + } + else + { + /* Other key */ + bKeyDown = TRUE; + bKeyUp = TRUE; + } + + /* Extended key ? */ + ScanCode = wCommand; + if (ScanCode & 0x0200) + bExtendedKey = TRUE; + else + bExtendedKey = FALSE; + ScanCode &= 0xFF; + + /* Press and release the key */ + if (bKeyDown) + { + Input.type = INPUT_KEYBOARD; + Input.ki.wVk = 0; + Input.ki.wScan = ScanCode; + Input.ki.time = GetTickCount(); + Input.ki.dwExtraInfo = GetMessageExtraInfo(); + Input.ki.dwFlags = KEYEVENTF_SCANCODE; + if (bExtendedKey) Input.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; + SendInput(1, &Input, sizeof(Input)); + } + + if (bKeyUp) + { + Input.type = INPUT_KEYBOARD; + Input.ki.wVk = 0; + Input.ki.wScan = ScanCode; + Input.ki.time = GetTickCount(); + Input.ki.dwExtraInfo = GetMessageExtraInfo(); + Input.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; + if (bExtendedKey) Input.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; + SendInput(1, &Input, sizeof(Input)); + } + + return TRUE; +} + +/*********************************************************************** + * + * OSK_ReleaseKey + * + * Release the key of ID wCommand + */ +BOOL OSK_ReleaseKey(WORD ScanCode) +{ + INPUT Input; + BOOL bExtendedKey; + LONG WindowStyle; + HWND hWndControl; + + /* Is it a 2-states key ? */ + hWndControl = GetDlgItem(Globals.hMainWnd, ScanCode); + WindowStyle = GetWindowLong(hWndControl, GWL_STYLE); + if ((WindowStyle & BS_AUTOCHECKBOX) != BS_AUTOCHECKBOX) return FALSE; + + /* Is the key down ? */ + if (SendMessage(hWndControl, BM_GETCHECK, 0, 0) != BST_CHECKED) return TRUE; + + /* Extended key ? */ + if (ScanCode & 0x0200) + bExtendedKey = TRUE; + else + bExtendedKey = FALSE; + ScanCode &= 0xFF; + + /* Release the key */ + Input.type = INPUT_KEYBOARD; + Input.ki.wVk = 0; + Input.ki.wScan = ScanCode; + Input.ki.time = GetTickCount(); + Input.ki.dwExtraInfo = GetMessageExtraInfo(); + Input.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; + if (bExtendedKey) Input.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; + SendInput(1, &Input, sizeof(Input)); + + return TRUE; +} + +/*********************************************************************** + * + * OSK_DlgProc + */ +INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + OSK_DlgInitDialog(hDlg); + return TRUE; + + case WM_TIMER: + OSK_DlgTimer(); + return TRUE; + + case WM_CTLCOLORSTATIC: + if ((HWND)lParam == GetDlgItem(hDlg, IDC_LED_NUM)) + { + if (GetKeyState(VK_NUMLOCK) & 0x0001) + return (INT_PTR)Globals.hBrushGreenLed; + else + return (INT_PTR)GetStockObject(BLACK_BRUSH); + } + if ((HWND)lParam == GetDlgItem(hDlg, IDC_LED_CAPS)) + { + if (GetKeyState(VK_CAPITAL) & 0x0001) + return (INT_PTR)Globals.hBrushGreenLed; + else + return (INT_PTR)GetStockObject(BLACK_BRUSH); + } + if ((HWND)lParam == GetDlgItem(hDlg, IDC_LED_SCROLL)) + { + if (GetKeyState(VK_SCROLL) & 0x0001) + return (INT_PTR)Globals.hBrushGreenLed; + else + return (INT_PTR)GetStockObject(BLACK_BRUSH); + } + break; + + case WM_COMMAND: + if (wParam == IDCANCEL) + EndDialog(hDlg, FALSE); + else if (wParam != IDC_STATIC) + OSK_DlgCommand(wParam, (HWND) lParam); + break; + + case WM_CLOSE: + OSK_DlgClose(); + break; + } + + return 0; +} + +/*********************************************************************** + * + * WinMain + */ +int WINAPI _tWinMain(HINSTANCE hInstance, + HINSTANCE prev, + LPTSTR cmdline, + int show) +{ + HANDLE hMutex; + + UNREFERENCED_PARAMETER(prev); + UNREFERENCED_PARAMETER(cmdline); + UNREFERENCED_PARAMETER(show); + + ZeroMemory(&Globals, sizeof(Globals)); + Globals.hInstance = hInstance; + + /* Rry to open a mutex for a single instance */ + hMutex = OpenMutexA(MUTEX_ALL_ACCESS, FALSE, "osk"); + + if (!hMutex) + { + /* Mutex doesnt exist. This is the first instance so create the mutex. */ + hMutex = CreateMutexA(NULL, FALSE, "osk"); + + DialogBox(hInstance, + MAKEINTRESOURCE(MAIN_DIALOG), + GetDesktopWindow(), + OSK_DlgProc); + + /* Delete the mutex */ + if (hMutex) CloseHandle(hMutex); + } + else + { + /* Programme already launched */ + + /* Delete the mutex */ + CloseHandle(hMutex); + + ExitProcess(0); + } + + return 0; +} + +/* EOF */ diff --git a/base/applications/osk/main.h b/base/applications/osk/main.h new file mode 100644 index 00000000000..9c698e6aa7e --- /dev/null +++ b/base/applications/osk/main.h @@ -0,0 +1,36 @@ +/* + * PROJECT: ReactOS On-Screen Keyboard + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/main.h + * PURPOSE: On screen keyboard. + * PROGRAMMERS: Denis ROBERT + */ + +#ifndef _OSKMAIN_H +#define _OSKMAIN_H + +/* INCLUDES *******************************************************************/ + +#include "osk_res.h" + +/* TYPES **********************************************************************/ + +typedef struct +{ + HINSTANCE hInstance; + HWND hMainWnd; + HBRUSH hBrushGreenLed; + UINT_PTR iTimer; + /* FIXME: To be deleted when ReactOS will support WS_EX_NOACTIVATE */ + HWND hActiveWnd; +} OSK_GLOBALS; + +/* DEFINES ********************************************************************/ + +extern OSK_GLOBALS Globals; + +#define countof(x) (sizeof(x) / sizeof((x)[0])) + +#endif + +/* EOF */ diff --git a/base/applications/osk/osk.h b/base/applications/osk/osk.h new file mode 100644 index 00000000000..7e048489e00 --- /dev/null +++ b/base/applications/osk/osk.h @@ -0,0 +1,23 @@ +/* + * PROJECT: ReactOS On-Screen Keyboard + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/osk.h + * PURPOSE: On screen keyboard. + * PROGRAMMERS: Denis ROBERT + */ + +#ifndef _OSK_H +#define _OSK_H + +/* INCLUDES ******************************************************************/ + +#include +#include + +#include + +#include "main.h" + +#endif + +/* EOF */ diff --git a/base/applications/osk/osk_res.h b/base/applications/osk/osk_res.h new file mode 100644 index 00000000000..3c88d8bafcd --- /dev/null +++ b/base/applications/osk/osk_res.h @@ -0,0 +1,146 @@ +/* + * PROJECT: ReactOS On-Screen Keyboard + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/osk_res.h + * PURPOSE: On screen keyboard. + * PROGRAMMERS: Denis ROBERT + */ + +#define MAIN_DIALOG 2000 + +#define IDC_LED_NUM 100 +#define IDC_LED_CAPS 101 +#define IDC_LED_SCROLL 102 + +#define IDI_OSK 200 +#define IDI_BACK 201 +#define IDI_TAB 202 +#define IDI_CAPS_LOCK 203 +#define IDI_RETURN 204 +#define IDI_SHIFT 205 +#define IDI_REACTOS 206 +#define IDI_MENU 207 +#define IDI_HOME 208 +#define IDI_PG_UP 209 +#define IDI_PG_DOWN 210 +#define IDI_LEFT 211 +#define IDI_TOP 212 +#define IDI_RIGHT 213 +#define IDI_BOTTOM 214 + +#define IDC_STATIC -1 + + +/* Scan codes by key number */ +/* + 0x0100 to avoid a conflict with IDCANCEL = 2 */ +/* + 0x0200 if extended key */ + +#define SCAN_CODE_1 0x0129 +#define SCAN_CODE_2 0x0102 +#define SCAN_CODE_3 0x0103 +#define SCAN_CODE_4 0x0104 +#define SCAN_CODE_5 0x0105 +#define SCAN_CODE_6 0x0106 +#define SCAN_CODE_7 0x0107 +#define SCAN_CODE_8 0x0108 +#define SCAN_CODE_9 0x0109 +#define SCAN_CODE_10 0x010A +#define SCAN_CODE_11 0x010B +#define SCAN_CODE_12 0x010C +#define SCAN_CODE_13 0x010D +#define SCAN_CODE_15 0x010E +#define SCAN_CODE_16 0x010F +#define SCAN_CODE_17 0x0110 +#define SCAN_CODE_18 0x0111 +#define SCAN_CODE_19 0x0112 +#define SCAN_CODE_20 0x0113 +#define SCAN_CODE_21 0x0114 +#define SCAN_CODE_22 0x0115 +#define SCAN_CODE_23 0x0116 +#define SCAN_CODE_24 0x0117 +#define SCAN_CODE_25 0x0118 +#define SCAN_CODE_26 0x0119 +#define SCAN_CODE_27 0x011A +#define SCAN_CODE_28 0x011B +#define SCAN_CODE_29 0x012B +#define SCAN_CODE_30 0x013A +#define SCAN_CODE_31 0x011E +#define SCAN_CODE_32 0x011F +#define SCAN_CODE_33 0x0120 +#define SCAN_CODE_34 0x0121 +#define SCAN_CODE_35 0x0122 +#define SCAN_CODE_36 0x0123 +#define SCAN_CODE_37 0x0124 +#define SCAN_CODE_38 0x0125 +#define SCAN_CODE_39 0x0126 +#define SCAN_CODE_40 0x0127 +#define SCAN_CODE_41 0x0128 +#define SCAN_CODE_42 0x012B +#define SCAN_CODE_43 0x011C +#define SCAN_CODE_44 0x012A +#define SCAN_CODE_45 0x0156 +#define SCAN_CODE_46 0x012C +#define SCAN_CODE_47 0x012D +#define SCAN_CODE_48 0x012E +#define SCAN_CODE_49 0x012F +#define SCAN_CODE_50 0x0130 +#define SCAN_CODE_51 0x0131 +#define SCAN_CODE_52 0x0132 +#define SCAN_CODE_53 0x0133 +#define SCAN_CODE_54 0x0134 +#define SCAN_CODE_55 0x0135 +#define SCAN_CODE_57 0x0136 +#define SCAN_CODE_58 0x011D +#define SCAN_CODE_60 0x0138 +#define SCAN_CODE_61 0x0139 +#define SCAN_CODE_62 0x0338 +#define SCAN_CODE_64 0x031D +#define SCAN_CODE_75 0x0352 +#define SCAN_CODE_76 0x0353 +#define SCAN_CODE_79 0x034B +#define SCAN_CODE_80 0x0347 +#define SCAN_CODE_81 0x034F +#define SCAN_CODE_83 0x0348 +#define SCAN_CODE_84 0x0350 +#define SCAN_CODE_85 0x0349 +#define SCAN_CODE_86 0x0351 +#define SCAN_CODE_89 0x034D +#define SCAN_CODE_90 0x0145 +#define SCAN_CODE_91 0x0147 +#define SCAN_CODE_92 0x014B +#define SCAN_CODE_93 0x014F +#define SCAN_CODE_95 0x0335 +#define SCAN_CODE_96 0x0148 +#define SCAN_CODE_97 0x014C +#define SCAN_CODE_98 0x0150 +#define SCAN_CODE_99 0x0152 +#define SCAN_CODE_100 0x0137 +#define SCAN_CODE_101 0x0149 +#define SCAN_CODE_102 0x014D +#define SCAN_CODE_103 0x0151 +#define SCAN_CODE_104 0x0153 +#define SCAN_CODE_105 0x014A +#define SCAN_CODE_106 0x014E +#define SCAN_CODE_108 0x031C +#define SCAN_CODE_110 0x0101 +#define SCAN_CODE_112 0x013B +#define SCAN_CODE_113 0x013C +#define SCAN_CODE_114 0x013D +#define SCAN_CODE_115 0x013E +#define SCAN_CODE_116 0x013F +#define SCAN_CODE_117 0x0140 +#define SCAN_CODE_118 0x0141 +#define SCAN_CODE_119 0x0142 +#define SCAN_CODE_120 0x0143 +#define SCAN_CODE_121 0x0144 +#define SCAN_CODE_122 0x0157 +#define SCAN_CODE_123 0x0158 +#define SCAN_CODE_124 0x032A +#define SCAN_CODE_125 0x0146 +#define SCAN_CODE_126 0x071D + +#define SCAN_CODE_127 0x035B // Left ROS +#define SCAN_CODE_128 0x035C // Right ROS +#define SCAN_CODE_129 0x035D // Applications + +/* EOF */ diff --git a/base/applications/osk/res/back.ico b/base/applications/osk/res/back.ico new file mode 100644 index 00000000000..de989b79cdd Binary files /dev/null and b/base/applications/osk/res/back.ico differ diff --git a/base/applications/osk/res/bottom.ico b/base/applications/osk/res/bottom.ico new file mode 100644 index 00000000000..749c578a41e Binary files /dev/null and b/base/applications/osk/res/bottom.ico differ diff --git a/base/applications/osk/res/caps_lock.ico b/base/applications/osk/res/caps_lock.ico new file mode 100644 index 00000000000..844933d0f9f Binary files /dev/null and b/base/applications/osk/res/caps_lock.ico differ diff --git a/base/applications/osk/res/home.ico b/base/applications/osk/res/home.ico new file mode 100644 index 00000000000..d3661b112fc Binary files /dev/null and b/base/applications/osk/res/home.ico differ diff --git a/base/applications/osk/res/left.ico b/base/applications/osk/res/left.ico new file mode 100644 index 00000000000..14ce00c4b81 Binary files /dev/null and b/base/applications/osk/res/left.ico differ diff --git a/base/applications/osk/res/menu.ico b/base/applications/osk/res/menu.ico new file mode 100644 index 00000000000..81a4e41f742 Binary files /dev/null and b/base/applications/osk/res/menu.ico differ diff --git a/base/applications/osk/res/osk.ico b/base/applications/osk/res/osk.ico new file mode 100644 index 00000000000..29a655acbbe Binary files /dev/null and b/base/applications/osk/res/osk.ico differ diff --git a/base/applications/osk/res/pg_down.ico b/base/applications/osk/res/pg_down.ico new file mode 100644 index 00000000000..bff5db71209 Binary files /dev/null and b/base/applications/osk/res/pg_down.ico differ diff --git a/base/applications/osk/res/pg_up.ico b/base/applications/osk/res/pg_up.ico new file mode 100644 index 00000000000..7704ad4d196 Binary files /dev/null and b/base/applications/osk/res/pg_up.ico differ diff --git a/base/applications/osk/res/reactos.ico b/base/applications/osk/res/reactos.ico new file mode 100644 index 00000000000..24b3225f370 Binary files /dev/null and b/base/applications/osk/res/reactos.ico differ diff --git a/base/applications/osk/res/return.ico b/base/applications/osk/res/return.ico new file mode 100644 index 00000000000..2f0fdf7ce6a Binary files /dev/null and b/base/applications/osk/res/return.ico differ diff --git a/base/applications/osk/res/right.ico b/base/applications/osk/res/right.ico new file mode 100644 index 00000000000..5e2a239356b Binary files /dev/null and b/base/applications/osk/res/right.ico differ diff --git a/base/applications/osk/res/shift.ico b/base/applications/osk/res/shift.ico new file mode 100644 index 00000000000..02b50f05d93 Binary files /dev/null and b/base/applications/osk/res/shift.ico differ diff --git a/base/applications/osk/res/tab.ico b/base/applications/osk/res/tab.ico new file mode 100644 index 00000000000..41854dad96a Binary files /dev/null and b/base/applications/osk/res/tab.ico differ diff --git a/base/applications/osk/res/top.ico b/base/applications/osk/res/top.ico new file mode 100644 index 00000000000..20725d90845 Binary files /dev/null and b/base/applications/osk/res/top.ico differ diff --git a/base/applications/osk/rsrc.rc b/base/applications/osk/rsrc.rc new file mode 100644 index 00000000000..6cd47be5c26 --- /dev/null +++ b/base/applications/osk/rsrc.rc @@ -0,0 +1,77 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/osk/rsrc.rc + * PURPOSE: On Screen Keyboard + * PROGRAMMERS: Denis ROBERT + */ + +/* INCLUDES ******************************************************************/ +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "main.h" +#include "winnls.h" +#include "commctrl.h" +#include "osk_res.h" + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS On Screen Keyboard" +#define REACTOS_STR_INTERNAL_NAME "osk" +#define REACTOS_STR_ORIGINAL_FILENAME "osk.exe" + +#include + +IDI_OSK ICON "res/osk.ico" + + +IDI_BACK ICON "res/back.ico" +IDI_TAB ICON "res/tab.ico" +IDI_CAPS_LOCK ICON "res/caps_lock.ico" +IDI_RETURN ICON "res/return.ico" +IDI_SHIFT ICON "res/shift.ico" +IDI_REACTOS ICON "res/reactos.ico" +IDI_MENU ICON "res/menu.ico" +IDI_HOME ICON "res/home.ico" +IDI_PG_UP ICON "res/pg_up.ico" +IDI_PG_DOWN ICON "res/pg_down.ico" +IDI_LEFT ICON "res/left.ico" +IDI_TOP ICON "res/top.ico" +IDI_RIGHT ICON "res/right.ico" +IDI_BOTTOM ICON "res/bottom.ico" + +#include + +// UTF-8 +#pragma code_page(65001) +#ifdef LANGUAGE_AR_DZ + #include "lang/ar-DZ.rc" +#endif +#ifdef LANGUAGE_DE_DE + #include "lang/de-DE.rc" +#endif +#ifdef LANGUAGE_EN_US + #include "lang/en-US.rc" +#endif +#ifdef LANGUAGE_EN_GB + #include "lang/en-GB.rc" +#endif +#ifdef LANGUAGE_ES_ES + #include "lang/es-ES.rc" +#endif +#ifdef LANGUAGE_FR_CA + #include "lang/fr-CA.rc" +#endif +#ifdef LANGUAGE_FR_FR + #include "lang/fr-FR.rc" +#endif +#ifdef LANGUAGE_IT_IT + #include "lang/it-IT.rc" +#endif +#ifdef LANGUAGE_PL_PL + #include "lang/pl-PL.rc" +#endif +#ifdef LANGUAGE_RU_RU + #include "lang/ru-RU.rc" +#endif + +/* EOF */ diff --git a/base/applications/shutdown/shutdown.c b/base/applications/shutdown/shutdown.c index b162d7a78ea..58e3dec2576 100644 --- a/base/applications/shutdown/shutdown.c +++ b/base/applications/shutdown/shutdown.c @@ -281,7 +281,7 @@ int wmain(int argc, WCHAR *argv[]) } /* Ensure that the timout amount is not too high or a negative number */ - if ((opts.shutdown_delay < 0) || (opts.shutdown_delay > MAX_TIMEOUT)) + if (opts.shutdown_delay > MAX_SHUTDOWN_TIMEOUT) { PrintResourceString(IDS_ERROR_TIMEOUT, opts.shutdown_delay); return EXIT_FAILURE; diff --git a/base/applications/taskmgr/endproc.c b/base/applications/taskmgr/endproc.c index a26fd764c62..b831d3a94d9 100644 --- a/base/applications/taskmgr/endproc.c +++ b/base/applications/taskmgr/endproc.c @@ -3,8 +3,9 @@ * * endproc.c * - * Copyright (C) 1999 - 2001 Brian Palmer - * 2005 Klemens Friedl + * Copyright (C) 1999 - 2001 Brian Palmer + * 2005 Klemens Friedl + * 2014 Ismael Ferreras Morezuelas * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22,6 +23,8 @@ */ #include "precomp.h" +#include +#include void ProcessPage_OnEndProcess(void) { @@ -35,31 +38,74 @@ void ProcessPage_OnEndProcess(void) if (dwProcessId == 0) return; + hProcess = OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION, FALSE, dwProcessId); + + /* forbid killing system processes even if we have privileges -- sigh, windows kludge! */ + if (hProcess && IsCriticalProcess(hProcess)) + { + LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256); + LoadStringW(hInst, IDS_MSG_CLOSESYSTEMPROCESS, strErrorText, 256); + MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONWARNING|MB_TOPMOST); + CloseHandle(hProcess); + return; + } + + /* if this is a standard process just ask for confirmation before doing it */ LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256); LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256); - if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES) + if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING|MB_TOPMOST) != IDYES) + { + if (hProcess) CloseHandle(hProcess); return; + } - hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); - + /* no such process or not enough privileges to open its token */ if (!hProcess) { GetLastErrorText(strErrorText, 260); LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256); - MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP); + MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP|MB_TOPMOST); return; } + /* try to kill it, and notify the user if didn't work */ if (!TerminateProcess(hProcess, 1)) { GetLastErrorText(strErrorText, 260); LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256); - MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP); + MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP|MB_TOPMOST); } CloseHandle(hProcess); } +BOOL IsCriticalProcess(HANDLE hProcess) +{ + NTSTATUS status; + ULONG BreakOnTermination; + + /* return early if the process handle does not exist */ + if (!hProcess) + return FALSE; + + /* the important system processes that we don't want to let the user + kill come marked as critical, this simplifies the check greatly. + + a critical process brings the system down when is terminated: + */ + + status = NtQueryInformationProcess(hProcess, + ProcessBreakOnTermination, + &BreakOnTermination, + sizeof(ULONG), + NULL); + + if (NT_SUCCESS(status) && BreakOnTermination) + return TRUE; + + return FALSE; +} + void ProcessPage_OnEndProcessTree(void) { DWORD dwProcessId; @@ -72,12 +118,25 @@ void ProcessPage_OnEndProcessTree(void) if (dwProcessId == 0) return; + hProcess = OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION, FALSE, dwProcessId); + + /* forbid killing system processes even if we have privileges -- sigh, windows kludge! */ + if (hProcess && IsCriticalProcess(hProcess)) + { + LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256); + LoadStringW(hInst, IDS_MSG_CLOSESYSTEMPROCESS, strErrorText, 256); + MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONWARNING|MB_TOPMOST); + CloseHandle(hProcess); + return; + } + LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256); LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256); if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES) + { + if (hProcess) CloseHandle(hProcess); return; - - hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); + } if (!hProcess) { diff --git a/base/applications/taskmgr/endproc.h b/base/applications/taskmgr/endproc.h index 934a4c122be..2351e85967d 100644 --- a/base/applications/taskmgr/endproc.h +++ b/base/applications/taskmgr/endproc.h @@ -23,4 +23,5 @@ #pragma once void ProcessPage_OnEndProcess(void); +BOOL IsCriticalProcess(HANDLE hProcess); void ProcessPage_OnEndProcessTree(void); diff --git a/base/applications/taskmgr/lang/bg-BG.rc b/base/applications/taskmgr/lang/bg-BG.rc index 9a381020513..df398ba4575 100644 --- a/base/applications/taskmgr/lang/bg-BG.rc +++ b/base/applications/taskmgr/lang/bg-BG.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Предупреждение на задачния управител" IDS_MSG_WARNINGTERMINATING "ВНИМАНИЕ: Прекратяването на действие може да доведе до нежелани\nпоследствия, включително до загуба на данни и неусточйивост на системата.\nДействието няма да има възможност да запише състоянието и\nданните си, преди да приключи. Сигурен ли сте, че искате да\nпрекратите действието?" IDS_MSG_UNABLETERMINATEPRO "Невъзможно прекратяване на действие" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Невъзможно намаляване на първенство" IDS_MSG_WARNINGCHANGEPRIORITY "ВНИМАНИЕ: Промяната на първенството на това действие може да\nпричини нежелани последствия, включително неустойчивост на системата. Сигурен ли сте, \nче искате да смените старшинството?" IDS_MSG_TRAYICONCPUUSAGE "Заетост на ЦПУ: %d%%" diff --git a/base/applications/taskmgr/lang/cs-CZ.rc b/base/applications/taskmgr/lang/cs-CZ.rc index ac024b8a1f0..5cc62556d72 100644 --- a/base/applications/taskmgr/lang/cs-CZ.rc +++ b/base/applications/taskmgr/lang/cs-CZ.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Upozornění správce úloh" IDS_MSG_WARNINGTERMINATING "Upozornění: ukončení procesu může způsobit nevratné škody,\nnapř.: ztrátu dat nebo nestability systému. \nProcesu nebude poskytnuta šance k uložení jeho stavu nebo\ndat předtím, než bude ukončen. Jste si jisti\ns ukončením procesu?" IDS_MSG_UNABLETERMINATEPRO "Není možné ukončit proces" + IDS_MSG_CLOSESYSTEMPROCESS "Toto je důležitý systémový proces. Správce úloh tento proces neukončí." IDS_MSG_UNABLECHANGEPRIORITY "Není možné změnit prioritu" IDS_MSG_WARNINGCHANGEPRIORITY "Upozornění: Změna priority procesu může\nzpůsobit nestabilitu systému a jiné nepředvídatelné problémy. Jste si jisti\nse změnou priority procesu?" IDS_MSG_TRAYICONCPUUSAGE "Využití CPU: %d%%" diff --git a/base/applications/taskmgr/lang/da-DK.rc b/base/applications/taskmgr/lang/da-DK.rc index 26dbe41e104..ca50cf7281f 100644 --- a/base/applications/taskmgr/lang/da-DK.rc +++ b/base/applications/taskmgr/lang/da-DK.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Task Manager Warning" IDS_MSG_WARNINGTERMINATING "WARNING: Terminating a process can cause undesired\nresults including loss of data and system instability. The\nprocess will not be given the chance to save its state or\ndata before it is terminated. Are you sure you want to\nterminate the process?" IDS_MSG_UNABLETERMINATEPRO "Unable to Terminate Process" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority" IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?" IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%" diff --git a/base/applications/taskmgr/lang/de-DE.rc b/base/applications/taskmgr/lang/de-DE.rc index bc4cd00169b..a3ae4f57fc8 100644 --- a/base/applications/taskmgr/lang/de-DE.rc +++ b/base/applications/taskmgr/lang/de-DE.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Warnung vom Task-Manager" IDS_MSG_WARNINGTERMINATING "WARNUNG: Das Abbrechen eines Prozesses kann zu\nunerwünschten Ergebnissen, einschließlich Datenverlust und\nSysteminstabilität, führen. Zustand und Daten des Prozesses\nwerden nicht mehr gespeichert. Sind Sie sicher, dass Sie\nden Prozess abbrechen möchten?" IDS_MSG_UNABLETERMINATEPRO "Kann den Prozess nicht beenden" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Kann die Priorität nicht ändern" IDS_MSG_WARNINGCHANGEPRIORITY "WARNUNG: Das Ändern der Prioritätsklasse dieses Prozesses\nkann zu unerwünschten Ergebnissen, einschl. Systeminstabilität, führen.\nSind Sie sicher, dass Sie sie ändern möchten?" IDS_MSG_TRAYICONCPUUSAGE "CPU-Auslastung: %d%%" diff --git a/base/applications/taskmgr/lang/el-GR.rc b/base/applications/taskmgr/lang/el-GR.rc index 7a65c88db56..e856db030c1 100644 --- a/base/applications/taskmgr/lang/el-GR.rc +++ b/base/applications/taskmgr/lang/el-GR.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Task Manager Warning" IDS_MSG_WARNINGTERMINATING "WARNING: Terminating a process can cause undesired\nresults including loss of data and system instability. The\nprocess will not be given the chance to save its state or\ndata before it is terminated. Are you sure you want to\nterminate the process?" IDS_MSG_UNABLETERMINATEPRO "Unable to Terminate Process" + IDS_MSG_CLOSESYSTEMPROCESS "Έχετε επιλέξει μια κρίσιμη διεργασία του συστήματος. Η διαχείριση εργασιών δεν τερματίσει την διεργασία αυτή." IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority" IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?" IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%" diff --git a/base/applications/taskmgr/lang/en-US.rc b/base/applications/taskmgr/lang/en-US.rc index d25de52cf73..462a3efe5f0 100644 --- a/base/applications/taskmgr/lang/en-US.rc +++ b/base/applications/taskmgr/lang/en-US.rc @@ -430,6 +430,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Task Manager Warning" IDS_MSG_WARNINGTERMINATING "WARNING: Terminating a process can cause undesired\nresults including loss of data and system instability. The\nprocess will not be given the chance to save its state or\ndata before it is terminated. Are you sure you want to\nterminate the process?" IDS_MSG_UNABLETERMINATEPRO "Unable to Terminate Process" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority" IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?" IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%" diff --git a/base/applications/taskmgr/lang/es-ES.rc b/base/applications/taskmgr/lang/es-ES.rc index 768703c8f20..6ee0a360726 100644 --- a/base/applications/taskmgr/lang/es-ES.rc +++ b/base/applications/taskmgr/lang/es-ES.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Advertencia del Administrador de tareas" IDS_MSG_WARNINGTERMINATING "ADVERTENCIA: Si finaliza un proceso puede obtener resultados no\ndeseados como la pérdida de datos y la inestabilidad del sistema. El\nproceso no tendrá tiempo para guardar su estado o datos\nantes de cerrarse. ¿Está seguro que desea continuar?" IDS_MSG_UNABLETERMINATEPRO "No se pudo finalizar el proceso" + IDS_MSG_CLOSESYSTEMPROCESS "Éste es un proceso crítico para el sistema. El administrador de tareas no terminará este proceso." IDS_MSG_UNABLECHANGEPRIORITY "No se pudo cambiar la prioridad" IDS_MSG_WARNINGCHANGEPRIORITY "Advertencia: El cambio de prioridad en ciertos procesos podría provocar la inestabilidad del sistema.\n¿Seguro que desea cambiar la prioridad?" IDS_MSG_TRAYICONCPUUSAGE "Promedio CPU: %d%%" diff --git a/base/applications/taskmgr/lang/fr-FR.rc b/base/applications/taskmgr/lang/fr-FR.rc index 94d3c584a92..8e6e8af8638 100644 --- a/base/applications/taskmgr/lang/fr-FR.rc +++ b/base/applications/taskmgr/lang/fr-FR.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Avertissement du Gestionnaire des tâches" IDS_MSG_WARNINGTERMINATING "ATTENTION : Terminer un processus peut causer des effets indésirables\nincluant une perte de donnée ou une instabilité du système.\nLe processus n'aura pas la chance de sauvegarder son état\nou les données avant de terminer.\nÊtes-vous sûr de vouloir terminer le processus ?" IDS_MSG_UNABLETERMINATEPRO "Impossible de terminer le processus" + IDS_MSG_CLOSESYSTEMPROCESS "C'est un processus critique du système. Le gestionnaire de tâche ne le terminera pas." IDS_MSG_UNABLECHANGEPRIORITY "Impossible de changer la priorité" IDS_MSG_WARNINGCHANGEPRIORITY "ATTENTION : Changer la priorité du processus peut causer des\neffets indésirables comme l'instabilité du système.\nÊtes-vous sûr de vouloir changer la priorité ?" IDS_MSG_TRAYICONCPUUSAGE "UC utilisée : %d%%" diff --git a/base/applications/taskmgr/lang/he-IL.rc b/base/applications/taskmgr/lang/he-IL.rc index 518e0b8f9f3..8ff5a137549 100644 --- a/base/applications/taskmgr/lang/he-IL.rc +++ b/base/applications/taskmgr/lang/he-IL.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Task Manager Warning" IDS_MSG_WARNINGTERMINATING "WARNING: Terminating a process can cause undesired\nresults including loss of data and system instability. The\nprocess will not be given the chance to save its state or\ndata before it is terminated. Are you sure you want to\nterminate the process?" IDS_MSG_UNABLETERMINATEPRO "Unable to Terminate Process" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority" IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?" IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%" diff --git a/base/applications/taskmgr/lang/hu-HU.rc b/base/applications/taskmgr/lang/hu-HU.rc index 9a429414256..fdc802d7bb0 100644 --- a/base/applications/taskmgr/lang/hu-HU.rc +++ b/base/applications/taskmgr/lang/hu-HU.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Feladatkezelõ figyelmeztetése" IDS_MSG_WARNINGTERMINATING "FIGYELEM: A folyamat befejezése kellemetlen\nváltozásokat hozhat, adatvesztést és rendszer instabilitást okozhat. A folyamat\n nem fog lehetõséget kapni, hogy elmentse az adatokat.\nBiztosan beakarod fejezni?" IDS_MSG_UNABLETERMINATEPRO "Nem lehetséges a folyamat befejezése" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Nem lehetséges a prioritás megváltoztatása" IDS_MSG_WARNINGCHANGEPRIORITY "FIGYELEM: A prioritás megváltoztatása\nkellemetlenségeket, akár rendszer instabilitást is okozhat.\nBiztosan megakarod változtatni a prioritást?" IDS_MSG_TRAYICONCPUUSAGE "CPU használat: %d%%" diff --git a/base/applications/taskmgr/lang/id-ID.rc b/base/applications/taskmgr/lang/id-ID.rc index ff67ec3d092..e36f8d8367e 100644 --- a/base/applications/taskmgr/lang/id-ID.rc +++ b/base/applications/taskmgr/lang/id-ID.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Task Manager Warning" IDS_MSG_WARNINGTERMINATING "WARNING: Terminating a process can cause undesired\nresults including loss of data and system instability. The\nprocess will not be given the chance to save its state or\ndata before it is terminated. Are you sure you want to\nterminate the process?" IDS_MSG_UNABLETERMINATEPRO "Unable to Terminate Process" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority" IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?" IDS_MSG_TRAYICONCPUUSAGE "Pemakaian CPU: %d%%" diff --git a/base/applications/taskmgr/lang/it-IT.rc b/base/applications/taskmgr/lang/it-IT.rc index a3197c4f0ca..c7c983aad7a 100644 --- a/base/applications/taskmgr/lang/it-IT.rc +++ b/base/applications/taskmgr/lang/it-IT.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Segnalazione di Task Manager" IDS_MSG_WARNINGTERMINATING "ATTENZIONE: Arrestare un processo può provocare\n effetti indesiderati compresa la perdita di dati o l'instabilità del sistema. \nIl processo non potrà salvare il prorio stato o i dati\nprima del suo arresto.\nSei sicuro di voler procedere?" IDS_MSG_UNABLETERMINATEPRO "Impossibile arrestare il Processo" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Impossibile cambiare la Priorità" IDS_MSG_WARNINGCHANGEPRIORITY "ATTENZIONE: La modifica della classe di priorità può provocare\n effetti indesiderati compresa la perdita di dati o l'instabilità del sistema.\nSei sicuro di voler procedere?" IDS_MSG_TRAYICONCPUUSAGE "Uso CPU: %d%%" diff --git a/base/applications/taskmgr/lang/ja-JP.rc b/base/applications/taskmgr/lang/ja-JP.rc index 38be0860eab..2bb99667efd 100644 --- a/base/applications/taskmgr/lang/ja-JP.rc +++ b/base/applications/taskmgr/lang/ja-JP.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "タスク マネージャの警告" IDS_MSG_WARNINGTERMINATING "警告: プロセスを終了すると、データが失われたり、システムが\n不安定になったりするなどの、予期しない結果になることがあります。\nプロセスを終了する前に、状態またはデータを保存するかどうかの\n確認メッセージは表示されません。プロセスを終了しますか?" IDS_MSG_UNABLETERMINATEPRO "プロセスを終了できません" + IDS_MSG_CLOSESYSTEMPROCESS "このプロセスは危機的なシステムプロセスです。タスクマネジャはこのプロセスを終了してはならない。" IDS_MSG_UNABLECHANGEPRIORITY "優先度を変更できません" IDS_MSG_WARNINGCHANGEPRIORITY "警告: このプロセスの優先度クラスを変更すると、システムが不安定に\nなるなど、予期しない結果になることがあります。\n優先度クラスを変更しますか?" IDS_MSG_TRAYICONCPUUSAGE "CPU 使用率: %d%%" diff --git a/base/applications/taskmgr/lang/ko-KR.rc b/base/applications/taskmgr/lang/ko-KR.rc index b54eda8a81a..cb778e0d8af 100644 --- a/base/applications/taskmgr/lang/ko-KR.rc +++ b/base/applications/taskmgr/lang/ko-KR.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "작업 관리자 경고" IDS_MSG_WARNINGTERMINATING "경고: 프로세스를 종료하면 데이터 손실 및 시스템 불안정과\n같은 바람직하지 않은 결과를 가져올 수 있습니다. 프로세스를\n종료하기 전에 프로세스 상태나 데이터를 저장할 기회가\n없습니다.\n프로세스를 종료하시겠습니까?" IDS_MSG_UNABLETERMINATEPRO "프로세스를 제거할 수 없음" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "우선 순위를 바꿀 수 없음" IDS_MSG_WARNINGCHANGEPRIORITY "경고: 이 프로세스의 우선 순위 클래스를 변경하면 시스템 불안정을 포함하여\n예기치 않은 결과를 초래할 수도 있습니다.\n우선 순위 클래스를 변경하시겠습니까?" IDS_MSG_TRAYICONCPUUSAGE "CPU 사용: %d%%" diff --git a/base/applications/taskmgr/lang/nl-NL.rc b/base/applications/taskmgr/lang/nl-NL.rc index ddeb52a0616..4b1ee9d6e3e 100644 --- a/base/applications/taskmgr/lang/nl-NL.rc +++ b/base/applications/taskmgr/lang/nl-NL.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Waarschuwing van Taakbeheer" IDS_MSG_WARNINGTERMINATING "Waarschuwing: het beëindigen van een proces kan tot\nonverwachte resultaten leiden, zoals verlies van gegevens\nof een instabiel systeem, omdat de status of de gegevens\nniet meer kunnen worden opgeslagen. Weet u zeker dat\nu het proces wilt beëindigen?" IDS_MSG_UNABLETERMINATEPRO "Kan het proces niet beëindigen" + IDS_MSG_CLOSESYSTEMPROCESS "Dit is een cruciaal systeemproces. Taakbeheer zal dit proces niet beëindigen." IDS_MSG_UNABLECHANGEPRIORITY "Kan de prioriteit niet wijzigen" IDS_MSG_WARNINGCHANGEPRIORITY "Waarschuwing: het wijzigen van de prioriteitsklasse van dit proces\nkan ongewenste resultaten hebben, zoals een instabiel systeem. Weet u\nzeker dat u de prioriteitsklasse wilt wijzigen?" IDS_MSG_TRAYICONCPUUSAGE "CPU-gebruik: %d%%" diff --git a/base/applications/taskmgr/lang/no-NO.rc b/base/applications/taskmgr/lang/no-NO.rc index 1e538c93f6a..ef4f43eab4f 100644 --- a/base/applications/taskmgr/lang/no-NO.rc +++ b/base/applications/taskmgr/lang/no-NO.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Oppgavebehandler advarsel" IDS_MSG_WARNINGTERMINATING "ADVARSEL: Avsluttes en prosess kan forutsake uønsket\nresultat inkluderer miste av data og systemet kan bli ustabilt. \nprosessen vil ikke kunne gjenopprette sin tilstand eller \ndata slik de var før avslutting. Er du sikker på at du vil\navslutte prosessen?" IDS_MSG_UNABLETERMINATEPRO "Ikke i stand til å avslutte prosess" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Ikke i stand til endre prioritet" IDS_MSG_WARNINGCHANGEPRIORITY "ADVARSEL: Endring av prioritet klasse av denne prosess kan\nforutsake uønsket resultat inkluderer systemet kan bli ustabilt. Er du\nsikker på at du vil endre prioritet klassen?" IDS_MSG_TRAYICONCPUUSAGE "Prosessorbruk: %d%%" diff --git a/base/applications/taskmgr/lang/pl-PL.rc b/base/applications/taskmgr/lang/pl-PL.rc index a3643c8d086..2b52a31e0c1 100644 --- a/base/applications/taskmgr/lang/pl-PL.rc +++ b/base/applications/taskmgr/lang/pl-PL.rc @@ -440,6 +440,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Ostrzeżenie Menedżera zadań" IDS_MSG_WARNINGTERMINATING "UWAGA: Zakończenie procesu może przynieść niepożądane skutki, w tym również doprowadzić do utraty danych i niestabilności systemu.\nProces nie będzie miał szansy na zapisane danych.\nCzy na pewno chcesz zakończyć?" IDS_MSG_UNABLETERMINATEPRO "Nie można zakończyć tego procesu" + IDS_MSG_CLOSESYSTEMPROCESS "Jest to krytyczny proces systemowy. Menedżer zadań nie zakończy tego procesu." IDS_MSG_UNABLECHANGEPRIORITY "Nie można zmienić priorytetu" IDS_MSG_WARNINGCHANGEPRIORITY "UWAGA: Zmiana priorytetu tego procesu może przynieść\nniepożądane skutki, w tym również niestabilność systemu.\nCzy na pewno chcesz zmieni priorytet?" IDS_MSG_TRAYICONCPUUSAGE "Użycie procesora: %d%%" diff --git a/base/applications/taskmgr/lang/pt-BR.rc b/base/applications/taskmgr/lang/pt-BR.rc index fe940cf563f..d38d501c332 100644 --- a/base/applications/taskmgr/lang/pt-BR.rc +++ b/base/applications/taskmgr/lang/pt-BR.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Aviso do 'Gerenciador de tarefas'" IDS_MSG_WARNINGTERMINATING "AVISO: o encerramento de um processo pode causar\nefeitos indesejáveis, como perda de dados e\ninstabilidade do sistema. O processo não terá como\nsalvar seu estado e os dados antes de ser encerrado.\nTem certeza de que deseja encerrá-lo?" IDS_MSG_UNABLETERMINATEPRO "Não é possível finalizar o processo" + IDS_MSG_CLOSESYSTEMPROCESS "Este é um processo crítico do sistema. O Gerenciador de tarefas não irá encerrar este processo" IDS_MSG_UNABLECHANGEPRIORITY "Não é possível alterar a prioridade" IDS_MSG_WARNINGCHANGEPRIORITY "AVISO: a alteração da classe de prioridade do processo\npode causar efeitos indesejáveis, inclusive a instabilidade do sistema. Tem\ncerteza de que deseja alterar a classe de prioridade?" IDS_MSG_TRAYICONCPUUSAGE "Uso de CPU: %d%%" diff --git a/base/applications/taskmgr/lang/ro-RO.rc b/base/applications/taskmgr/lang/ro-RO.rc index 60deced0e79..2637dcb1c5e 100644 --- a/base/applications/taskmgr/lang/ro-RO.rc +++ b/base/applications/taskmgr/lang/ro-RO.rc @@ -438,6 +438,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Avertisment" IDS_MSG_WARNINGTERMINATING "Terminarea forțată a unui proces poate duce la pierderi\nde date sau la instabilitatea sistemului. Procesului nu i\nse va permite îndeplinirea formalităților de închidere.\nSigur doriți terminarea forțată a procesului?" IDS_MSG_UNABLETERMINATEPRO "Procesul nu poate fi oprit" + IDS_MSG_CLOSESYSTEMPROCESS "Acesta este un proces critic de sistem. Gestionarul de aplicații nu va opri acest proces." IDS_MSG_UNABLECHANGEPRIORITY "Nu se poate schimba prioritatea" IDS_MSG_WARNINGCHANGEPRIORITY "Schimbarea priorității poate duce la efecte colaterale\nprecum instabilitatea sistemului.\nSigur doriți schimbarea priorității procesului?" IDS_MSG_TRAYICONCPUUSAGE "Utilizare procesor: %d%%" diff --git a/base/applications/taskmgr/lang/ru-RU.rc b/base/applications/taskmgr/lang/ru-RU.rc index f0018964379..cdbb10a5400 100644 --- a/base/applications/taskmgr/lang/ru-RU.rc +++ b/base/applications/taskmgr/lang/ru-RU.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Ошибка Менеджера задач" IDS_MSG_WARNINGTERMINATING "ВНИМАНИЕ: Завершение процесса может повлечь неустойчивую работу системы и потерю данных\nСохраните важные данные перед продолжением.\nПродолжить завершение процесса?" IDS_MSG_UNABLETERMINATEPRO "Не удалось завершить процесс" + IDS_MSG_CLOSESYSTEMPROCESS "Это критический системный процесс. Диспетчер задач не может его завершить." IDS_MSG_UNABLECHANGEPRIORITY "Не удалось изменить приоритет" IDS_MSG_WARNINGCHANGEPRIORITY "ВНИМАНИЕ: Изменение приоритета этого процесса может привести к нежелательным результатам, в том числе к нестабильной работе системы.\nВы действительно хотите изменить класс приоритета?" IDS_MSG_TRAYICONCPUUSAGE "Загрузка ЦП: %d%%" diff --git a/base/applications/taskmgr/lang/sk-SK.rc b/base/applications/taskmgr/lang/sk-SK.rc index 0598c835aa1..0f426569a17 100644 --- a/base/applications/taskmgr/lang/sk-SK.rc +++ b/base/applications/taskmgr/lang/sk-SK.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Upozornenie Správcu úloh" IDS_MSG_WARNINGTERMINATING "UPOZORNENIE: Ukončenie procesu môže mať nežiadúce\ndôsledky vrátane nestability systému.\nStav alebo údaje o procese sa nebudú dať\npred ukončením uložiť.\nNaozaj chcete proces ukončiť?" IDS_MSG_UNABLETERMINATEPRO "Proces sa nedá ukončiť." + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Priorita sa nedá zmeniť." IDS_MSG_WARNINGCHANGEPRIORITY "UPOZORNENIE: Zmena triedy priority procesu môže mať\nnežiadúce dôsledky vrátane nestability systému.\nNaozaj chcete zmeniť triedu priority procesu?" IDS_MSG_TRAYICONCPUUSAGE "Využitie procesora: %d%%" diff --git a/base/applications/taskmgr/lang/sq-AL.rc b/base/applications/taskmgr/lang/sq-AL.rc index 5d6196e67d2..c98385a2847 100644 --- a/base/applications/taskmgr/lang/sq-AL.rc +++ b/base/applications/taskmgr/lang/sq-AL.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Paralajmerim i Task Manager" IDS_MSG_WARNINGTERMINATING "KUJDES: Nderprerja e nje procesi mund te japi rezultat te pa \ndeshiruar perfshirje ne humbjen e informacioneve the paqendrueshmeri te sistemit.\nProcesi nuk ju jep shansin per te ruajtur gjendjen apo\ninformacionet perpara se te nderprehet. Jeni i sigurt qe doni te\nnderpreni procesin?" IDS_MSG_UNABLETERMINATEPRO "E pamundur nderprerja e procesit" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "E pamundur ndryshimi i prioritetit" IDS_MSG_WARNINGCHANGEPRIORITY "KUJDES: Ndryshimi i klases se prioritetit te ketij procesi mund te \nsjell rrezultate te padeshirushme ne stabilitetin e sistemit. Jeni i sigurt\nper ndryshimin e klases se prioriteteve?" IDS_MSG_TRAYICONCPUUSAGE "Perdorimi i CPU: %d%%" diff --git a/base/applications/taskmgr/lang/sv-SE.rc b/base/applications/taskmgr/lang/sv-SE.rc index 4f854368f1c..0f5cd8f3fc6 100644 --- a/base/applications/taskmgr/lang/sv-SE.rc +++ b/base/applications/taskmgr/lang/sv-SE.rc @@ -434,6 +434,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Aktivitetshanteraren varning" IDS_MSG_WARNINGTERMINATING "VARNING: Ett avslutande av en process kan orsaka\noönskade effekter och påverka systemets stabilitet. Processen\nkommer inte att ges chans att spara sitt arbete innan\nden avslutas. Är du säker på att du vill avsluta processen?" IDS_MSG_UNABLETERMINATEPRO "Kunde inte avsluta processen" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Kunde inte ändra prioritet" IDS_MSG_WARNINGCHANGEPRIORITY "VARNING: Ändring av prioritetsklassen hos den här processen kan\norsaka oönskade effekter och påverka systemets stabilitet. Är du\nsäker på att du vill ändra prioritetsklassen?" IDS_MSG_TRAYICONCPUUSAGE "Processoranvändning: %d%%" diff --git a/base/applications/taskmgr/lang/tr-TR.rc b/base/applications/taskmgr/lang/tr-TR.rc index 41deacebe76..a227f835f22 100644 --- a/base/applications/taskmgr/lang/tr-TR.rc +++ b/base/applications/taskmgr/lang/tr-TR.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Görev Yöneticisi Uyarısı" IDS_MSG_WARNINGTERMINATING "UYARI: Bir işlemin sonlandırılması, veri\nyitimi ve dizge kararsızlığını içeren istenmeyen sonuçlara neden\nolabilir. İşlem sonlandırılmadan önce durumunu veyâ verisini\nsaklama fırsatı verilmeyecektir. İşlemi\nsonlandırmak istediğinizden emin misiniz?" IDS_MSG_UNABLETERMINATEPRO "İşlem Sonlandırmanın Yapılamaması" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Önceliğin Değiştirilememesi" IDS_MSG_WARNINGCHANGEPRIORITY "UYARI: Bu işlemin öncelik sınıfının değiştirilmesi, dizge\nkararsızlığını içeren istenmeyen sonuçlara neden olabilir. Öncelik \nsınıfını değiştirmek istediğinizden emin misiniz?" IDS_MSG_TRAYICONCPUUSAGE "CPU Kullanımı: %%%d" diff --git a/base/applications/taskmgr/lang/uk-UA.rc b/base/applications/taskmgr/lang/uk-UA.rc index 370b382a0aa..752c8746b3c 100644 --- a/base/applications/taskmgr/lang/uk-UA.rc +++ b/base/applications/taskmgr/lang/uk-UA.rc @@ -432,6 +432,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Попередження диспетчера завдань" IDS_MSG_WARNINGTERMINATING "УВАГА! Припинення процесу може призвести до \nнебажаних наслідків, включаючи втрату даних і \nнестабільну роботу системи. Процес не зможе \nзберегти свій стан або дані перед припиненням. \nВи дійсно бажаєте припинити процес?" IDS_MSG_UNABLETERMINATEPRO "Неможливо завершити процес" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Неможливо змінити пріоритет" IDS_MSG_WARNINGCHANGEPRIORITY "УВАГА! Зміна класу пріоритету цього процесу може призвести до \nнебажаних наслідків, включаючи нестабільну роботу \nсистеми. Ви дійсно бажаєте змінити пріоритет класу?" IDS_MSG_TRAYICONCPUUSAGE "Використання ЦП: %d%%" diff --git a/base/applications/taskmgr/lang/zh-CN.rc b/base/applications/taskmgr/lang/zh-CN.rc index d42e0dd0361..a13fc22eecc 100644 --- a/base/applications/taskmgr/lang/zh-CN.rc +++ b/base/applications/taskmgr/lang/zh-CN.rc @@ -438,6 +438,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "Task Manager Warning" IDS_MSG_WARNINGTERMINATING "WARNING: Terminating a process can cause undesired\nresults including loss of data and system instability. The\nprocess will not be given the chance to save its state or\ndata before it is terminated. Are you sure you want to\nterminate the process?" IDS_MSG_UNABLETERMINATEPRO "Unable to Terminate Process" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority" IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?" IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情况: %d%%" diff --git a/base/applications/taskmgr/lang/zh-TW.rc b/base/applications/taskmgr/lang/zh-TW.rc index eb6ee185bff..1d626dd2d2b 100644 --- a/base/applications/taskmgr/lang/zh-TW.rc +++ b/base/applications/taskmgr/lang/zh-TW.rc @@ -440,6 +440,7 @@ BEGIN IDS_MSG_TASKMGRWARNING "工作管理員警告" IDS_MSG_WARNINGTERMINATING "警告: 結束程序可能導政資料遺失或系統不穩定。\n程序在結束時將不能儲存任何資料。\n你是否確定要繼續?" IDS_MSG_UNABLETERMINATEPRO "無法結束處理程序" + IDS_MSG_CLOSESYSTEMPROCESS "This is a critical system process. Task Manager will not end this process." IDS_MSG_UNABLECHANGEPRIORITY "無法更改優先順序" IDS_MSG_WARNINGCHANGEPRIORITY "警告: 更改此程序的優先順序可能導致系統不穩定。\n你是否確定要更改優先順序?" IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情況: %d%%" diff --git a/base/applications/taskmgr/resource.h b/base/applications/taskmgr/resource.h index 8aca1bde315..6f77c9c0a91 100644 --- a/base/applications/taskmgr/resource.h +++ b/base/applications/taskmgr/resource.h @@ -249,6 +249,7 @@ #define IDS_MSG_UNABLECHANGEPRIORITY 360 #define IDS_MSG_WARNINGCHANGEPRIORITY 361 #define IDS_MSG_TRAYICONCPUUSAGE 362 +#define IDS_MSG_CLOSESYSTEMPROCESS 369 #define IDS_STATUS_MEMUSAGE 363 #define IDS_STATUS_CPUUSAGE 364 diff --git a/base/setup/usetup/lang/bg-BG.h b/base/setup/usetup/lang/bg-BG.h index 1bf0e213a8d..7118904c6ee 100644 --- a/base/setup/usetup/lang/bg-BG.h +++ b/base/setup/usetup/lang/bg-BG.h @@ -1724,7 +1724,7 @@ MUI_STRING bgBGStrings[] = {STRING_HDINFOPARTEXISTS, " %lu (%I64u %s), =%hu, =%hu, =%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %s %-3u%s %6lu %s"}, + "%c%c %c %s %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s %lu (=%hu, =%hu, =%hu) %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/bn-BD.h b/base/setup/usetup/lang/bn-BD.h index e2e2ff1ae78..8a6b39b90fb 100644 --- a/base/setup/usetup/lang/bn-BD.h +++ b/base/setup/usetup/lang/bn-BD.h @@ -1708,7 +1708,7 @@ MUI_STRING bnBDStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/cs-CZ.h b/base/setup/usetup/lang/cs-CZ.h index 74555d0eeb2..7574918e241 100644 --- a/base/setup/usetup/lang/cs-CZ.h +++ b/base/setup/usetup/lang/cs-CZ.h @@ -1717,7 +1717,7 @@ MUI_STRING csCZStrings[] = {STRING_HDINFOPARTEXISTS, "na harddisku %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTyp %-3u%s %6lu %s"}, + "%c%c %c %sTyp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) na %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/de-DE.h b/base/setup/usetup/lang/de-DE.h index f1d422f540b..abab18f05e3 100644 --- a/base/setup/usetup/lang/de-DE.h +++ b/base/setup/usetup/lang/de-DE.h @@ -1714,7 +1714,7 @@ MUI_STRING deDEStrings[] = {STRING_HDINFOPARTEXISTS, "auf Festplatte %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTyp %-3u%s %6lu %s"}, + "%c%c %c %sTyp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Festplatte %lu (Port=%hu, Bus=%hu, Id=%hu) auf %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/el-GR.h b/base/setup/usetup/lang/el-GR.h index 4c7b79e1e56..52f6c3fb0d0 100644 --- a/base/setup/usetup/lang/el-GR.h +++ b/base/setup/usetup/lang/el-GR.h @@ -1736,7 +1736,7 @@ MUI_STRING elGRStrings[] = {STRING_HDINFOPARTEXISTS, " 婡 %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s 婡 %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/en-US.h b/base/setup/usetup/lang/en-US.h index d4e7d5f802f..5cf7020283c 100644 --- a/base/setup/usetup/lang/en-US.h +++ b/base/setup/usetup/lang/en-US.h @@ -1708,7 +1708,7 @@ MUI_STRING enUSStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/es-ES.h b/base/setup/usetup/lang/es-ES.h index b96a269a86d..fca24eefe71 100644 --- a/base/setup/usetup/lang/es-ES.h +++ b/base/setup/usetup/lang/es-ES.h @@ -1718,7 +1718,7 @@ MUI_STRING esESStrings[] = {STRING_HDINFOPARTEXISTS, "en Disco duro %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTipo %-3u%s %6lu %s"}, + "%c%c %c %sTipo %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disco duro %lu (Port=%hu, Bus=%hu, Id=%hu) en %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/et-EE.h b/base/setup/usetup/lang/et-EE.h index fe7463322ac..984af2219cf 100644 --- a/base/setup/usetup/lang/et-EE.h +++ b/base/setup/usetup/lang/et-EE.h @@ -1709,7 +1709,7 @@ MUI_STRING etEEStrings[] = {STRING_HDINFOPARTEXISTS, "Kvaketas %lu (%I64u %s), Port=%hu, Siin=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTp %-3u%s %6lu %s"}, + "%c%c %c %sTp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Kvaketas %lu (Port=%hu, Siin=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/fr-FR.h b/base/setup/usetup/lang/fr-FR.h index 50220c3fe94..8a2b46156c7 100644 --- a/base/setup/usetup/lang/fr-FR.h +++ b/base/setup/usetup/lang/fr-FR.h @@ -1722,7 +1722,7 @@ MUI_STRING frFRStrings[] = {STRING_HDINFOPARTEXISTS, "sur Disque dur %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disque dur %lu (Port=%hu, Bus=%hu, Id=%hu) sur %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/he-IL.h b/base/setup/usetup/lang/he-IL.h index 74f14761a15..de05585cce7 100644 --- a/base/setup/usetup/lang/he-IL.h +++ b/base/setup/usetup/lang/he-IL.h @@ -1710,7 +1710,7 @@ MUI_STRING heILStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/it-IT.h b/base/setup/usetup/lang/it-IT.h index 2c7fc543cdb..d229bef2921 100644 --- a/base/setup/usetup/lang/it-IT.h +++ b/base/setup/usetup/lang/it-IT.h @@ -1713,7 +1713,7 @@ MUI_STRING itITStrings[] = {STRING_HDINFOPARTEXISTS, "su Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTipo %-3u%s %6lu %s"}, + "%c%c %c %sTipo %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) su %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/ja-JP.h b/base/setup/usetup/lang/ja-JP.h index f4aa3cb6dc9..1d0b4913315 100644 --- a/base/setup/usetup/lang/ja-JP.h +++ b/base/setup/usetup/lang/ja-JP.h @@ -1712,7 +1712,7 @@ MUI_STRING jaJPStrings[] = {STRING_HDINFOPARTEXISTS, "on ʰި %lu (%I64u %s), ߰=%hu, ޽=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sٲ %-3u%s %6lu %s"}, + "%c%c %c %sٲ %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s ʰި %lu (߰=%hu, ޽=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/lt-LT.h b/base/setup/usetup/lang/lt-LT.h index ef7e9640dca..bf3241c6224 100644 --- a/base/setup/usetup/lang/lt-LT.h +++ b/base/setup/usetup/lang/lt-LT.h @@ -1719,7 +1719,7 @@ MUI_STRING ltLTStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/nl-NL.h b/base/setup/usetup/lang/nl-NL.h index cc775851d37..336d3978163 100644 --- a/base/setup/usetup/lang/nl-NL.h +++ b/base/setup/usetup/lang/nl-NL.h @@ -1757,7 +1757,7 @@ MUI_STRING nlNLStrings[] = {STRING_HDINFOPARTEXISTS, "op Schijf %lu (%I64u %s), Poort=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Schijf %lu (Poort=%hu, Bus=%hu, Id=%hu) op %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/pl-PL.h b/base/setup/usetup/lang/pl-PL.h index cb83abb1b62..77d3c06bacc 100644 --- a/base/setup/usetup/lang/pl-PL.h +++ b/base/setup/usetup/lang/pl-PL.h @@ -1719,7 +1719,7 @@ MUI_STRING plPLStrings[] = {STRING_HDINFOPARTEXISTS, "na Dysku Twardym %lu (%I64u %s), Port=%hu, Szyna=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %s09Typ %-3u%s %6lu %s"}, + "%c%c %c %s09Typ %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Dysk Twardy %lu (Port=%hu, Szyna=%hu, Id=%hu) na %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/pt-BR.h b/base/setup/usetup/lang/pt-BR.h index e1b0c113d60..6e70b9a25b2 100644 --- a/base/setup/usetup/lang/pt-BR.h +++ b/base/setup/usetup/lang/pt-BR.h @@ -1748,7 +1748,7 @@ MUI_STRING ptBRStrings[] = {STRING_HDINFOPARTEXISTS, "em Disco %lu (%I64u %s), Porta=%hu, Barramento=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTipo %-3u%s %6lu %s"}, + "%c%c %c %sTipo %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disco %lu (Porta=%hu, Barramento=%hu, Id=%hu) em %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/ro-RO.h b/base/setup/usetup/lang/ro-RO.h index dcac8972059..f98db122c23 100644 --- a/base/setup/usetup/lang/ro-RO.h +++ b/base/setup/usetup/lang/ro-RO.h @@ -1786,7 +1786,7 @@ MUI_STRING roROStrings[] = {STRING_HDINFOPARTEXISTS, "de pe Discul %lu (%I64u %s), Port=%hu, Magistrala=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTip %-3u%s %6lu %s"}, + "%c%c %c %sTip %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Discul %lu (Port=%hu, Magistrala=%hu, Id=%hu) de tip %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/ru-RU.h b/base/setup/usetup/lang/ru-RU.h index 87d976e2e8e..692489bf02b 100644 --- a/base/setup/usetup/lang/ru-RU.h +++ b/base/setup/usetup/lang/ru-RU.h @@ -1713,7 +1713,7 @@ MUI_STRING ruRUStrings[] = {STRING_HDINFOPARTEXISTS, " ⪮ ᪥ %lu (%I64u %s), =%hu, =%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %s %-3u%s %6lu %s"}, + "%c%c %c %s %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s ⪨ %lu (=%hu, =%hu, Id=%hu) %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/sk-SK.h b/base/setup/usetup/lang/sk-SK.h index f2213cbd1b0..ebd7a9354a8 100644 --- a/base/setup/usetup/lang/sk-SK.h +++ b/base/setup/usetup/lang/sk-SK.h @@ -1723,7 +1723,7 @@ MUI_STRING skSKStrings[] = {STRING_HDINFOPARTEXISTS, "na pevnom disku %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %styp %-3u%s %6lu %s"}, + "%c%c %c %styp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s pevn disk %lu (Port=%hu, Bus=%hu, Id=%hu) na %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/sq-AL.h b/base/setup/usetup/lang/sq-AL.h index 4dbd396218a..e8f0366a38d 100644 --- a/base/setup/usetup/lang/sq-AL.h +++ b/base/setup/usetup/lang/sq-AL.h @@ -1715,7 +1715,7 @@ MUI_STRING sqALStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisku %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTipi %-3u%s %6lu %s"}, + "%c%c %c %sTipi %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisku %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/sv-SE.h b/base/setup/usetup/lang/sv-SE.h index d763b603f27..33f7eca25d6 100644 --- a/base/setup/usetup/lang/sv-SE.h +++ b/base/setup/usetup/lang/sv-SE.h @@ -1718,7 +1718,7 @@ MUI_STRING svSEStrings[] = {STRING_HDINFOPARTEXISTS, "p Hrddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTyp %-3u%s %6lu %s"}, + "%c%c %c %sTyp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Hrddisk %lu (Port=%hu, Bus=%hu, Id=%hu) p %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/tr-TR.h b/base/setup/usetup/lang/tr-TR.h index 0c6fb8d1173..c18a33a9eae 100644 --- a/base/setup/usetup/lang/tr-TR.h +++ b/base/setup/usetup/lang/tr-TR.h @@ -1696,7 +1696,7 @@ MUI_STRING trTRStrings[] = {STRING_HDINFOPARTEXISTS, "zerinde: Sbit Disk %lu (%I64u %s), Giri=%hu, Veriyolu=%hu, Kimlik=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sTr %-3u%s %6lu %s"}, + "%c%c %c %sTr %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Sbit Disk %lu (Giri=%hu, Veriyolu=%hu, Kimlik=%hu), %S zerinde"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/lang/uk-UA.h b/base/setup/usetup/lang/uk-UA.h index 517736faeb4..7293763e204 100644 --- a/base/setup/usetup/lang/uk-UA.h +++ b/base/setup/usetup/lang/uk-UA.h @@ -1718,7 +1718,7 @@ MUI_STRING ukUAStrings[] = {STRING_HDINFOPARTEXISTS, " ⪮ %lu (%I64u %s), =%hu, =%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c %sType %-3u%s %6lu %s"}, + "%c%c %c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s ⪨ %lu (=%hu, =%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, diff --git a/base/setup/usetup/partlist.c b/base/setup/usetup/partlist.c index 6f8cd09c53e..deb5196a0eb 100644 --- a/base/setup/usetup/partlist.c +++ b/base/setup/usetup/partlist.c @@ -1556,6 +1556,7 @@ PrintPartitionData( MUIGetString(STRING_HDDINFOUNK5), (PartEntry->DriveLetter == 0) ? '-' : PartEntry->DriveLetter, (PartEntry->DriveLetter == 0) ? '-' : ':', + PartEntry->BootIndicator ? '*' : ' ', PartEntry->LogicalPartition ? " " : "", PartEntry->PartitionType, PartEntry->LogicalPartition ? "" : " ", @@ -1565,9 +1566,10 @@ PrintPartitionData( else { sprintf(LineBuffer, - "%c%c %s%-24s%s %6lu %s", + "%c%c %c %s%-24s%s %6lu %s", (PartEntry->DriveLetter == 0) ? '-' : PartEntry->DriveLetter, (PartEntry->DriveLetter == 0) ? '-' : ':', + PartEntry->BootIndicator ? '*' : ' ', PartEntry->LogicalPartition ? " " : "", PartType, PartEntry->LogicalPartition ? "" : " ", @@ -2383,7 +2385,7 @@ DPRINT1("Convert existing partition entry\n"); PartEntry->FormatState = Unformatted; PartEntry->AutoCreate = AutoCreate; PartEntry->New = TRUE; - PartEntry->BootIndicator = FALSE; /* FIXME */ + PartEntry->BootIndicator = FALSE; DPRINT1("First Sector: %I64u\n", PartEntry->StartSector.QuadPart); DPRINT1("Last Sector: %I64u\n", PartEntry->StartSector.QuadPart + PartEntry->SectorCount.QuadPart - 1); @@ -2418,7 +2420,7 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); NewPartEntry->New = TRUE; NewPartEntry->FormatState = Unformatted; - NewPartEntry->BootIndicator = FALSE; /* FIXME */ + NewPartEntry->BootIndicator = FALSE; PartEntry->StartSector.QuadPart = NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart; PartEntry->SectorCount.QuadPart -= (PartEntry->StartSector.QuadPart - NewPartEntry->StartSector.QuadPart); @@ -2500,7 +2502,7 @@ DPRINT1("Convert existing partition entry\n"); PartEntry->FormatState = Formatted; PartEntry->AutoCreate = FALSE; PartEntry->New = FALSE; - PartEntry->BootIndicator = FALSE; /* FIXME */ + PartEntry->BootIndicator = FALSE; if (PartEntry->StartSector.QuadPart < 1450560) { @@ -2543,7 +2545,7 @@ DPRINT1("Add new partition entry\n"); NewPartEntry->New = FALSE; NewPartEntry->FormatState = Formatted; - NewPartEntry->BootIndicator = FALSE; /* FIXME */ + NewPartEntry->BootIndicator = FALSE; if (NewPartEntry->StartSector.QuadPart < 1450560) { diff --git a/base/shell/explorer/CMakeLists.txt b/base/shell/explorer/CMakeLists.txt index 5b4ec0836bb..138d90a8fdb 100644 --- a/base/shell/explorer/CMakeLists.txt +++ b/base/shell/explorer/CMakeLists.txt @@ -6,7 +6,6 @@ include_directories(${REACTOS_SOURCE_DIR}/lib/atl) list(APPEND SOURCE desktop.cpp - dragdrop.cpp explorer.cpp rshell.cpp settings.cpp diff --git a/base/shell/explorer/desktop.cpp b/base/shell/explorer/desktop.cpp index e15a632cba2..31ecbed6164 100644 --- a/base/shell/explorer/desktop.cpp +++ b/base/shell/explorer/desktop.cpp @@ -22,9 +22,9 @@ class CDesktopThread { - HANDLE hEvent; - HANDLE hDesktop; - CComPtr Tray; + HANDLE m_hEvent; + HANDLE m_hDesktop; + CComPtr m_Tray; DWORD DesktopThreadProc() { @@ -34,7 +34,7 @@ class CDesktopThread OleInitialize(NULL); - hRet = Tray->QueryInterface(IID_PPV_ARG(IShellDesktopTray, &pSdt)); + hRet = m_Tray->QueryInterface(IID_PPV_ARG(IShellDesktopTray, &pSdt)); if (!SUCCEEDED(hRet)) return 1; @@ -42,7 +42,7 @@ class CDesktopThread if (hDesktop == NULL) return 1; - if (!SetEvent(hEvent)) + if (!SetEvent(m_hEvent)) { /* Failed to notify that we initialized successfully, kill ourselves to make the main thread wake up! */ @@ -64,9 +64,9 @@ class CDesktopThread public: CDesktopThread() : - hEvent(NULL), - hDesktop(NULL), - Tray(NULL) + m_hEvent(NULL), + m_hDesktop(NULL), + m_Tray(NULL) { } @@ -75,28 +75,28 @@ public: HANDLE hThread; HANDLE Handles[2]; - Tray = pTray; + m_Tray = pTray; - hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); - if (!hEvent) + m_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); + if (!m_hEvent) return NULL; hThread = CreateThread(NULL, 0, s_DesktopThreadProc, (PVOID)this, 0, NULL); if (!hThread) { - CloseHandle(hEvent); + CloseHandle(m_hEvent); return NULL; } Handles[0] = hThread; - Handles[1] = hEvent; + Handles[1] = m_hEvent; for (;;) { DWORD WaitResult = MsgWaitForMultipleObjects(_countof(Handles), Handles, FALSE, INFINITE, QS_ALLEVENTS); if (WaitResult == WAIT_OBJECT_0 + _countof(Handles)) { - TrayProcessMessages(Tray); + TrayProcessMessages(m_Tray); } else if (WaitResult != WAIT_FAILED && WaitResult != WAIT_OBJECT_0) { @@ -105,9 +105,10 @@ public: } CloseHandle(hThread); - CloseHandle(hEvent); + CloseHandle(m_hEvent); - return hDesktop; + // FIXME: Never assigned, will always return default value (NULL). + return m_hDesktop; } void Destroy() diff --git a/base/shell/explorer/dragdrop.cpp b/base/shell/explorer/dragdrop.cpp deleted file mode 100644 index d9c21e6f42a..00000000000 --- a/base/shell/explorer/dragdrop.cpp +++ /dev/null @@ -1,314 +0,0 @@ -/* - * ReactOS Explorer - * - * Copyright 2006 - 2007 Thomas Weidenmueller - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "precomp.h" - -class CDropTarget : - public CComCoClass, - public CComObjectRootEx, - public IDropTarget -{ - HWND hwndTarget; - CComPtr DropTargetHelper; - PVOID Context; - BOOL CanDrop; - DROPTARGET_CALLBACKS Callbacks; - DWORD FormatsCount; - FORMATETC* Formats; - - const FORMATETC * - FindSupportedFormat(IN IDataObject *pDataObject) - { - FORMATETC *Current, *Last; - HRESULT hr; - - /* NOTE: we could use IDataObject::EnumFormatEtc(), - but this appears to be a lot easier! */ - Last = Formats + FormatsCount; - for (Current = Formats; - Current != Last; - Current++) - { - hr = pDataObject->QueryGetData(Current); - if (SUCCEEDED(hr)) - return Current; - } - - return NULL; - } - -public: - CDropTarget() : - hwndTarget(NULL), - Context(NULL), - CanDrop(FALSE), - FormatsCount(0), - Formats(NULL) - { - ZeroMemory(&Callbacks, sizeof(Callbacks)); - } - - virtual ~CDropTarget() { } - - HRESULT Initialize(IN HWND hwndTarget, - IN DWORD nSupportedFormats, - IN const FORMATETC *formats OPTIONAL, - IN PVOID Context OPTIONAL, - IN const DROPTARGET_CALLBACKS *Callbacks OPTIONAL) - { - this->hwndTarget = hwndTarget; - FormatsCount = nSupportedFormats; - if (nSupportedFormats != 0) - { - Formats = new FORMATETC[nSupportedFormats]; - CopyMemory(Formats, - formats, - sizeof(formats[0]) * nSupportedFormats); - } - - this->Context = Context; - if (Callbacks != NULL) - { - CopyMemory(&this->Callbacks, - Callbacks, - sizeof(*Callbacks)); - } - - HRESULT hr = CoCreateInstance(CLSID_DragDropHelper, - NULL, - CLSCTX_INPROC_SERVER, - IID_PPV_ARG(IDropTargetHelper, &DropTargetHelper)); - - return hr; - } - - virtual HRESULT STDMETHODCALLTYPE DragEnter( - IN IDataObject *pDataObject, - IN DWORD grfKeyState, - IN POINTL pt, - IN OUT DWORD *pdwEffect) - { - const FORMATETC *Format; - HRESULT hr; - - if (pDataObject == NULL) - return E_INVALIDARG; - - CanDrop = FALSE; - - hr = DropTargetHelper->DragEnter( - hwndTarget, - pDataObject, - (POINT *) &pt, - *pdwEffect); - - if (SUCCEEDED(hr)) - { - Format = FindSupportedFormat( - pDataObject); - if (Format != NULL) - { - /* We found a format that we support! */ - if (Callbacks.OnDragEnter != NULL) - { - hr = Callbacks.OnDragEnter(this, - Context, - Format, - grfKeyState, - pt, - pdwEffect); - if (SUCCEEDED(hr)) - { - if (hr == S_OK) - CanDrop = TRUE; - else - { - /* Special return value by the callback routine, - doesn't want to allow dragging */ - *pdwEffect = DROPEFFECT_NONE; - } - - hr = S_OK; - } - else - { - *pdwEffect = DROPEFFECT_NONE; - hr = S_OK; - } - } - else - *pdwEffect = DROPEFFECT_NONE; - } - else - *pdwEffect = DROPEFFECT_NONE; - } - - return hr; - } - - virtual HRESULT STDMETHODCALLTYPE DragOver( - IN DWORD grfKeyState, - IN POINTL pt, - IN OUT DWORD *pdwEffect) - { - HRESULT hr; - - hr = DropTargetHelper->DragOver( - (POINT *) &pt, - *pdwEffect); - - if (SUCCEEDED(hr)) - { - if (CanDrop) - { - if (Callbacks.OnDragOver != NULL) - { - hr = Callbacks.OnDragOver(this, - Context, - grfKeyState, - pt, - pdwEffect); - if (SUCCEEDED(hr)) - { - if (hr != S_OK) - { - /* Special return value by the callback routine, - doesn't want to allow dropping here */ - *pdwEffect = DROPEFFECT_NONE; - } - - hr = S_OK; - } - else - { - *pdwEffect = DROPEFFECT_NONE; - hr = S_OK; - } - } - else - *pdwEffect = DROPEFFECT_NONE; - } - else - *pdwEffect = DROPEFFECT_NONE; - } - - return hr; - } - - virtual HRESULT STDMETHODCALLTYPE DragLeave() - { - HRESULT hr; - - hr = DropTargetHelper->DragLeave(); - if (SUCCEEDED(hr)) - { - if (Callbacks.OnDragLeave != NULL) - { - hr = Callbacks.OnDragLeave(this, - Context); - } - } - - return hr; - } - - virtual HRESULT STDMETHODCALLTYPE Drop( - IN IDataObject *pDataObject, - IN DWORD grfKeyState, - IN POINTL pt, - IN OUT DWORD *pdwEffect) - { - const FORMATETC *Format; - HRESULT hr; - - if (pDataObject == NULL) - return E_INVALIDARG; - - hr = DropTargetHelper->Drop( - pDataObject, - (POINT *) &pt, - *pdwEffect); - - if (SUCCEEDED(hr) && CanDrop) - { - Format = FindSupportedFormat(pDataObject); - if (Format != NULL) - { - /* We found a format that we support! */ - if (Callbacks.OnDrop != NULL) - { - hr = Callbacks.OnDrop(this, - Context, - Format, - grfKeyState, - pt, - pdwEffect); - if (SUCCEEDED(hr)) - { - if (hr == S_OK) - CanDrop = TRUE; - else - { - /* Special return value by the callback routine, - doesn't want to allow dragging */ - *pdwEffect = DROPEFFECT_NONE; - } - - hr = S_OK; - } - else - { - *pdwEffect = DROPEFFECT_NONE; - hr = S_OK; - } - } - else - *pdwEffect = DROPEFFECT_NONE; - } - else - *pdwEffect = DROPEFFECT_NONE; - } - - return hr; - } - - DECLARE_NOT_AGGREGATABLE(CDropTarget) - - DECLARE_PROTECT_FINAL_CONSTRUCT() - BEGIN_COM_MAP(CDropTarget) - COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget) - END_COM_MAP() -}; - -IDropTarget * -CreateDropTarget(IN HWND hwndTarget, - IN DWORD nSupportedFormats, - IN const FORMATETC *Formats OPTIONAL, - IN PVOID Context OPTIONAL, - IN const DROPTARGET_CALLBACKS *Callbacks OPTIONAL) -{ - IDropTarget *dt; - - HRESULT hr = ShellObjectCreatorInit(hwndTarget, nSupportedFormats, Formats, Context, Callbacks, IID_IDropTarget, &dt); - if (FAILED_UNEXPECTEDLY(hr)) - return NULL; - - return dt; -} diff --git a/base/shell/explorer/explorer.cpp b/base/shell/explorer/explorer.cpp index 187201a70dc..e96f632f17e 100644 --- a/base/shell/explorer/explorer.cpp +++ b/base/shell/explorer/explorer.cpp @@ -22,10 +22,8 @@ #include HINSTANCE hExplorerInstance; -HMODULE hUser32; HANDLE hProcessHeap; HKEY hkExplorer = NULL; -DRAWCAPTEMP DrawCapTemp = NULL; class CExplorerModule : public CComModule { @@ -137,14 +135,8 @@ StartWithDesktop(IN HINSTANCE hInstance) hExplorerInstance = hInstance; hProcessHeap = GetProcessHeap(); + LoadAdvancedSettings(); - - hUser32 = GetModuleHandle(TEXT("USER32.DLL")); - if (hUser32 != NULL) - { - DrawCapTemp = (DRAWCAPTEMP) GetProcAddress(hUser32, PROC_NAME_DRAWCAPTIONTEMP); - } - InitCommonControls(); OleInitialize(NULL); diff --git a/base/shell/explorer/explorer.rc b/base/shell/explorer/explorer.rc index a7f9c6afd9b..2cfc04be332 100644 --- a/base/shell/explorer/explorer.rc +++ b/base/shell/explorer/explorer.rc @@ -31,6 +31,21 @@ BEGIN IDS_HELP_COMMAND "https://www.reactos.org/" END +IDA_TASKBAR ACCELERATORS +BEGIN + "s", IDMA_START, ALT + VK_F6, IDMA_CYCLE_FOCUS, VIRTKEY + VK_TAB, IDMA_CYCLE_FOCUS, VIRTKEY + VK_TAB, IDMA_CYCLE_FOCUS, VIRTKEY, CONTROL + VK_TAB, IDMA_CYCLE_FOCUS, VIRTKEY, SHIFT + VK_TAB, IDMA_CYCLE_FOCUS, VIRTKEY, CONTROL, SHIFT + VK_F3, IDMA_SEARCH, VIRTKEY + //VK_F5, 41061, VIRTKEY + VK_RETURN, IDM_TASKBARANDSTARTMENU, VIRTKEY, ALT + "Z", IDMA_RESTORE_OPEN, VIRTKEY, CONTROL + "M", IDMA_MINIMIZE_ALL, VIRTKEY, ALT +END + /* UTF-8 */ #pragma code_page(65001) diff --git a/base/shell/explorer/precomp.h b/base/shell/explorer/precomp.h index 15171ec0fc7..7ed7549b6b2 100644 --- a/base/shell/explorer/precomp.h +++ b/base/shell/explorer/precomp.h @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -42,81 +43,36 @@ WINE_DEFAULT_DEBUG_CHANNEL(explorernew); -/* dynamic imports due to lack of support in msvc linker libs */ -typedef INT(APIENTRY *REGSHELLHOOK)(HWND, DWORD); -#ifdef UNICODE -#define PROC_NAME_DRAWCAPTIONTEMP "DrawCaptionTempW" -typedef BOOL(APIENTRY *DRAWCAPTEMP)(HWND, HDC, const RECT*, HFONT, HICON, LPCWSTR, UINT); -#else -#define PROC_NAME_DRAWCAPTIONTEMP "DrawCaptionTempA" -typedef BOOL (APIENTRY *DRAWCAPTEMP)(HWND, HDC, const RECT*, HFONT, HICON, LPCSTR, UINT); -#endif -typedef HRESULT(APIENTRY *SHINVDEFCMD)(HWND, IShellFolder*, LPCITEMIDLIST); -typedef void (APIENTRY *RUNFILEDLG)(HWND, HICON, LPCWSTR, LPCWSTR, LPCWSTR, UINT); -typedef void (APIENTRY *EXITWINDLG)(HWND); -typedef HRESULT(APIENTRY *SHWINHELP)(HWND, LPWSTR, UINT, DWORD); - -/* Constants for RunFileDlg */ -#define RFF_CALCDIRECTORY 0x04 /* Calculates the working directory from the file name. */ - #define ASSERT(cond) \ do if (!(cond)) { \ Win32DbgPrint(__FILE__, __LINE__, "ASSERTION %s FAILED!\n", #cond); \ } while (0) extern HINSTANCE hExplorerInstance; -extern HMODULE hUser32; extern HANDLE hProcessHeap; extern HKEY hkExplorer; -extern DRAWCAPTEMP DrawCapTemp; - -/* - * dragdrop.c - */ - -typedef struct _DROPTARGET_CALLBACKS -{ - HRESULT(*OnDragEnter)(IN IDropTarget *pDropTarget, - IN PVOID Context, - IN const FORMATETC *Format, - IN DWORD grfKeyState, - IN POINTL pt, - IN OUT DWORD *pdwEffect); - HRESULT(*OnDragOver)(IN IDropTarget *pDropTarget, - IN PVOID Context, - IN DWORD grfKeyState, - IN POINTL pt, - IN OUT DWORD *pdwEffect); - HRESULT(*OnDragLeave)(IN IDropTarget *pDropTarget, - IN PVOID Context); - HRESULT(*OnDrop)(IN IDropTarget *pDropTarget, - IN PVOID Context, - IN const FORMATETC *Format, - IN DWORD grfKeyState, - IN POINTL pt, - IN OUT DWORD *pdwEffect); -} DROPTARGET_CALLBACKS, *PDROPTARGET_CALLBACKS; - -IDropTarget * -CreateDropTarget(IN HWND hwndTarget, -IN DWORD nSupportedFormats, -IN const FORMATETC *Formats OPTIONAL, -IN PVOID Context OPTIONAL, -IN const DROPTARGET_CALLBACKS *Callbacks OPTIONAL); /* * explorer.c */ +static inline LONG SetWindowStyle(IN HWND hWnd, IN LONG dwStyleMask, -IN LONG dwStyle); +IN LONG dwStyle) +{ + return SHSetWindowBits(hWnd, GWL_STYLE, dwStyleMask, dwStyle); +} +static inline LONG SetWindowExStyle(IN HWND hWnd, IN LONG dwStyleMask, -IN LONG dwStyle); +IN LONG dwStyle) +{ + return SHSetWindowBits(hWnd, GWL_EXSTYLE, dwStyleMask, dwStyle); +} HMENU LoadPopupMenu(IN HINSTANCE hInstance, diff --git a/base/shell/explorer/resource.h b/base/shell/explorer/resource.h index 08ac0614b62..4fa2ba298b1 100644 --- a/base/shell/explorer/resource.h +++ b/base/shell/explorer/resource.h @@ -17,6 +17,14 @@ #define IDB_STARTMENU 101 +#define IDA_TASKBAR 251 + +#define IDMA_START 305 +#define IDMA_CYCLE_FOCUS 41008 +#define IDMA_SEARCH 41093 +#define IDMA_RESTORE_OPEN 416 +#define IDMA_MINIMIZE_ALL 419 + #define ID_SHELL_CMD_FIRST 0xF #define ID_SHELL_CMD_LAST 0x7FEF #define ID_SHELL_CMD_PROPERTIES (ID_SHELL_CMD_LAST + 1) diff --git a/base/shell/explorer/rshell.cpp b/base/shell/explorer/rshell.cpp index 49e2352153c..9e35490cb3c 100644 --- a/base/shell/explorer/rshell.cpp +++ b/base/shell/explorer/rshell.cpp @@ -135,7 +135,7 @@ DWORD WINAPI _WinList_Init(void) } } - hFallback = GetModuleHandleW(L"shdocvw.dll"); + hFallback = LoadLibraryW(L"shdocvw.dll"); if (hFallback) { diff --git a/base/shell/explorer/startctxmnu.cpp b/base/shell/explorer/startctxmnu.cpp index 4e625f1d190..071fc541d9f 100644 --- a/base/shell/explorer/startctxmnu.cpp +++ b/base/shell/explorer/startctxmnu.cpp @@ -29,23 +29,23 @@ class CStartMenuBtnCtxMenu : public CComObjectRootEx, public IContextMenu { - HWND hWndOwner; - CComPtr TrayWnd; - CComPtr pcm; - CComPtr psf; - LPITEMIDLIST pidl; + CComPtr m_TrayWnd; + CComPtr m_Inner; + CComPtr m_Folder; + + HWND m_Owner; + LPITEMIDLIST m_FolderPidl; HRESULT CreateContextMenuFromShellFolderPidl(HMENU hPopup) { - CComPtr pcm; HRESULT hRet; - hRet = psf->GetUIObjectOf(hWndOwner, 1, (LPCITEMIDLIST *) &pidl, IID_NULL_PPV_ARG(IContextMenu, &pcm)); + hRet = m_Folder->GetUIObjectOf(m_Owner, 1, (LPCITEMIDLIST *) &m_FolderPidl, IID_NULL_PPV_ARG(IContextMenu, &m_Inner)); if (SUCCEEDED(hRet)) { if (hPopup != NULL) { - hRet = pcm->QueryContextMenu( + hRet = m_Inner->QueryContextMenu( hPopup, 0, ID_SHELL_CMD_FIRST, @@ -84,7 +84,7 @@ class CStartMenuBtnCtxMenu : if (!SHRestricted(REST_NOCOMMONGROUPS)) { /* Check if we should add menu items for the common start menu */ - hRet = SHGetFolderPath(hWndOwner, + hRet = SHGetFolderPath(m_Owner, CSIDL_COMMON_STARTMENU, NULL, SHGFP_TYPE_CURRENT, @@ -133,8 +133,8 @@ class CStartMenuBtnCtxMenu : public: HRESULT Initialize(ITrayWindow * pTrayWnd, IN HWND hWndOwner) { - this->TrayWnd = pTrayWnd; - this->hWndOwner = hWndOwner; + m_TrayWnd = pTrayWnd; + m_Owner = hWndOwner; return S_OK; } @@ -150,21 +150,21 @@ public: HRESULT hRet; psfDesktop = NULL; - pcm = NULL; + m_Inner = NULL; - pidlStart = SHCloneSpecialIDList(hWndOwner, CSIDL_STARTMENU, TRUE); + pidlStart = SHCloneSpecialIDList(m_Owner, CSIDL_STARTMENU, TRUE); if (pidlStart != NULL) { - pidl = ILClone(ILFindLastID(pidlStart)); + m_FolderPidl = ILClone(ILFindLastID(pidlStart)); ILRemoveLastID(pidlStart); - if (pidl != NULL) + if (m_FolderPidl != NULL) { hRet = SHGetDesktopFolder(&psfDesktop); if (SUCCEEDED(hRet)) { - hRet = psfDesktop->BindToObject(pidlStart, NULL, IID_PPV_ARG(IShellFolder, &psf)); + hRet = psfDesktop->BindToObject(pidlStart, NULL, IID_PPV_ARG(IShellFolder, &m_Folder)); if (SUCCEEDED(hRet)) { CreateContextMenuFromShellFolderPidl(hPopup); @@ -192,21 +192,21 @@ public: /* Setup and invoke the shell command */ cmici.cbSize = sizeof(cmici); - cmici.hwnd = hWndOwner; + cmici.hwnd = m_Owner; cmici.lpVerb = MAKEINTRESOURCEA(uiCmdId - ID_SHELL_CMD_FIRST); cmici.nShow = SW_NORMAL; /* FIXME: Support Unicode!!! */ - if (SHGetPathFromIDListA(pidl, szDir)) + if (SHGetPathFromIDListA(m_FolderPidl, szDir)) { cmici.lpDirectory = szDir; } - pcm->InvokeCommand(&cmici); + m_Inner->InvokeCommand(&cmici); } else { - TrayWnd->ExecContextMenuCmd(uiCmdId); + m_TrayWnd->ExecContextMenuCmd(uiCmdId); } } return S_OK; @@ -228,18 +228,18 @@ public: virtual ~CStartMenuBtnCtxMenu() { - if (pidl) - ILFree(pidl); + if (m_FolderPidl) + ILFree(m_FolderPidl); } BEGIN_COM_MAP(CStartMenuBtnCtxMenu) COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu) END_COM_MAP() }; -HRESULT StartMenuBtnCtxMenuCreator(ITrayWindow * TrayWnd, IN HWND hWndOwner, IContextMenu ** ppCtxMenu) +HRESULT StartMenuBtnCtxMenuCreator(ITrayWindow * m_TrayWnd, IN HWND m_Owner, IContextMenu ** ppCtxMenu) { CStartMenuBtnCtxMenu * mnu = new CComObject(); - mnu->Initialize(TrayWnd, hWndOwner); + mnu->Initialize(m_TrayWnd, m_Owner); *ppCtxMenu = mnu; return S_OK; } diff --git a/base/shell/explorer/startmnu.cpp b/base/shell/explorer/startmnu.cpp index fde919cd913..ca6c6b86c05 100644 --- a/base/shell/explorer/startmnu.cpp +++ b/base/shell/explorer/startmnu.cpp @@ -47,13 +47,12 @@ CreateStartMenu(IN ITrayWindow *Tray, IN BOOL bSmallIcons) { HRESULT hr; - IObjectWithSite *pOws = NULL; - IMenuPopup *pMp = NULL; - IUnknown *pSms = NULL; - IMenuBand *pMb = NULL; - IInitializeObject *pIo; - IUnknown *pUnk = NULL; - IBandSite *pBs = NULL; + CComPtr pMp; + CComPtr pSms; + CComPtr pMb; + CComPtr pIo; + CComPtr pUnk; + CComPtr pBs; DWORD dwBandId = 0; hr = CreateStartMenuSite(Tray, IID_PPV_ARG(IUnknown, &pSms)); @@ -70,95 +69,47 @@ CreateStartMenu(IN ITrayWindow *Tray, hr = _CStartMenu_Constructor(IID_PPV_ARG(IMenuPopup, &pMp)); #endif if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("CoCreateInstance failed: %x\n", hr); - goto cleanup; - } - - hr = pMp->QueryInterface(IID_PPV_ARG(IObjectWithSite, &pOws)); - if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IMenuPopup_QueryInterface failed: %x\n", hr); - goto cleanup; - } + return NULL; /* Set the menu site so we can handle messages */ - hr = pOws->SetSite(pSms); + hr = IUnknown_SetSite(pMp, pSms); if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IObjectWithSite_SetSite failed: %x\n", hr); - goto cleanup; - } + return NULL; /* Initialize the menu object */ hr = pMp->QueryInterface(IID_PPV_ARG(IInitializeObject, &pIo)); if (SUCCEEDED(hr)) - { hr = pIo->Initialize(); - pIo->Release(); - } else hr = S_OK; /* Everything is initialized now. Let's get the IMenuBand interface. */ if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IMenuPopup_QueryInterface failed: %x\n", hr); - goto cleanup; - } + return NULL; hr = pMp->GetClient(&pUnk); if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IMenuPopup_GetClient failed: %x\n", hr); - goto cleanup; - } + return NULL; hr = pUnk->QueryInterface(IID_PPV_ARG(IBandSite, &pBs)); if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IUnknown_QueryInterface pBs failed: %x\n", hr); - goto cleanup; - } + return NULL; /* Finally we have the IBandSite interface, there's only one band in it that apparently provides the IMenuBand interface */ hr = pBs->EnumBands(0, &dwBandId); if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IBandSite_EnumBands failed: %x\n", hr); - goto cleanup; - } + return NULL; hr = pBs->GetBandObject(dwBandId, IID_PPV_ARG(IMenuBand, &pMb)); if (FAILED_UNEXPECTEDLY(hr)) - { - TRACE("IBandSite_GetBandObject failed: %x\n", hr); - goto cleanup; - } + return NULL; UpdateStartMenu(pMp, hbmBanner, bSmallIcons); -cleanup: - if (SUCCEEDED(hr)) - *ppMenuBand = pMb; - else if (pMb != NULL) - pMb->Release(); + *ppMenuBand = pMb.Detach(); - if (pBs != NULL) - pBs->Release(); - if (pUnk != NULL) - pUnk->Release(); - if (pOws != NULL) - pOws->Release(); - if (pMp != NULL) - pMp->Release(); - if (pSms != NULL) - pSms->Release(); - - if (FAILED_UNEXPECTEDLY(hr)) - return NULL; - return pMp; + return pMp.Detach(); } diff --git a/base/shell/explorer/startmnusite.cpp b/base/shell/explorer/startmnusite.cpp index e7dc2ed3add..6d7f6a70eac 100644 --- a/base/shell/explorer/startmnusite.cpp +++ b/base/shell/explorer/startmnusite.cpp @@ -33,8 +33,7 @@ class CStartMenuSite : public IOleCommandTarget, public IMenuPopup { - CComPtr Tray; - CComPtr StartMenuPopup; + CComPtr m_Tray; public: CStartMenuSite() @@ -65,7 +64,7 @@ public: { TRACE("ITrayPriv::GetWindow\n"); - *phwnd = Tray->GetHWND(); + *phwnd = m_Tray->GetHWND(); if (*phwnd != NULL) return S_OK; @@ -83,26 +82,11 @@ public: IN IShellFolder *pShellFolder, IN LPCITEMIDLIST pidl) { - HMODULE hShlwapi; HRESULT ret = S_FALSE; TRACE("ITrayPriv::Execute\n"); - hShlwapi = GetModuleHandle(TEXT("SHLWAPI.DLL")); - if (hShlwapi != NULL) - { - SHINVDEFCMD SHInvokeDefCmd; - - /* SHInvokeDefaultCommand */ - SHInvokeDefCmd = (SHINVDEFCMD) GetProcAddress(hShlwapi, - (LPCSTR) ((LONG) 279)); - if (SHInvokeDefCmd != NULL) - { - ret = SHInvokeDefCmd(Tray->GetHWND(), - pShellFolder, - pidl); - } - } + ret = SHInvokeDefaultCommand(m_Tray->GetHWND(), pShellFolder, pidl); return ret; } @@ -390,7 +374,7 @@ public: HRESULT Initialize(IN ITrayWindow *tray) { - Tray = tray; + m_Tray = tray; return S_OK; } diff --git a/base/shell/explorer/taskband.cpp b/base/shell/explorer/taskband.cpp index 91228b244bb..d925c58049c 100644 --- a/base/shell/explorer/taskband.cpp +++ b/base/shell/explorer/taskband.cpp @@ -37,16 +37,16 @@ class CTaskBand : public IWinEventHandler, public IOleCommandTarget { - CComPtr Tray; - CComPtr punkSite; + CComPtr m_Tray; + CComPtr m_Site; - HWND hWnd; - DWORD dwBandID; + HWND m_hWnd; + DWORD m_BandID; public: CTaskBand() : - hWnd(NULL), - dwBandID(0) + m_hWnd(NULL), + m_BandID(0) { } @@ -56,10 +56,10 @@ public: virtual HRESULT STDMETHODCALLTYPE GetRebarBandID( OUT DWORD *pdwBandID) { - if (dwBandID != (DWORD) -1) + if (m_BandID != (DWORD) -1) { if (pdwBandID != NULL) - *pdwBandID = dwBandID; + *pdwBandID = m_BandID; return S_OK; } @@ -77,10 +77,10 @@ public: knows the parent window of the Rebar control it creates when calling ITaskBarClient::SetDeskBarSite()! However, once we created a window we return the task switch window! */ - if (hWnd != NULL) - *phwnd = hWnd; + if (m_hWnd != NULL) + *phwnd = m_hWnd; else - *phwnd = Tray->GetHWND(); + *phwnd = m_Tray->GetHWND(); TRACE("ITaskBand::GetWindow(0x%p->0x%p)\n", phwnd, *phwnd); @@ -125,9 +125,9 @@ public: IN DWORD dwViewMode, IN OUT DESKBANDINFO *pdbi) { - TRACE("ITaskBand::GetBandInfo(0x%x,0x%x,0x%p) hWnd=0x%p\n", dwBandID, dwViewMode, pdbi, hWnd); + TRACE("ITaskBand::GetBandInfo(0x%x,0x%x,0x%p) hWnd=0x%p\n", dwBandID, dwViewMode, pdbi, m_hWnd); - if (hWnd != NULL) + if (m_hWnd != NULL) { /* The task band never has a title */ pdbi->dwMask &= ~DBIM_TITLE; @@ -164,7 +164,7 @@ public: /* Save the band ID for future use in case we need to check whether a given band is the task band */ - this->dwBandID = dwBandID; + m_BandID = dwBandID; TRACE("H: %d, Min: %d,%d, Integral.y: %d Actual: %d,%d\n", (dwViewMode & DBIF_VIEWMODE_VERTICAL) == 0, pdbi->ptMinSize.x, pdbi->ptMinSize.y, pdbi->ptIntegral.y, @@ -272,57 +272,31 @@ public: virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite) { - HRESULT hRet = E_FAIL; + HRESULT hRet; + HWND hwndSite; TRACE("ITaskBand::SetSite(0x%p)\n", pUnkSite); - /* Release the current site */ - if (punkSite != NULL) + hRet = IUnknown_GetWindow(pUnkSite, &hwndSite); + if (FAILED(hRet)) { - punkSite->Release(); + TRACE("Querying site window failed: 0x%x\n", hRet); + return hRet; } - punkSite = NULL; - hWnd = NULL; + TRACE("CreateTaskSwitchWnd(Parent: 0x%p)\n", hwndSite); - if (pUnkSite != NULL) + HWND hwndTaskSwitch = CreateTaskSwitchWnd(hwndSite, m_Tray); + if (!hwndTaskSwitch) { - IOleWindow *OleWindow; - - /* Check if the site supports IOleWindow */ - hRet = pUnkSite->QueryInterface(IID_PPV_ARG(IOleWindow, &OleWindow)); - if (SUCCEEDED(hRet)) - { - HWND hWndParent = NULL; - - hRet = OleWindow->GetWindow( - &hWndParent); - if (SUCCEEDED(hRet)) - { - /* Attempt to create the task switch window */ - - TRACE("CreateTaskSwitchWnd(Parent: 0x%p)\n", hWndParent); - hWnd = CreateTaskSwitchWnd(hWndParent, Tray); - if (hWnd != NULL) - { - punkSite = pUnkSite; - hRet = S_OK; - } - else - { - TRACE("CreateTaskSwitchWnd() failed!\n"); - OleWindow->Release(); - hRet = E_FAIL; - } - } - else - OleWindow->Release(); - } - else - TRACE("Querying IOleWindow failed: 0x%x\n", hRet); + ERR("CreateTaskSwitchWnd failed"); + return E_FAIL; } - return hRet; + m_Site = pUnkSite; + m_hWnd = hwndTaskSwitch; + + return S_OK; } virtual HRESULT STDMETHODCALLTYPE GetSite( @@ -331,9 +305,9 @@ public: { TRACE("ITaskBand::GetSite(0x%p,0x%p)\n", riid, ppvSite); - if (punkSite != NULL) + if (m_Site != NULL) { - return punkSite->QueryInterface(riid, ppvSite); + return m_Site->QueryInterface(riid, ppvSite); } *ppvSite = NULL; @@ -356,8 +330,8 @@ public: virtual HRESULT STDMETHODCALLTYPE ContainsWindow( IN HWND hWnd) { - if (hWnd == hWnd || - IsChild(hWnd, hWnd)) + if (hWnd == m_hWnd || + IsChild(m_hWnd, hWnd)) { TRACE("ITaskBand::ContainsWindow(0x%p) returns S_OK\n", hWnd); return S_OK; @@ -374,15 +348,15 @@ public: virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd) { - return (hWnd == this->hWnd) ? S_OK : S_FALSE; + return (hWnd == m_hWnd) ? S_OK : S_FALSE; } /*****************************************************************************/ HRESULT STDMETHODCALLTYPE _Init(IN OUT ITrayWindow *tray) { - Tray = tray; - dwBandID = (DWORD) -1; + m_Tray = tray; + m_BandID = (DWORD) -1; return S_OK; } diff --git a/base/shell/explorer/taskswnd.cpp b/base/shell/explorer/taskswnd.cpp index 9701ab8510b..9af02e3a94b 100644 --- a/base/shell/explorer/taskswnd.cpp +++ b/base/shell/explorer/taskswnd.cpp @@ -29,6 +29,9 @@ #define DUMP_TASKS 0 #define DEBUG_SHELL_HOOK 0 +#define MAX_TASKS_COUNT (0x7FFF) +#define TASK_ITEM_ARRAY_ALLOC 64 + const WCHAR szTaskSwitchWndClass [] = TEXT("MSTaskSwWClass"); const WCHAR szRunningApps [] = TEXT("Running Applications"); @@ -83,8 +86,6 @@ typedef struct _TASK_ITEM INT Index; INT IconIndex; - - union { DWORD dwFlags; @@ -101,8 +102,6 @@ typedef struct _TASK_ITEM }; } TASK_ITEM, *PTASK_ITEM; -#define TASK_ITEM_ARRAY_ALLOC 64 - class CTaskToolbar : public CToolbar { @@ -178,69 +177,56 @@ public: class CTaskSwitchWnd : public CWindowImpl < CTaskSwitchWnd, CWindow, CControlWinTraits > { - CTaskToolbar TaskBar; + CTaskToolbar m_TaskBar; - HWND hWndNotify; + CComPtr m_Tray; - UINT ShellHookMsg; - CComPtr Tray; + UINT m_ShellHookMsg; - PTASK_GROUP TaskGroups; + WORD m_TaskItemCount; + WORD m_AllocatedTaskItems; - WORD TaskItemCount; - WORD AllocatedTaskItems; - PTASK_ITEM TaskItems; - PTASK_ITEM ActiveTaskItem; + PTASK_GROUP m_TaskGroups; + PTASK_ITEM m_TaskItems; + PTASK_ITEM m_ActiveTaskItem; - HTHEME TaskBandTheme; - UINT TbButtonsPerLine; - WORD ToolbarBtnCount; + HTHEME m_Theme; + UINT m_ButtonsPerLine; + WORD m_ButtonCount; - HIMAGELIST TaskIcons; + HIMAGELIST m_ImageList; - BOOL IsGroupingEnabled; - BOOL IsDestroying; + BOOL m_IsGroupingEnabled; + BOOL m_IsDestroying; - SIZE ButtonSize; - WCHAR szBuf[255]; + SIZE m_ButtonSize; public: CTaskSwitchWnd() : - hWndNotify(NULL), - ShellHookMsg(NULL), - TaskGroups(NULL), - TaskItemCount(0), - AllocatedTaskItems(0), - TaskItems(0), - ActiveTaskItem(0), - TaskBandTheme(NULL), - TbButtonsPerLine(0), - ToolbarBtnCount(0), - TaskIcons(NULL), - IsGroupingEnabled(FALSE), - IsDestroying(FALSE) + m_ShellHookMsg(NULL), + m_TaskItemCount(0), + m_AllocatedTaskItems(0), + m_TaskGroups(NULL), + m_TaskItems(NULL), + m_ActiveTaskItem(NULL), + m_Theme(NULL), + m_ButtonsPerLine(0), + m_ButtonCount(0), + m_ImageList(NULL), + m_IsGroupingEnabled(FALSE), + m_IsDestroying(FALSE) { - ZeroMemory(&ButtonSize, sizeof(ButtonSize)); - szBuf[0] = 0; + ZeroMemory(&m_ButtonSize, sizeof(m_ButtonSize)); } virtual ~CTaskSwitchWnd() { } -#define MAX_TASKS_COUNT (0x7FFF) - VOID TaskSwitchWnd_UpdateButtonsSize(IN BOOL bRedrawDisabled); - LPTSTR GetWndTextFromTaskItem(IN PTASK_ITEM TaskItem) + INT GetWndTextFromTaskItem(IN PTASK_ITEM TaskItem, LPWSTR szBuf, DWORD cchBuf) { /* Get the window text without sending a message so we don't hang if an application isn't responding! */ - if (InternalGetWindowText(TaskItem->hWnd, - szBuf, - sizeof(szBuf) / sizeof(szBuf[0])) > 0) - { - return szBuf; - } - - return NULL; + return InternalGetWindowText(TaskItem->hWnd, szBuf, cchBuf); } @@ -251,15 +237,15 @@ public: PTASK_ITEM CurrentTaskItem, LastTaskItem; TRACE("Tasks dump:\n"); - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { - CurrentGroup = TaskGroups; + CurrentGroup = m_TaskGroups; while (CurrentGroup != NULL) { TRACE("- Group PID: 0x%p Tasks: %d Index: %d\n", CurrentGroup->dwProcessId, CurrentGroup->dwTaskCount, CurrentGroup->Index); - CurrentTaskItem = TaskItems; - LastTaskItem = CurrentTaskItem + TaskItemCount; + CurrentTaskItem = m_TaskItems; + LastTaskItem = CurrentTaskItem + m_TaskItemCount; while (CurrentTaskItem != LastTaskItem) { if (CurrentTaskItem->Group == CurrentGroup) @@ -272,8 +258,8 @@ public: CurrentGroup = CurrentGroup->Next; } - CurrentTaskItem = TaskItems; - LastTaskItem = CurrentTaskItem + TaskItemCount; + CurrentTaskItem = m_TaskItems; + LastTaskItem = CurrentTaskItem + m_TaskItemCount; while (CurrentTaskItem != LastTaskItem) { if (CurrentTaskItem->Group == NULL) @@ -285,8 +271,8 @@ public: } else { - CurrentTaskItem = TaskItems; - LastTaskItem = CurrentTaskItem + TaskItemCount; + CurrentTaskItem = m_TaskItems; + LastTaskItem = CurrentTaskItem + m_TaskItemCount; while (CurrentTaskItem != LastTaskItem) { TRACE("- Task hwnd: 0x%p Index: %d\n", CurrentTaskItem->hWnd, CurrentTaskItem->Index); @@ -304,10 +290,10 @@ public: int offset = bInserted ? +1 : -1; - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { /* Update all affected groups */ - CurrentGroup = TaskGroups; + CurrentGroup = m_TaskGroups; while (CurrentGroup != NULL) { if (CurrentGroup->IsCollapsed && @@ -315,7 +301,7 @@ public: { /* Update the toolbar buttons */ NewIndex = CurrentGroup->Index + offset; - if (TaskBar.SetButtonCommandId(CurrentGroup->Index + offset, NewIndex)) + if (m_TaskBar.SetButtonCommandId(CurrentGroup->Index + offset, NewIndex)) { CurrentGroup->Index = NewIndex; } @@ -328,8 +314,8 @@ public: } /* Update all affected task items */ - CurrentTaskItem = TaskItems; - LastTaskItem = CurrentTaskItem + TaskItemCount; + CurrentTaskItem = m_TaskItems; + LastTaskItem = CurrentTaskItem + m_TaskItemCount; while (CurrentTaskItem != LastTaskItem) { CurrentGroup = CurrentTaskItem->Group; @@ -346,7 +332,7 @@ public: UpdateTaskItemBtn: /* Update the toolbar buttons */ NewIndex = CurrentTaskItem->Index + offset; - if (TaskBar.SetButtonCommandId(CurrentTaskItem->Index + offset, NewIndex)) + if (m_TaskBar.SetButtonCommandId(CurrentTaskItem->Index + offset, NewIndex)) { CurrentTaskItem->Index = NewIndex; } @@ -404,15 +390,16 @@ public: INT UpdateTaskItemButton(IN PTASK_ITEM TaskItem) { - TBBUTTONINFO tbbi; + TBBUTTONINFO tbbi = { 0 }; HICON icon; + WCHAR windowText[255]; ASSERT(TaskItem->Index >= 0); tbbi.cbSize = sizeof(tbbi); tbbi.dwMask = TBIF_BYINDEX | TBIF_STATE | TBIF_TEXT | TBIF_IMAGE; tbbi.fsState = TBSTATE_ENABLED; - if (ActiveTaskItem == TaskItem) + if (m_ActiveTaskItem == TaskItem) tbbi.fsState |= TBSTATE_CHECKED; if (TaskItem->RenderFlashed) @@ -420,19 +407,22 @@ public: /* Check if we're updating a button that is the last one in the line. If so, we need to set the TBSTATE_WRAP flag! */ - if (!Tray->IsHorizontal() || (TbButtonsPerLine != 0 && - (TaskItem->Index + 1) % TbButtonsPerLine == 0)) + if (!m_Tray->IsHorizontal() || (m_ButtonsPerLine != 0 && + (TaskItem->Index + 1) % m_ButtonsPerLine == 0)) { tbbi.fsState |= TBSTATE_WRAP; } - tbbi.pszText = GetWndTextFromTaskItem(TaskItem); + if (GetWndTextFromTaskItem(TaskItem, windowText, _countof(windowText)) > 0) + { + tbbi.pszText = windowText; + } icon = GetWndIcon(TaskItem->hWnd); - TaskItem->IconIndex = ImageList_ReplaceIcon(TaskIcons, TaskItem->IconIndex, icon); + TaskItem->IconIndex = ImageList_ReplaceIcon(m_ImageList, TaskItem->IconIndex, icon); tbbi.iImage = TaskItem->IconIndex; - if (!TaskBar.SetButtonInfo(TaskItem->Index, &tbbi)) + if (!m_TaskBar.SetButtonInfo(TaskItem->Index, &tbbi)) { TaskItem->Index = -1; return -1; @@ -453,8 +443,8 @@ public: tbbi.cbSize = sizeof(tbbi); tbbi.dwMask = TBIF_IMAGE; - currentTaskItem = TaskItems; - LastItem = currentTaskItem + TaskItemCount; + currentTaskItem = m_TaskItems; + LastItem = currentTaskItem + m_TaskItemCount; while (currentTaskItem != LastItem) { if (currentTaskItem->IconIndex > TaskItem->IconIndex) @@ -462,12 +452,12 @@ public: currentTaskItem->IconIndex--; tbbi.iImage = currentTaskItem->IconIndex; - TaskBar.SetButtonInfo(currentTaskItem->Index, &tbbi); + m_TaskBar.SetButtonInfo(currentTaskItem->Index, &tbbi); } currentTaskItem++; } - ImageList_Remove(TaskIcons, TaskItem->IconIndex); + ImageList_Remove(m_ImageList, TaskItem->IconIndex); } PTASK_ITEM FindLastTaskItemOfGroup( @@ -477,10 +467,10 @@ public: PTASK_ITEM TaskItem, LastTaskItem, FoundTaskItem = NULL; DWORD dwTaskCount; - ASSERT(IsGroupingEnabled); + ASSERT(m_IsGroupingEnabled); - TaskItem = TaskItems; - LastTaskItem = TaskItem + TaskItemCount; + TaskItem = m_TaskItems; + LastTaskItem = TaskItem + m_TaskItemCount; dwTaskCount = (TaskGroup != NULL ? TaskGroup->dwTaskCount : MAX_TASKS_COUNT); @@ -516,7 +506,7 @@ public: /* NOTE: This routine assumes that the group is *not* collapsed! */ TaskGroup = TaskItem->Group; - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { if (TaskGroup != NULL) { @@ -549,12 +539,13 @@ public: } } - return ToolbarBtnCount; + return m_ButtonCount; } INT AddTaskItemButton(IN OUT PTASK_ITEM TaskItem) { - TBBUTTON tbBtn; + WCHAR windowText[255]; + TBBUTTON tbBtn = { 0 }; INT iIndex; HICON icon; @@ -571,37 +562,40 @@ public: } icon = GetWndIcon(TaskItem->hWnd); - TaskItem->IconIndex = ImageList_ReplaceIcon(TaskIcons, -1, icon); + TaskItem->IconIndex = ImageList_ReplaceIcon(m_ImageList, -1, icon); tbBtn.iBitmap = TaskItem->IconIndex; tbBtn.fsState = TBSTATE_ENABLED | TBSTATE_ELLIPSES; tbBtn.fsStyle = BTNS_CHECK | BTNS_NOPREFIX | BTNS_SHOWTEXT; tbBtn.dwData = TaskItem->Index; - tbBtn.iString = (DWORD_PTR) GetWndTextFromTaskItem(TaskItem); + if (GetWndTextFromTaskItem(TaskItem, windowText, _countof(windowText)) > 0) + { + tbBtn.iString = (DWORD_PTR) windowText; + } /* Find out where to insert the new button */ iIndex = CalculateTaskItemNewButtonIndex(TaskItem); ASSERT(iIndex >= 0); tbBtn.idCommand = iIndex; - TaskBar.BeginUpdate(); + m_TaskBar.BeginUpdate(); - if (TaskBar.InsertButton(iIndex, &tbBtn)) + if (m_TaskBar.InsertButton(iIndex, &tbBtn)) { UpdateIndexesAfter(iIndex, TRUE); TRACE("Added button %d for hwnd 0x%p\n", iIndex, TaskItem->hWnd); TaskItem->Index = iIndex; - ToolbarBtnCount++; + m_ButtonCount++; /* Update button sizes and fix the button wrapping */ UpdateButtonsSize(TRUE); return iIndex; } - TaskBar.EndUpdate(); + m_TaskBar.EndUpdate(); return -1; } @@ -618,14 +612,14 @@ public: if ((TaskGroup != NULL && !TaskGroup->IsCollapsed) || TaskGroup == NULL) { - TaskBar.BeginUpdate(); + m_TaskBar.BeginUpdate(); RemoveIcon(TaskItem); iIndex = TaskItem->Index; - if (TaskBar.DeleteButton(iIndex)) + if (m_TaskBar.DeleteButton(iIndex)) { TaskItem->Index = -1; - ToolbarBtnCount--; + m_ButtonCount--; UpdateIndexesAfter(iIndex, FALSE); @@ -634,7 +628,7 @@ public: return TRUE; } - TaskBar.EndUpdate(); + m_TaskBar.EndUpdate(); } } @@ -654,8 +648,8 @@ public: } /* Try to find an existing task group */ - TaskGroup = TaskGroups; - PrevLink = &TaskGroups; + TaskGroup = m_TaskGroups; + PrevLink = &m_TaskGroups; while (TaskGroup != NULL) { if (TaskGroup->dwProcessId == dwProcessId) @@ -696,8 +690,8 @@ public: if (dwNewTaskCount == 0) { /* Find the previous pointer in the chain */ - CurrentGroup = TaskGroups; - PrevLink = &TaskGroups; + CurrentGroup = m_TaskGroups; + PrevLink = &m_TaskGroups; while (CurrentGroup != TaskGroup) { PrevLink = &CurrentGroup->Next; @@ -735,8 +729,8 @@ public: { PTASK_ITEM TaskItem, LastItem; - TaskItem = TaskItems; - LastItem = TaskItem + TaskItemCount; + TaskItem = m_TaskItems; + LastItem = TaskItem + m_TaskItemCount; while (TaskItem != LastItem) { if (TaskItem->hWnd == hWnd) @@ -761,8 +755,8 @@ public: /* Try to find another task that belongs to the same process as the given window */ - TaskItem = TaskItems; - LastItem = TaskItem + TaskItemCount; + TaskItem = m_TaskItems; + LastItem = TaskItem + m_TaskItemCount; while (TaskItem != LastItem) { TaskGroup = TaskItem->Group; @@ -791,77 +785,77 @@ public: PTASK_ITEM AllocTaskItem() { - if (TaskItemCount >= MAX_TASKS_COUNT) + if (m_TaskItemCount >= MAX_TASKS_COUNT) { /* We need the most significant bit in 16 bit command IDs to indicate whether it is a task group or task item. WM_COMMAND limits command IDs to 16 bits! */ return NULL; } - ASSERT(AllocatedTaskItems >= TaskItemCount); + ASSERT(m_AllocatedTaskItems >= m_TaskItemCount); - if (TaskItemCount == 0) + if (m_TaskItemCount == 0) { - TaskItems = (PTASK_ITEM) HeapAlloc(hProcessHeap, + m_TaskItems = (PTASK_ITEM) HeapAlloc(hProcessHeap, 0, - TASK_ITEM_ARRAY_ALLOC * sizeof(*TaskItems)); - if (TaskItems != NULL) + TASK_ITEM_ARRAY_ALLOC * sizeof(*m_TaskItems)); + if (m_TaskItems != NULL) { - AllocatedTaskItems = TASK_ITEM_ARRAY_ALLOC; + m_AllocatedTaskItems = TASK_ITEM_ARRAY_ALLOC; } else return NULL; } - else if (TaskItemCount >= AllocatedTaskItems) + else if (m_TaskItemCount >= m_AllocatedTaskItems) { PTASK_ITEM NewArray; SIZE_T NewArrayLength, ActiveTaskItemIndex; - NewArrayLength = AllocatedTaskItems + TASK_ITEM_ARRAY_ALLOC; + NewArrayLength = m_AllocatedTaskItems + TASK_ITEM_ARRAY_ALLOC; NewArray = (PTASK_ITEM) HeapReAlloc(hProcessHeap, 0, - TaskItems, - NewArrayLength * sizeof(*TaskItems)); + m_TaskItems, + NewArrayLength * sizeof(*m_TaskItems)); if (NewArray != NULL) { - if (ActiveTaskItem != NULL) + if (m_ActiveTaskItem != NULL) { /* Fixup the ActiveTaskItem pointer */ - ActiveTaskItemIndex = ActiveTaskItem - TaskItems; - ActiveTaskItem = NewArray + ActiveTaskItemIndex; + ActiveTaskItemIndex = m_ActiveTaskItem - m_TaskItems; + m_ActiveTaskItem = NewArray + ActiveTaskItemIndex; } - AllocatedTaskItems = (WORD) NewArrayLength; - TaskItems = NewArray; + m_AllocatedTaskItems = (WORD) NewArrayLength; + m_TaskItems = NewArray; } else return NULL; } - return TaskItems + TaskItemCount++; + return m_TaskItems + m_TaskItemCount++; } VOID FreeTaskItem(IN OUT PTASK_ITEM TaskItem) { WORD wIndex; - if (TaskItem == ActiveTaskItem) - ActiveTaskItem = NULL; + if (TaskItem == m_ActiveTaskItem) + m_ActiveTaskItem = NULL; - wIndex = (WORD) (TaskItem - TaskItems); - if (wIndex + 1 < TaskItemCount) + wIndex = (WORD) (TaskItem - m_TaskItems); + if (wIndex + 1 < m_TaskItemCount) { MoveMemory(TaskItem, TaskItem + 1, - (TaskItemCount - wIndex - 1) * sizeof(*TaskItem)); + (m_TaskItemCount - wIndex - 1) * sizeof(*TaskItem)); } - TaskItemCount--; + m_TaskItemCount--; } VOID DeleteTaskItem(IN OUT PTASK_ITEM TaskItem) { - if (!IsDestroying) + if (!m_IsDestroying) { /* Delete the task button from the toolbar */ DeleteTaskItemButton(TaskItem); @@ -879,12 +873,12 @@ public: PTASK_ITEM CurrentTaskItem; PTASK_GROUP TaskGroup = NULL; - CurrentTaskItem = ActiveTaskItem; + CurrentTaskItem = m_ActiveTaskItem; if (TaskItem != NULL) TaskGroup = TaskItem->Group; - if (IsGroupingEnabled && + if (m_IsGroupingEnabled && TaskGroup != NULL && TaskGroup->IsCollapsed) { @@ -901,7 +895,7 @@ public: CurrentTaskGroup = CurrentTaskItem->Group; - if (IsGroupingEnabled && + if (m_IsGroupingEnabled && CurrentTaskGroup != NULL && CurrentTaskGroup->IsCollapsed) { @@ -912,7 +906,7 @@ public: } else { - ActiveTaskItem = NULL; + m_ActiveTaskItem = NULL; if (CurrentTaskItem->Index >= 0) { UpdateTaskItemButton(CurrentTaskItem); @@ -920,7 +914,7 @@ public: } } - ActiveTaskItem = TaskItem; + m_ActiveTaskItem = TaskItem; if (TaskItem != NULL && TaskItem->Index >= 0) { @@ -936,8 +930,8 @@ public: { PTASK_ITEM TaskItem, LastItem; - TaskItem = TaskItems; - LastItem = TaskItem + TaskItemCount; + TaskItem = m_TaskItems; + LastItem = TaskItem + m_TaskItemCount; while (TaskItem != LastItem) { if (TaskItem->Index == Index) @@ -953,7 +947,7 @@ public: { PTASK_GROUP CurrentGroup; - CurrentGroup = TaskGroups; + CurrentGroup = m_TaskGroups; while (CurrentGroup != NULL) { if (CurrentGroup->Index == Index) @@ -969,7 +963,7 @@ public: { PTASK_ITEM TaskItem; - if (!::IsWindow(hWnd) || Tray->IsSpecialHWND(hWnd)) + if (!::IsWindow(hWnd) || m_Tray->IsSpecialHWND(hWnd)) return FALSE; TaskItem = FindTaskItem(hWnd); @@ -985,7 +979,7 @@ public: TaskItem->Index = -1; TaskItem->Group = AddToTaskGroup(hWnd); - if (!IsDestroying) + if (!m_IsDestroying) { AddTaskItemButton(TaskItem); } @@ -1052,13 +1046,13 @@ public: { PTASK_ITEM CurrentTask; - if (TaskItemCount > 0) + if (m_TaskItemCount > 0) { - CurrentTask = TaskItems + TaskItemCount; + CurrentTask = m_TaskItems + m_TaskItemCount; do { DeleteTaskItem(--CurrentTask); - } while (CurrentTask != TaskItems); + } while (CurrentTask != m_TaskItems); } } @@ -1088,7 +1082,7 @@ public: PTASK_GROUP TaskGroup; TaskGroup = TaskItem->Group; - if (IsGroupingEnabled && TaskGroup != NULL) + if (m_IsGroupingEnabled && TaskGroup != NULL) { if (TaskGroup->IsCollapsed && TaskGroup->Index >= 0) { @@ -1131,9 +1125,9 @@ public: if (GetClientRect(&rcClient) && !IsRectEmpty(&rcClient)) { - if (ToolbarBtnCount > 0) + if (m_ButtonCount > 0) { - Horizontal = Tray->IsHorizontal(); + Horizontal = m_Tray->IsHorizontal(); if (Horizontal) { @@ -1141,27 +1135,27 @@ public: TBMETRICS tbm = { 0 }; tbm.cbSize = sizeof(tbm); tbm.dwMask = TBMF_BUTTONSPACING; - TaskBar.GetMetrics(&tbm); + m_TaskBar.GetMetrics(&tbm); - uiRows = (rcClient.bottom + tbm.cyButtonSpacing) / (ButtonSize.cy + tbm.cyButtonSpacing); + uiRows = (rcClient.bottom + tbm.cyButtonSpacing) / (m_ButtonSize.cy + tbm.cyButtonSpacing); if (uiRows == 0) uiRows = 1; - uiBtnsPerLine = (ToolbarBtnCount + uiRows - 1) / uiRows; + uiBtnsPerLine = (m_ButtonCount + uiRows - 1) / uiRows; } else { DbgPrint("VERTICAL!\n"); uiBtnsPerLine = 1; - uiRows = ToolbarBtnCount; + uiRows = m_ButtonCount; } if (!bRedrawDisabled) - TaskBar.BeginUpdate(); + m_TaskBar.BeginUpdate(); /* We might need to update the button spacing */ - int cxButtonSpacing = TaskBar.UpdateTbButtonSpacing( - Horizontal, TaskBandTheme != NULL, + int cxButtonSpacing = m_TaskBar.UpdateTbButtonSpacing( + Horizontal, m_Theme != NULL, uiRows, uiBtnsPerLine); /* Determine the minimum and maximum width of a button */ @@ -1188,11 +1182,11 @@ public: NewBtnSize = uiMax = rcClient.right; } - ButtonSize.cx = NewBtnSize; + m_ButtonSize.cx = NewBtnSize; - TbButtonsPerLine = uiBtnsPerLine; + m_ButtonsPerLine = uiBtnsPerLine; - for (ui = 0; ui != ToolbarBtnCount; ui++) + for (ui = 0; ui != m_ButtonCount; ui++) { TBBUTTONINFOW tbbi = { 0 }; tbbi.cbSize = sizeof(tbbi); @@ -1212,24 +1206,24 @@ public: tbbi.fsState |= TBSTATE_WRAP; } - if (ActiveTaskItem != NULL && - ActiveTaskItem->Index == (INT)ui) + if (m_ActiveTaskItem != NULL && + m_ActiveTaskItem->Index == (INT)ui) { tbbi.fsState |= TBSTATE_CHECKED; } - TaskBar.SetButtonInfo(ui, &tbbi); + m_TaskBar.SetButtonInfo(ui, &tbbi); } } else { - TbButtonsPerLine = 0; - ButtonSize.cx = 0; + m_ButtonsPerLine = 0; + m_ButtonSize.cx = 0; } } // FIXME: This seems to be enabling redraws prematurely, but moving it to its right place doesn't work! - TaskBar.EndUpdate(); + m_TaskBar.EndUpdate(); } BOOL CALLBACK EnumWindowsProc(IN HWND hWnd) @@ -1237,7 +1231,7 @@ public: /* Only show windows that still exist and are visible and none of explorer's special windows (such as the desktop or the tray window) */ if (::IsWindow(hWnd) && ::IsWindowVisible(hWnd) && - !Tray->IsSpecialHWND(hWnd)) + !m_Tray->IsSpecialHWND(hWnd)) { DWORD exStyle = GetWindowLong(hWnd, GWL_EXSTYLE); /* Don't list popup windows and also no tool windows */ @@ -1271,13 +1265,13 @@ public: { TRACE("OmThemeChanged\n"); - if (TaskBandTheme) - CloseThemeData(TaskBandTheme); + if (m_Theme) + CloseThemeData(m_Theme); if (IsThemeActive()) - TaskBandTheme = OpenThemeData(m_hWnd, L"TaskBand"); + m_Theme = OpenThemeData(m_hWnd, L"TaskBand"); else - TaskBandTheme = NULL; + m_Theme = NULL; return TRUE; } @@ -1289,41 +1283,30 @@ public: LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - if (!TaskBar.Initialize(m_hWnd)) + if (!m_TaskBar.Initialize(m_hWnd)) return FALSE; - SetWindowTheme(TaskBar.m_hWnd, L"TaskBand", NULL); + SetWindowTheme(m_TaskBar.m_hWnd, L"TaskBand", NULL); OnThemeChanged(); - TaskIcons = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 1000); - TaskBar.SetImageList(TaskIcons); + m_ImageList = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 1000); + m_TaskBar.SetImageList(m_ImageList); - /* Calculate the default button size. Don't save this in ButtonSize.cx so that + /* Calculate the default button size. Don't save this in m_ButtonSize.cx so that the actual button width gets updated correctly on the first recalculation */ int cx = GetSystemMetrics(SM_CXMINIMIZED); - int cy = ButtonSize.cy = GetSystemMetrics(SM_CYSIZE) + (2 * GetSystemMetrics(SM_CYEDGE)); - TaskBar.SetButtonSize(cx, cy); + int cy = m_ButtonSize.cy = GetSystemMetrics(SM_CYSIZE) + (2 * GetSystemMetrics(SM_CYEDGE)); + m_TaskBar.SetButtonSize(cx, cy); /* Set proper spacing between buttons */ - TaskBar.UpdateTbButtonSpacing(Tray->IsHorizontal(), TaskBandTheme != NULL); + m_TaskBar.UpdateTbButtonSpacing(m_Tray->IsHorizontal(), m_Theme != NULL); /* Register the shell hook */ - ShellHookMsg = RegisterWindowMessage(TEXT("SHELLHOOK")); + m_ShellHookMsg = RegisterWindowMessage(TEXT("SHELLHOOK")); - TRACE("ShellHookMsg got assigned number %d\n", ShellHookMsg); + TRACE("ShellHookMsg got assigned number %d\n", m_ShellHookMsg); - HMODULE hShell32 = GetModuleHandle(TEXT("SHELL32.DLL")); - if (hShell32 != NULL) - { - REGSHELLHOOK RegShellHook; - - /* RegisterShellHook */ - RegShellHook = (REGSHELLHOOK) GetProcAddress(hShell32, (LPCSTR) ((LONG) 181)); - if (RegShellHook != NULL) - { - RegShellHook(m_hWnd, 3); /* 1 if no NT! We're targeting NT so we don't care! */ - } - } + RegisterShellHook(m_hWnd, 3); /* 1 if no NT! We're targeting NT so we don't care! */ RefreshWindowList(); @@ -1338,27 +1321,12 @@ public: LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - HMODULE hShell32; - - IsDestroying = TRUE; + m_IsDestroying = TRUE; /* Unregister the shell hook */ - hShell32 = GetModuleHandle(TEXT("SHELL32.DLL")); - if (hShell32 != NULL) - { - REGSHELLHOOK RegShellHook; + RegisterShellHook(m_hWnd, FALSE); - /* RegisterShellHook */ - RegShellHook = (REGSHELLHOOK) GetProcAddress(hShell32, - (LPCSTR) ((LONG) 181)); - if (RegShellHook != NULL) - { - RegShellHook(m_hWnd, - FALSE); - } - } - - CloseThemeData(TaskBandTheme); + CloseThemeData(m_Theme); DeleteAllTasks(); return TRUE; } @@ -1434,7 +1402,7 @@ public: break; case HSHELL_TASKMAN: - PostMessage(Tray->GetHWND(), TWM_OPENSTARTMENU, 0, 0); + PostMessage(m_Tray->GetHWND(), TWM_OPENSTARTMENU, 0, 0); break; case HSHELL_ACTIVATESHELLWINDOW: @@ -1472,7 +1440,7 @@ public: VOID EnableGrouping(IN BOOL bEnable) { - IsGroupingEnabled = bEnable; + m_IsGroupingEnabled = bEnable; /* Collapse or expand groups if neccessary */ UpdateButtonsSize(FALSE); @@ -1486,11 +1454,11 @@ public: if (::IsWindow(TaskItem->hWnd)) { bIsMinimized = IsIconic(TaskItem->hWnd); - bIsActive = (TaskItem == ActiveTaskItem); + bIsActive = (TaskItem == m_ActiveTaskItem); - TRACE("Active TaskItem %p, selected TaskItem %p\n", ActiveTaskItem, TaskItem); - if (ActiveTaskItem) - TRACE("Active TaskItem hWnd=%p, TaskItem hWnd %p\n", ActiveTaskItem->hWnd, TaskItem->hWnd); + TRACE("Active TaskItem %p, selected TaskItem %p\n", m_ActiveTaskItem, TaskItem); + if (m_ActiveTaskItem) + TRACE("Active TaskItem hWnd=%p, TaskItem hWnd %p\n", m_ActiveTaskItem->hWnd, TaskItem->hWnd); TRACE("Valid button clicked. HWND=%p, IsMinimized=%s, IsActive=%s...\n", TaskItem->hWnd, bIsMinimized ? "Yes" : "No", bIsActive ? "Yes" : "No"); @@ -1530,7 +1498,7 @@ public: PTASK_ITEM TaskItem; PTASK_GROUP TaskGroup; - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { TaskGroup = FindTaskGroupByIndex((INT) wIndex); if (TaskGroup != NULL && TaskGroup->IsCollapsed) @@ -1561,7 +1529,7 @@ public: POINT pt; int cmd; GetCursorPos(&pt); - cmd = TrackPopupMenu(hmenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, TaskBar.m_hWnd, NULL); + cmd = TrackPopupMenu(hmenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, m_TaskBar.m_hWnd, NULL); if (cmd) { SetForegroundWindow(TaskItem->hWnd); // reactivate window after the context menu has closed @@ -1579,7 +1547,7 @@ public: { PTASK_ITEM TaskItem; PTASK_GROUP TaskGroup; - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { TaskGroup = FindTaskGroupByIndex((INT) wIndex); if (TaskGroup != NULL && TaskGroup->IsCollapsed) @@ -1619,7 +1587,7 @@ public: if (nmtbcd->nmcd.uItemState & CDIS_MARKED) { Ret = TBCDRF_NOBACKGROUND; - if (!TaskBandTheme) + if (!m_Theme) { SelectObject(nmtbcd->nmcd.hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); Rectangle(nmtbcd->nmcd.hdc, @@ -1630,7 +1598,7 @@ public: } else { - DrawThemeBackground(TaskBandTheme, nmtbcd->nmcd.hdc, TDP_FLASHBUTTON, 0, &nmtbcd->nmcd.rc, 0); + DrawThemeBackground(m_Theme, nmtbcd->nmcd.hdc, TDP_FLASHBUTTON, 0, &nmtbcd->nmcd.rc, 0); } nmtbcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT); return Ret; @@ -1705,9 +1673,9 @@ public: szClient.cx = LOWORD(lParam); szClient.cy = HIWORD(lParam); - if (TaskBar.m_hWnd != NULL) + if (m_TaskBar.m_hWnd != NULL) { - TaskBar.SetWindowPos(NULL, 0, 0, szClient.cx, szClient.cy, SWP_NOZORDER); + m_TaskBar.SetWindowPos(NULL, 0, 0, szClient.cx, szClient.cy, SWP_NOZORDER); UpdateButtonsSize(FALSE); } @@ -1723,7 +1691,7 @@ public: pt.y = GET_Y_LPARAM(lParam); ScreenToClient(&pt); - INT index = TaskBar.SendMessage(TB_HITTEST, 0, (LPARAM) &pt); + INT index = m_TaskBar.HitTest(&pt); if (index < 0) { /* Make the control appear to be transparent outside of any buttons */ @@ -1748,7 +1716,7 @@ public: LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LRESULT Ret = TRUE; - if (lParam != 0 && (HWND) lParam == TaskBar.m_hWnd) + if (lParam != 0 && (HWND) lParam == m_TaskBar.m_hWnd) { HandleButtonClick(LOWORD(wParam)); } @@ -1760,7 +1728,7 @@ public: LRESULT Ret = TRUE; const NMHDR *nmh = (const NMHDR *) lParam; - if (nmh->hwndFrom == TaskBar.m_hWnd) + if (nmh->hwndFrom == m_TaskBar.m_hWnd) { Ret = HandleToolbarNotification(nmh); } @@ -1769,8 +1737,8 @@ public: LRESULT OnEnableGrouping(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - LRESULT Ret = IsGroupingEnabled; - if ((BOOL)wParam != IsGroupingEnabled) + LRESULT Ret = m_IsGroupingEnabled; + if ((BOOL)wParam != m_IsGroupingEnabled) { EnableGrouping((BOOL) wParam); } @@ -1780,14 +1748,14 @@ public: LRESULT OnUpdateTaskbarPos(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { /* Update the button spacing */ - TaskBar.UpdateTbButtonSpacing(Tray->IsHorizontal(), TaskBandTheme != NULL); + m_TaskBar.UpdateTbButtonSpacing(m_Tray->IsHorizontal(), m_Theme != NULL); return TRUE; } LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LRESULT Ret; - if (TaskBar.m_hWnd != NULL) + if (m_TaskBar.m_hWnd != NULL) { POINT pt; INT_PTR iBtn; @@ -1795,9 +1763,9 @@ public: pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); - ::ScreenToClient(TaskBar.m_hWnd, &pt); + ::ScreenToClient(m_TaskBar.m_hWnd, &pt); - iBtn = TaskBar.HitTest(&pt); + iBtn = m_TaskBar.HitTest(&pt); if (iBtn >= 0) { HandleButtonRightClick(iBtn); @@ -1809,7 +1777,7 @@ public: { ForwardContextMenuMsg: /* Forward message */ - Ret = SendMessage(Tray->GetHWND(), uMsg, wParam, lParam); + Ret = SendMessage(m_Tray->GetHWND(), uMsg, wParam, lParam); } return Ret; } @@ -1821,8 +1789,8 @@ public: { RECT* prcMinRect = (RECT*) lParam; RECT rcItem, rcToolbar; - TaskBar.GetItemRect(TaskItem->Index, &rcItem); - GetWindowRect(TaskBar.m_hWnd, &rcToolbar); + m_TaskBar.GetItemRect(TaskItem->Index, &rcItem); + GetWindowRect(m_TaskBar.m_hWnd, &rcToolbar); OffsetRect(&rcItem, rcToolbar.left, rcToolbar.top); @@ -1860,16 +1828,15 @@ public: MESSAGE_HANDLER(TSWM_UPDATETASKBARPOS, OnUpdateTaskbarPos) MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu) MESSAGE_HANDLER(WM_TIMER, OnTimer) - MESSAGE_HANDLER(ShellHookMsg, HandleShellHookMsg) + MESSAGE_HANDLER(m_ShellHookMsg, HandleShellHookMsg) ALT_MSG_MAP(1) MESSAGE_HANDLER(WM_NCHITTEST, OnNcHitTestToolbar) END_MSG_MAP() HWND _Init(IN HWND hWndParent, IN OUT ITrayWindow *tray) { - Tray = tray; - hWndNotify = GetParent(); - IsGroupingEnabled = TRUE; /* FIXME */ + m_Tray = tray; + m_IsGroupingEnabled = TRUE; /* FIXME */ return Create(hWndParent, 0, szRunningApps, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TABSTOP); } }; diff --git a/base/shell/explorer/tbsite.cpp b/base/shell/explorer/tbsite.cpp index c5924564a63..93e38a7085a 100644 --- a/base/shell/explorer/tbsite.cpp +++ b/base/shell/explorer/tbsite.cpp @@ -36,15 +36,15 @@ class CTrayBandSite : { volatile LONG m_RefCount; - CComPtr Tray; + CComPtr m_Tray; - CComPtr punkInner; - CComPtr BandSite; - CComPtr TaskBand; - CComPtr WindowEventHandler; - CComPtr ContextMenu; + CComPtr m_Inner; + CComPtr m_BandSite; + CComPtr m_TaskBand; + CComPtr m_WindowEventHandler; + CComPtr m_ContextMenu; - HWND hWndRebar; + HWND m_Rebar; union { @@ -92,9 +92,9 @@ public: *ppvObj = NULL; return E_NOINTERFACE; } - else if (punkInner != NULL) + else if (m_Inner != NULL) { - return punkInner->QueryInterface(riid, ppvObj); + return m_Inner->QueryInterface(riid, ppvObj); } else { @@ -109,7 +109,7 @@ public: public: CTrayBandSite() : m_RefCount(0), - hWndRebar(NULL) + m_Rebar(NULL) { } @@ -150,10 +150,10 @@ public: { if (IsEqualGUID(clsid, CLSID_ITaskBand)) { - ASSERT(TaskBand != NULL); + ASSERT(m_TaskBand != NULL); /* We're trying to load the task band! Let's create it... */ - hRet = TaskBand->QueryInterface( + hRet = m_TaskBand->QueryInterface( riid, pvObj); if (SUCCEEDED(hRet)) @@ -200,11 +200,9 @@ public: return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE IsTaskBand( - IN IUnknown *punk) + virtual HRESULT STDMETHODCALLTYPE IsTaskBand(IN IUnknown *punk) { - return IsSameObject((IUnknown *) BandSite, - punk); + return IsSameObject(m_BandSite, punk); } virtual HRESULT STDMETHODCALLTYPE ProcessMessage( @@ -216,7 +214,7 @@ public: { HRESULT hRet; - ASSERT(hWndRebar != NULL); + ASSERT(m_Rebar != NULL); /* Custom task band behavior */ switch (uMsg) @@ -225,7 +223,7 @@ public: { const NMHDR *nmh = (const NMHDR *) lParam; - if (nmh->hwndFrom == hWndRebar) + if (nmh->hwndFrom == m_Rebar) { switch (nmh->code) { @@ -256,11 +254,11 @@ public: } /* Forward to the shell's IWinEventHandler interface to get the default shell behavior! */ - if (!WindowEventHandler) + if (!m_WindowEventHandler) return E_FAIL; /*TRACE("Calling IWinEventHandler::ProcessMessage(0x%p, 0x%x, 0x%p, 0x%p, 0x%p) hWndRebar=0x%p\n", hWnd, uMsg, wParam, lParam, plResult, hWndRebar);*/ - hRet = WindowEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, plResult); + hRet = m_WindowEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, plResult); #if 0 if (FAILED(hRet)) @@ -288,7 +286,7 @@ public: IN UINT uFlags, OUT IContextMenu **ppcm) { - if (ContextMenu == NULL) + if (m_ContextMenu == NULL) { HRESULT hRet; CComPtr pSs; @@ -305,7 +303,7 @@ public: return hRet; } - hRet = pSs->QueryInterface(IID_PPV_ARG(IContextMenu, &ContextMenu)); + hRet = pSs->QueryInterface(IID_PPV_ARG(IContextMenu, &m_ContextMenu)); if (!SUCCEEDED(hRet)) return hRet; @@ -313,22 +311,21 @@ public: if (ppcm != NULL) { - ContextMenu->AddRef(); - *ppcm = ContextMenu; + m_ContextMenu->AddRef(); + *ppcm = m_ContextMenu; } /* Add the menu items */ - return ContextMenu->QueryContextMenu(hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags); + return m_ContextMenu->QueryContextMenu(hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags); } - virtual HRESULT STDMETHODCALLTYPE Lock( - IN BOOL bLock) + virtual HRESULT STDMETHODCALLTYPE Lock(IN BOOL bLock) { BOOL bPrevLocked = Locked; BANDSITEINFO bsi; HRESULT hRet; - ASSERT(BandSite != NULL); + ASSERT(m_BandSite != NULL); if (bPrevLocked != bLock) { @@ -337,7 +334,7 @@ public: bsi.dwMask = BSIM_STYLE; bsi.dwStyle = (Locked ? BSIS_LOCKED | BSIS_NOGRIPPER : BSIS_AUTOGRIPPER); - hRet = BandSite->SetBandSiteInfo(&bsi); + hRet = m_BandSite->SetBandSiteInfo(&bsi); if (SUCCEEDED(hRet)) { hRet = Update(); @@ -351,38 +348,20 @@ public: /*******************************************************************/ - virtual HRESULT STDMETHODCALLTYPE AddBand( - IN IUnknown *punk) + virtual HRESULT STDMETHODCALLTYPE AddBand(IN IUnknown *punk) { - IOleCommandTarget *pOct; - HRESULT hRet; + /* Send the DBID_DELAYINIT command to initialize the band to be added */ + /* FIXME: Should be delayed */ + IUnknown_Exec(punk, IID_IDeskBand, DBID_DELAYINIT, 0, NULL, NULL); - hRet = punk->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pOct)); - if (SUCCEEDED(hRet)) - { - /* Send the DBID_DELAYINIT command to initialize the band to be added */ - /* FIXME: Should be delayed */ - pOct->Exec( - &IID_IDeskBand, - DBID_DELAYINIT, - 0, - NULL, - NULL); - - pOct->Release(); - } - - return BandSite->AddBand( - punk); + return m_BandSite->AddBand(punk); } virtual HRESULT STDMETHODCALLTYPE EnumBands( IN UINT uBand, OUT DWORD *pdwBandID) { - return BandSite->EnumBands( - uBand, - pdwBandID); + return m_BandSite->EnumBands(uBand, pdwBandID); } virtual HRESULT STDMETHODCALLTYPE QueryBand( @@ -395,7 +374,7 @@ public: HRESULT hRet; IDeskBand *pstb = NULL; - hRet = BandSite->QueryBand( + hRet = m_BandSite->QueryBand( dwBandID, &pstb, pdwState, @@ -404,7 +383,7 @@ public: if (SUCCEEDED(hRet)) { - hRet = IsSameObject(pstb, TaskBand); + hRet = IsSameObject(pstb, m_TaskBand); if (hRet == S_OK) { /* Add the BSSF_UNDELETEABLE flag to pdwState because the task bar band shouldn't be deletable */ @@ -431,13 +410,13 @@ public: IN DWORD dwMask, IN DWORD dwState) { - return BandSite->SetBandState(dwBandID, dwMask, dwState); + return m_BandSite->SetBandState(dwBandID, dwMask, dwState); } virtual HRESULT STDMETHODCALLTYPE RemoveBand( IN DWORD dwBandID) { - return BandSite->RemoveBand(dwBandID); + return m_BandSite->RemoveBand(dwBandID); } virtual HRESULT STDMETHODCALLTYPE GetBandObject( @@ -445,27 +424,26 @@ public: IN REFIID riid, OUT VOID **ppv) { - return BandSite->GetBandObject(dwBandID, riid, ppv); + return m_BandSite->GetBandObject(dwBandID, riid, ppv); } virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo( IN const BANDSITEINFO *pbsinfo) { - return BandSite->SetBandSiteInfo(pbsinfo); + return m_BandSite->SetBandSiteInfo(pbsinfo); } virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo( IN OUT BANDSITEINFO *pbsinfo) { - return BandSite->GetBandSiteInfo(pbsinfo); + return m_BandSite->GetBandSiteInfo(pbsinfo); } virtual BOOL HasTaskBand() { - ASSERT(TaskBand != NULL); + ASSERT(m_TaskBand != NULL); - return SUCCEEDED(TaskBand->GetRebarBandID( - NULL)); + return SUCCEEDED(m_TaskBand->GetRebarBandID(NULL)); } virtual HRESULT AddTaskBand() @@ -490,7 +468,7 @@ public: #else if (!HasTaskBand()) { - return BandSite->AddBand(TaskBand); + return m_BandSite->AddBand(m_TaskBand); } return S_OK; @@ -499,27 +477,15 @@ public: virtual HRESULT Update() { - IOleCommandTarget *pOct; - HRESULT hRet; - - hRet = punkInner->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pOct)); - if (SUCCEEDED(hRet)) - { - /* Send the DBID_BANDINFOCHANGED command to update the band site */ - hRet = pOct->Exec( - &IID_IDeskBand, + return IUnknown_Exec(m_Inner, + IID_IDeskBand, DBID_BANDINFOCHANGED, 0, NULL, NULL); - - pOct->Release(); - } - - return hRet; } - virtual VOID BroadcastOleCommandExec(const GUID *pguidCmdGroup, + virtual VOID BroadcastOleCommandExec(REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, @@ -530,13 +496,13 @@ public: UINT uBand = 0; /* Enumerate all bands */ - while (SUCCEEDED(BandSite->EnumBands(uBand, &dwBandID))) + while (SUCCEEDED(m_BandSite->EnumBands(uBand, &dwBandID))) { - if (SUCCEEDED(BandSite->GetBandObject(dwBandID, IID_PPV_ARG(IOleCommandTarget, &pOct)))) + if (SUCCEEDED(m_BandSite->GetBandObject(dwBandID, IID_PPV_ARG(IOleCommandTarget, &pOct)))) { /* Execute the command */ pOct->Exec( - pguidCmdGroup, + &pguidCmdGroup, nCmdID, nCmdExecOpt, pvaIn, @@ -552,23 +518,20 @@ public: virtual HRESULT FinishInit() { /* Broadcast the DBID_FINISHINIT command */ - BroadcastOleCommandExec(&IID_IDeskBand, DBID_FINISHINIT, 0, NULL, NULL); + BroadcastOleCommandExec(IID_IDeskBand, DBID_FINISHINIT, 0, NULL, NULL); return S_OK; } - virtual HRESULT Show( - IN BOOL bShow) + virtual HRESULT Show(IN BOOL bShow) { - IDeskBarClient *pDbc; + CComPtr pDbc; HRESULT hRet; - hRet = BandSite->QueryInterface(IID_PPV_ARG(IDeskBarClient, &pDbc)); + hRet = m_BandSite->QueryInterface(IID_PPV_ARG(IDeskBarClient, &pDbc)); if (SUCCEEDED(hRet)) { - hRet = pDbc->UIActivateDBC( - bShow ? DBC_SHOW : DBC_HIDE); - pDbc->Release(); + hRet = pDbc->UIActivateDBC(bShow ? DBC_SHOW : DBC_HIDE); } return hRet; @@ -576,30 +539,27 @@ public: virtual HRESULT LoadFromStream(IN OUT IStream *pStm) { - IPersistStream *pPStm; + CComPtr pPStm; HRESULT hRet; - ASSERT(BandSite != NULL); + ASSERT(m_BandSite != NULL); /* We implement the undocumented COM interface IBandSiteStreamCallback that the shell will query so that we can intercept and custom-load the task band when it finds the task band's CLSID (which is internal). This way we can prevent the shell from attempting to CoCreateInstance the (internal) task band, resulting in a failure... */ - hRet = BandSite->QueryInterface(IID_PPV_ARG(IPersistStream, &pPStm)); + hRet = m_BandSite->QueryInterface(IID_PPV_ARG(IPersistStream, &pPStm)); if (SUCCEEDED(hRet)) { - hRet = pPStm->Load( - pStm); + hRet = pPStm->Load(pStm); TRACE("->Load() returned 0x%x\n", hRet); - pPStm->Release(); } return hRet; } - virtual IStream * - GetUserBandsStream(IN DWORD grfMode) + virtual IStream * GetUserBandsStream(IN DWORD grfMode) { HKEY hkStreams; IStream *Stream = NULL; @@ -619,8 +579,7 @@ public: return Stream; } - virtual IStream * - GetDefaultBandsStream(IN DWORD grfMode) + virtual IStream * GetDefaultBandsStream(IN DWORD grfMode) { HKEY hkStreams; IStream *Stream = NULL; @@ -679,46 +638,46 @@ public: HRESULT _Init(IN OUT ITrayWindow *tray, OUT HWND *phWndRebar, OUT HWND *phwndTaskSwitch) { - IDeskBarClient *pDbc; - IDeskBand *pDb; - IOleWindow *pOw; + CComPtr pDbc; + CComPtr pDb; + CComPtr pOw; HRESULT hRet; *phWndRebar = NULL; *phwndTaskSwitch = NULL; - Tray = tray; + m_Tray = tray; /* Create a RebarBandSite provided by the shell */ hRet = CoCreateInstance(CLSID_RebarBandSite, static_cast(this), CLSCTX_INPROC_SERVER, - IID_PPV_ARG(IUnknown, &punkInner)); + IID_PPV_ARG(IUnknown, &m_Inner)); if (!SUCCEEDED(hRet)) { return hRet; } - hRet = punkInner->QueryInterface(IID_PPV_ARG(IBandSite, &BandSite)); + hRet = m_Inner->QueryInterface(IID_PPV_ARG(IBandSite, &m_BandSite)); if (!SUCCEEDED(hRet)) { return hRet; } - hRet = punkInner->QueryInterface(IID_PPV_ARG(IWinEventHandler, &WindowEventHandler)); + hRet = m_Inner->QueryInterface(IID_PPV_ARG(IWinEventHandler, &m_WindowEventHandler)); if (!SUCCEEDED(hRet)) { return hRet; } - TaskBand = CreateTaskBand(Tray); - if (TaskBand != NULL) + m_TaskBand = CreateTaskBand(m_Tray); + if (m_TaskBand != NULL) { /* Add the task band to the site */ - hRet = BandSite->QueryInterface(IID_PPV_ARG(IDeskBarClient, &pDbc)); + hRet = m_BandSite->QueryInterface(IID_PPV_ARG(IDeskBarClient, &pDbc)); if (SUCCEEDED(hRet)) { - hRet = TaskBand->QueryInterface(IID_PPV_ARG(IOleWindow, &pOw)); + hRet = m_TaskBand->QueryInterface(IID_PPV_ARG(IOleWindow, &pOw)); if (SUCCEEDED(hRet)) { /* We cause IDeskBarClient to create the rebar control by passing the new @@ -730,16 +689,14 @@ public: if (SUCCEEDED(hRet)) { /* The Rebar control is now created, we can query the window handle */ - hRet = pDbc->GetWindow(&hWndRebar); + hRet = pDbc->GetWindow(&m_Rebar); if (SUCCEEDED(hRet)) { /* We need to manually remove the RBS_BANDBORDERS style! */ - SetWindowStyle(hWndRebar, RBS_BANDBORDERS, 0); + SetWindowStyle(m_Rebar, RBS_BANDBORDERS, 0); } } - - pOw->Release(); } if (SUCCEEDED(hRet)) @@ -751,7 +708,7 @@ public: /* FIXME: We need to set the mode (and update) whenever the user docks the tray window to another monitor edge! */ - if (!Tray->IsHorizontal()) + if (!m_Tray->IsHorizontal()) dwMode = DBIF_VIEWMODE_VERTICAL; hRet = pDbc->SetModeDBC(dwMode); @@ -768,14 +725,12 @@ public: hRet = AddTaskBand(); if (SUCCEEDED(hRet)) { - hRet = TaskBand->QueryInterface(IID_PPV_ARG(IDeskBand, &pDb)); + hRet = m_TaskBand->QueryInterface(IID_PPV_ARG(IDeskBand, &pDb)); if (SUCCEEDED(hRet)) { hRet = pDb->GetWindow(phwndTaskSwitch); if (!SUCCEEDED(hRet)) *phwndTaskSwitch = NULL; - - pDb->Release(); } } @@ -790,7 +745,7 @@ public: TRUE); } - *phWndRebar = hWndRebar; + *phWndRebar = m_Rebar; return S_OK; } diff --git a/base/shell/explorer/trayntfy.cpp b/base/shell/explorer/trayntfy.cpp index bd53da0dda9..a46a8279ff1 100644 --- a/base/shell/explorer/trayntfy.cpp +++ b/base/shell/explorer/trayntfy.cpp @@ -41,13 +41,13 @@ class CNotifyToolbar : { static const int ICON_SIZE = 16; - HIMAGELIST SysIcons; - int VisibleButtonCount; + HIMAGELIST m_ImageList; + int m_VisibleButtonCount; public: CNotifyToolbar() : - SysIcons(NULL), - VisibleButtonCount(0) + m_ImageList(NULL), + m_VisibleButtonCount(0) { } @@ -57,7 +57,7 @@ public: int GetVisibleButtonCount() { - return VisibleButtonCount; + return m_VisibleButtonCount; } int FindItemByIconData(IN CONST NOTIFYICONDATA *iconData, NOTIFYICONDATA ** pdata) @@ -114,7 +114,7 @@ public: if (iconData->uFlags & NIF_ICON) { - tbBtn.iBitmap = ImageList_AddIcon(SysIcons, iconData->hIcon); + tbBtn.iBitmap = ImageList_AddIcon(m_ImageList, iconData->hIcon); } if (iconData->uFlags & NIF_TIP) @@ -122,7 +122,7 @@ public: StringCchCopy(notifyItem->szTip, _countof(notifyItem->szTip), iconData->szTip); } - VisibleButtonCount++; + m_VisibleButtonCount++; if (iconData->uFlags & NIF_STATE) { notifyItem->dwState &= ~iconData->dwStateMask; @@ -130,7 +130,7 @@ public: if (notifyItem->dwState & NIS_HIDDEN) { tbBtn.fsState |= TBSTATE_HIDDEN; - VisibleButtonCount--; + m_VisibleButtonCount--; } } @@ -165,7 +165,7 @@ public: if (iconData->uFlags & NIF_ICON) { tbbi.dwMask |= TBIF_IMAGE; - tbbi.iImage = ImageList_AddIcon(SysIcons, iconData->hIcon); + tbbi.iImage = ImageList_AddIcon(m_ImageList, iconData->hIcon); } if (iconData->uFlags & NIF_TIP) @@ -182,12 +182,12 @@ public: if (iconData->dwState & NIS_HIDDEN) { tbbi.fsState |= TBSTATE_HIDDEN; - VisibleButtonCount--; + m_VisibleButtonCount--; } else { tbbi.fsState &= ~TBSTATE_HIDDEN; - VisibleButtonCount++; + m_VisibleButtonCount++; } } @@ -362,8 +362,8 @@ public: SetWindowTheme(m_hWnd, L"TrayNotify", NULL); - SysIcons = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 1000); - SetImageList(SysIcons); + m_ImageList = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 1000); + SetImageList(m_ImageList); SetButtonSize(ICON_SIZE, ICON_SIZE); } diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index 74a90680bbb..0d8605eef5a 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -63,6 +63,292 @@ static const WCHAR szTrayWndClass [] = TEXT("Shell_TrayWnd"); const GUID IID_IShellDesktopTray = { 0x213e2df9, 0x9a14, 0x4328, { 0x99, 0xb1, 0x69, 0x61, 0xf9, 0x14, 0x3c, 0xe9 } }; +class CStartButton + : public CContainedWindow +{ + HIMAGELIST m_ImageList; + SIZE m_Size; + HFONT m_Font; + +public: + CStartButton(CMessageMap *pObject, DWORD dwMsgMapID) + : CContainedWindow(pObject, dwMsgMapID) + { + } + + virtual ~CStartButton() + { + if (m_ImageList != NULL) + ImageList_Destroy(m_ImageList); + + if (m_Font != NULL) + DeleteObject(m_Font); + } + + HFONT GetFont() + { + return m_Font; + } + + SIZE GetSize() + { + return m_Size; + } + + VOID UpdateSize(IN HBITMAP hbmStart = NULL) + { + SIZE Size = { 0, 0 }; + + if (m_ImageList == NULL || + !SendMessageW(BCM_GETIDEALSIZE, 0, (LPARAM) &Size)) + { + Size.cx = GetSystemMetrics(SM_CXEDGE); + Size.cy = GetSystemMetrics(SM_CYEDGE); + + if (hbmStart == NULL) + { + hbmStart = (HBITMAP) SendMessageW(BM_GETIMAGE, IMAGE_BITMAP, 0); + } + + if (hbmStart != NULL) + { + BITMAP bmp; + + if (GetObject(hbmStart, sizeof(bmp), &bmp) != 0) + { + Size.cx += bmp.bmWidth; + Size.cy += max(bmp.bmHeight, GetSystemMetrics(SM_CYCAPTION)); + } + else + { + /* Huh?! Shouldn't happen... */ + goto DefSize; + } + } + else + { +DefSize: + Size.cx += GetSystemMetrics(SM_CXMINIMIZED); + Size.cy += GetSystemMetrics(SM_CYCAPTION); + } + } + + /* Save the size of the start button */ + m_Size = Size; + } + + BOOL CreateImageList() + { + HICON hIconStart; + SIZE IconSize; + + if (m_ImageList != NULL) + return TRUE; + + IconSize.cx = GetSystemMetrics(SM_CXSMICON); + IconSize.cy = GetSystemMetrics(SM_CYSMICON); + + /* Load the start button icon and create a image list for it */ + hIconStart = (HICON) LoadImage(hExplorerInstance, + MAKEINTRESOURCE(IDI_START), + IMAGE_ICON, + IconSize.cx, + IconSize.cy, + LR_SHARED | LR_DEFAULTCOLOR); + + if (hIconStart == NULL) + return FALSE; + + m_ImageList = ImageList_Create(IconSize.cx, + IconSize.cy, + ILC_COLOR32 | ILC_MASK, + 1, 1); + if (m_ImageList == NULL) + return FALSE; + + int s = ImageList_ReplaceIcon(m_ImageList, -1, hIconStart); + if (s < 0) + { + /* Failed to add the icon! */ + ImageList_Destroy(m_ImageList); + m_ImageList = NULL; + + return FALSE; + } + + return TRUE; + } + + HBITMAP CreateBitmap() + { + WCHAR szStartCaption[32]; + HFONT hFontOld; + HDC hDC = NULL; + HDC hDCScreen = NULL; + SIZE Size, SmallIcon; + HBITMAP hbmpOld, hbmp = NULL; + HBITMAP hBitmap = NULL; + HICON hIconStart; + BOOL Ret; + UINT Flags; + RECT rcButton; + + /* NOTE: this is the backwards compatibility code that is used if the + Common Controls Version 6.0 are not available! */ + + if (!LoadString(hExplorerInstance, + IDS_START, + szStartCaption, + sizeof(szStartCaption) / sizeof(szStartCaption[0]))) + { + return NULL; + } + + /* Load the start button icon */ + SmallIcon.cx = GetSystemMetrics(SM_CXSMICON); + SmallIcon.cy = GetSystemMetrics(SM_CYSMICON); + hIconStart = (HICON) LoadImage(hExplorerInstance, + MAKEINTRESOURCE(IDI_START), + IMAGE_ICON, + SmallIcon.cx, + SmallIcon.cy, + LR_SHARED | LR_DEFAULTCOLOR); + + hDCScreen = GetDC(NULL); + if (hDCScreen == NULL) + goto Cleanup; + + hDC = CreateCompatibleDC(hDCScreen); + if (hDC == NULL) + goto Cleanup; + + hFontOld = (HFONT) SelectObject(hDC, m_Font); + + Ret = GetTextExtentPoint32(hDC, + szStartCaption, + _tcslen(szStartCaption), + &Size); + + SelectObject(hDC, hFontOld); + if (!Ret) + goto Cleanup; + + /* Make sure the height is at least the size of a caption icon. */ + if (hIconStart != NULL) + Size.cx += SmallIcon.cx + 4; + Size.cy = max(Size.cy, SmallIcon.cy); + + /* Create the bitmap */ + hbmp = CreateCompatibleBitmap(hDCScreen, + Size.cx, + Size.cy); + if (hbmp == NULL) + goto Cleanup; + + /* Caluclate the button rect */ + rcButton.left = 0; + rcButton.top = 0; + rcButton.right = Size.cx; + rcButton.bottom = Size.cy; + + /* Draw the button */ + hbmpOld = (HBITMAP) SelectObject(hDC, hbmp); + + Flags = DC_TEXT | DC_INBUTTON; + if (hIconStart != NULL) + Flags |= DC_ICON; + + DrawCaptionTemp(NULL, + hDC, + &rcButton, + m_Font, + hIconStart, + szStartCaption, + Flags); + + SelectObject(hDC, hbmpOld); + + if (!Ret) + goto Cleanup; + + /* We successfully created the bitmap! */ + hBitmap = hbmp; + hbmp = NULL; + +Cleanup: + if (hDCScreen != NULL) + { + ReleaseDC(NULL, hDCScreen); + } + + if (hbmp != NULL) + DeleteObject(hbmp); + + if (hDC != NULL) + DeleteDC(hDC); + + return hBitmap; + } + + VOID Initialize() + { + NONCLIENTMETRICS ncm; + + SetWindowTheme(m_hWnd, L"Start", NULL); + + if (m_Font == NULL) + { + /* Get the system fonts, we use the caption font, always bold, though. */ + ncm.cbSize = sizeof(ncm); + if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, FALSE)) + { + ncm.lfCaptionFont.lfWeight = FW_BOLD; + m_Font = CreateFontIndirect(&ncm.lfCaptionFont); + } + } + + SendMessage(WM_SETFONT, (WPARAM) m_Font, FALSE); + + if (CreateImageList()) + { + BUTTON_IMAGELIST bil; + + /* Try to set the start button image. this requires the Common + Controls 6.0 to be present (XP and later) */ + bil.himl = m_ImageList; + bil.margin.left = bil.margin.right = 1; + bil.margin.top = bil.margin.bottom = 1; + bil.uAlign = BUTTON_IMAGELIST_ALIGN_LEFT; + + if (SendMessageW(BCM_SETIMAGELIST, 0, (LPARAM) &bil)) + { + /* We're using the image list, remove the BS_BITMAP style and + don't center it horizontally */ + SetWindowStyle(m_hWnd, BS_BITMAP | BS_RIGHT, 0); + + UpdateSize(); + return; + } + + /* Fall back to the deprecated method on older systems that don't + support Common Controls 6.0 */ + ImageList_Destroy(m_ImageList); + m_ImageList = NULL; + } + + HBITMAP hbmStart = CreateBitmap(); + if (hbmStart != NULL) + { + UpdateSize(hbmStart); + + HBITMAP hbmOld = (HBITMAP) SendMessageW(BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmStart); + + if (hbmOld != NULL) + DeleteObject(hbmOld); + } + } +}; + class CTrayWindow : public CComCoClass, public CComObjectRootEx, @@ -70,48 +356,42 @@ class CTrayWindow : public ITrayWindow, public IShellDesktopTray { - CContainedWindow StartButton; + CStartButton m_StartButton; - HTHEME TaskbarTheme; - HWND hWndDesktop; + CComPtr m_StartMenuBand; + CComPtr m_StartMenuPopup; - IImageList * himlStartBtn; - SIZE StartBtnSize; - HFONT hStartBtnFont; - HFONT hCaptionFont; + HTHEME m_Theme; - HWND hwndRebar; - HWND hwndTaskSwitch; - HWND hwndTrayNotify; + HFONT m_CaptionFont; + HFONT m_Font; - DWORD Position; - HMONITOR Monitor; - HMONITOR PreviousMonitor; - DWORD DraggingPosition; - HMONITOR DraggingMonitor; + HWND m_DesktopWnd; + HWND m_Rebar; + HWND m_TaskSwitch; + HWND m_TrayNotify; - RECT rcTrayWnd[4]; - RECT rcNewPosSize; - SIZE TraySize; + DWORD m_Position; + HMONITOR m_Monitor; + HMONITOR m_PreviousMonitor; + DWORD m_DraggingPosition; + HMONITOR m_DraggingMonitor; - NONCLIENTMETRICS ncm; - HFONT hFont; + RECT m_TrayRects[4]; + SIZE m_TraySize; - CComPtr StartMenuBand; - CComPtr StartMenuPopup; - HBITMAP hbmStartMenu; + HWND m_TrayPropertiesOwner; + HWND m_RunFileDlgOwner; - HWND hwndTrayPropertiesOwner; - HWND hwndRunFileDlgOwner; + UINT m_AutoHideState; + SIZE m_AutoHideOffset; + TRACKMOUSEEVENT m_MouseTrackingInfo; - UINT AutoHideState; - SIZE AutoHideOffset; - TRACKMOUSEEVENT MouseTrackingInfo; - - HDPA hdpaShellServices; + HDPA m_ShellServices; public: - CComPtr TrayBandSite; + CComPtr m_TrayBandSite; + union { DWORD Flags; @@ -132,82 +412,55 @@ public: public: CTrayWindow() : - StartButton(this, 1), - TaskbarTheme(NULL), - hWndDesktop(NULL), - himlStartBtn(NULL), - hStartBtnFont(NULL), - hCaptionFont(NULL), - hwndRebar(NULL), - hwndTaskSwitch(NULL), - hwndTrayNotify(NULL), - Position(0), - Monitor(NULL), - PreviousMonitor(NULL), - DraggingPosition(0), - DraggingMonitor(NULL), - hFont(NULL), - hbmStartMenu(NULL), - hwndTrayPropertiesOwner(NULL), - hwndRunFileDlgOwner(NULL), - AutoHideState(NULL), - hdpaShellServices(NULL), + m_StartButton(this, 1), + m_Theme(NULL), + m_CaptionFont(NULL), + m_Font(NULL), + m_DesktopWnd(NULL), + m_Rebar(NULL), + m_TaskSwitch(NULL), + m_TrayNotify(NULL), + m_Position(0), + m_Monitor(NULL), + m_PreviousMonitor(NULL), + m_DraggingPosition(0), + m_DraggingMonitor(NULL), + m_TrayPropertiesOwner(NULL), + m_RunFileDlgOwner(NULL), + m_AutoHideState(NULL), + m_ShellServices(NULL), Flags(0) { - ZeroMemory(&StartBtnSize, sizeof(StartBtnSize)); - ZeroMemory(&rcTrayWnd, sizeof(rcTrayWnd)); - ZeroMemory(&rcNewPosSize, sizeof(rcNewPosSize)); - ZeroMemory(&TraySize, sizeof(TraySize)); - ZeroMemory(&ncm, sizeof(ncm)); - ZeroMemory(&AutoHideOffset, sizeof(AutoHideOffset)); - ZeroMemory(&MouseTrackingInfo, sizeof(MouseTrackingInfo)); + ZeroMemory(&m_TrayRects, sizeof(m_TrayRects)); + ZeroMemory(&m_TraySize, sizeof(m_TraySize)); + ZeroMemory(&m_AutoHideOffset, sizeof(m_AutoHideOffset)); + ZeroMemory(&m_MouseTrackingInfo, sizeof(m_MouseTrackingInfo)); } virtual ~CTrayWindow() { - (void) InterlockedExchangePointer((PVOID*) &m_hWnd, NULL); - - - if (hdpaShellServices != NULL) + if (m_ShellServices != NULL) { - ShutdownShellServices(hdpaShellServices); - hdpaShellServices = NULL; + ShutdownShellServices(m_ShellServices); + m_ShellServices = NULL; } - if (himlStartBtn != NULL) + if (m_CaptionFont != NULL) { - himlStartBtn->Release(); - himlStartBtn = NULL; + DeleteObject(m_CaptionFont); + m_CaptionFont = NULL; } - if (hCaptionFont != NULL) + if (m_Font != NULL) { - DeleteObject(hCaptionFont); - hCaptionFont = NULL; + DeleteObject(m_Font); + m_Font = NULL; } - if (hStartBtnFont != NULL) + if (m_Theme) { - DeleteObject(hStartBtnFont); - hStartBtnFont = NULL; - } - - if (hFont != NULL) - { - DeleteObject(hFont); - hFont = NULL; - } - - if (hbmStartMenu != NULL) - { - DeleteObject(hbmStartMenu); - hbmStartMenu = NULL; - } - - if (TaskbarTheme) - { - CloseThemeData(TaskbarTheme); - TaskbarTheme = NULL; + CloseThemeData(m_Theme); + m_Theme = NULL; } if (InterlockedDecrement(&TrayWndCount) == 0) @@ -220,13 +473,14 @@ public: BOOL UpdateNonClientMetrics() { + NONCLIENTMETRICS ncm; ncm.cbSize = sizeof(ncm); if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0)) { - if (hFont != NULL) - DeleteObject(hFont); + if (m_Font != NULL) + DeleteObject(m_Font); - hFont = CreateFontIndirect(&ncm.lfMessageFont); + m_Font = CreateFontIndirect(&ncm.lfMessageFont); return TRUE; } @@ -235,9 +489,9 @@ public: VOID SetWindowsFont() { - if (hwndTrayNotify != NULL) + if (m_TrayNotify != NULL) { - SendMessage(hwndTrayNotify, WM_SETFONT, (WPARAM) hFont, TRUE); + SendMessage(m_TrayNotify, WM_SETFONT, (WPARAM) m_Font, TRUE); } } @@ -369,7 +623,7 @@ GetPrimaryRect: OUT RECT *pRect) { if (pTraySize == NULL) - pTraySize = &TraySize; + pTraySize = &m_TraySize; *pRect = *pScreen; @@ -381,14 +635,12 @@ GetPrimaryRect: MakeTrayRectWithSize(Position, pTraySize, pRect); } - BOOL - IsPosHorizontal() + BOOL IsPosHorizontal() { - return Position == ABE_TOP || Position == ABE_BOTTOM; + return m_Position == ABE_TOP || m_Position == ABE_BOTTOM; } - HMONITOR - CalculateValidSize( + HMONITOR CalculateValidSize( IN DWORD Position, IN OUT RECT *pRect) { @@ -446,8 +698,7 @@ GetPrimaryRect: #endif - DWORD - GetDraggingRectFromPt( + DWORD GetDraggingRectFromPt( IN POINT pt, OUT RECT *pRect, OUT HMONITOR *phMonitor) @@ -525,28 +776,25 @@ GetPrimaryScreenRect: ScreenOffset.cx, ScreenOffset.cy); - hMonNew = GetMonitorFromRect( - &rcTrayWnd[Pos]); + RECT rcPos = m_TrayRects[Pos]; + + hMonNew = GetMonitorFromRect(&rcPos); if (hMon != hMonNew) { SIZE szTray; /* Recalculate the rectangle, we're dragging to another monitor. We don't need to recalculate the rect on single monitor systems. */ - szTray.cx = rcTrayWnd[Pos].right - rcTrayWnd[Pos].left; - szTray.cy = rcTrayWnd[Pos].bottom - rcTrayWnd[Pos].top; + szTray.cx = rcPos.right - rcPos.left; + szTray.cy = rcPos.bottom - rcPos.top; - GetTrayRectFromScreenRect( - Pos, - &rcScreen, - &szTray, - pRect); + GetTrayRectFromScreenRect(Pos, &rcScreen, &szTray, pRect); if (AutoHide) { - pRect->left += AutoHideOffset.cx; - pRect->right += AutoHideOffset.cx; - pRect->top += AutoHideOffset.cy; - pRect->bottom += AutoHideOffset.cy; + pRect->left += m_AutoHideOffset.cx; + pRect->right += m_AutoHideOffset.cx; + pRect->top += m_AutoHideOffset.cy; + pRect->bottom += m_AutoHideOffset.cy; } hMon = hMonNew; } @@ -554,13 +802,13 @@ GetPrimaryScreenRect: { /* The user is dragging the tray window on the same monitor. We don't need to recalculate the rectangle */ - *pRect = rcTrayWnd[Pos]; + *pRect = rcPos; if (AutoHide) { - pRect->left += AutoHideOffset.cx; - pRect->right += AutoHideOffset.cx; - pRect->top += AutoHideOffset.cy; - pRect->bottom += AutoHideOffset.cy; + pRect->left += m_AutoHideOffset.cx; + pRect->right += m_AutoHideOffset.cx; + pRect->top += m_AutoHideOffset.cy; + pRect->bottom += m_AutoHideOffset.cy; } } @@ -569,8 +817,7 @@ GetPrimaryScreenRect: return Pos; } - DWORD - GetDraggingRectFromRect( + DWORD GetDraggingRectFromRect( IN OUT RECT *pRect, OUT HMONITOR *phMonitor) { @@ -588,9 +835,7 @@ GetPrimaryScreenRect: phMonitor); } - VOID - ChangingWinPos( - IN OUT LPWINDOWPOS pwp) + VOID ChangingWinPos(IN OUT LPWINDOWPOS pwp) { RECT rcTray; @@ -602,33 +847,33 @@ GetPrimaryScreenRect: rcTray.bottom = rcTray.top + pwp->cy; if (AutoHide) { - rcTray.left -= AutoHideOffset.cx; - rcTray.right -= AutoHideOffset.cx; - rcTray.top -= AutoHideOffset.cy; - rcTray.bottom -= AutoHideOffset.cy; + rcTray.left -= m_AutoHideOffset.cx; + rcTray.right -= m_AutoHideOffset.cx; + rcTray.top -= m_AutoHideOffset.cy; + rcTray.bottom -= m_AutoHideOffset.cy; } if (!EqualRect(&rcTray, - &rcTrayWnd[DraggingPosition])) + &m_TrayRects[m_DraggingPosition])) { /* Recalculate the rectangle, the user dragged the tray window to another monitor or the window was somehow else moved or resized */ - DraggingPosition = GetDraggingRectFromRect( + m_DraggingPosition = GetDraggingRectFromRect( &rcTray, - &DraggingMonitor); - //rcTrayWnd[DraggingPosition] = rcTray; + &m_DraggingMonitor); + //m_TrayRects[DraggingPosition] = rcTray; } //Monitor = CalculateValidSize( // DraggingPosition, // &rcTray); - Monitor = DraggingMonitor; - Position = DraggingPosition; + m_Monitor = m_DraggingMonitor; + m_Position = m_DraggingPosition; IsDragging = FALSE; - rcTrayWnd[Position] = rcTray; + m_TrayRects[m_Position] = rcTray; goto ChangePos; } else if (GetWindowRect(m_hWnd, &rcTray)) @@ -647,9 +892,7 @@ GetPrimaryScreenRect: rcTray.bottom = rcTray.top + pwp->cy; } - Position = GetDraggingRectFromRect( - &rcTray, - &Monitor); + m_Position = GetDraggingRectFromRect(&rcTray, &m_Monitor); if (!(pwp->flags & (SWP_NOMOVE | SWP_NOSIZE))) { @@ -658,48 +901,47 @@ GetPrimaryScreenRect: szWnd.cx = pwp->cx; szWnd.cy = pwp->cy; - MakeTrayRectWithSize(Position, &szWnd, &rcTray); + MakeTrayRectWithSize(m_Position, &szWnd, &rcTray); } if (AutoHide) { - rcTray.left -= AutoHideOffset.cx; - rcTray.right -= AutoHideOffset.cx; - rcTray.top -= AutoHideOffset.cy; - rcTray.bottom -= AutoHideOffset.cy; + rcTray.left -= m_AutoHideOffset.cx; + rcTray.right -= m_AutoHideOffset.cx; + rcTray.top -= m_AutoHideOffset.cy; + rcTray.bottom -= m_AutoHideOffset.cy; } - rcTrayWnd[Position] = rcTray; + m_TrayRects[m_Position] = rcTray; } else { /* If the user isn't resizing the tray window we need to make sure the new size or position is valid. this is to prevent changes to the window without user interaction. */ - rcTray = rcTrayWnd[Position]; + rcTray = m_TrayRects[m_Position]; } ChangePos: - TraySize.cx = rcTray.right - rcTray.left; - TraySize.cy = rcTray.bottom - rcTray.top; + m_TraySize.cx = rcTray.right - rcTray.left; + m_TraySize.cy = rcTray.bottom - rcTray.top; if (AutoHide) { - rcTray.left += AutoHideOffset.cx; - rcTray.right += AutoHideOffset.cx; - rcTray.top += AutoHideOffset.cy; - rcTray.bottom += AutoHideOffset.cy; + rcTray.left += m_AutoHideOffset.cx; + rcTray.right += m_AutoHideOffset.cx; + rcTray.top += m_AutoHideOffset.cy; + rcTray.bottom += m_AutoHideOffset.cy; } pwp->flags &= ~(SWP_NOMOVE | SWP_NOSIZE); pwp->x = rcTray.left; pwp->y = rcTray.top; - pwp->cx = TraySize.cx; - pwp->cy = TraySize.cy; + pwp->cx = m_TraySize.cx; + pwp->cy = m_TraySize.cy; } } - VOID - ApplyClipping(IN BOOL Clip) + VOID ApplyClipping(IN BOOL Clip) { RECT rcClip, rcWindow; HRGN hClipRgn; @@ -714,7 +956,7 @@ ChangePos: { rcClip = rcWindow; - GetScreenRect(Monitor, &rcClip); + GetScreenRect(m_Monitor, &rcClip); if (!IntersectRect(&rcClip, &rcClip, &rcWindow)) { @@ -742,29 +984,25 @@ ChangePos: RECT rcTray, rcWorkArea; /* If monitor has changed then fix the previous monitors work area */ - if (PreviousMonitor != Monitor) + if (m_PreviousMonitor != m_Monitor) { - GetScreenRect( - PreviousMonitor, - &rcWorkArea); + GetScreenRect(m_PreviousMonitor, &rcWorkArea); SystemParametersInfo(SPI_SETWORKAREA, 1, &rcWorkArea, SPIF_SENDCHANGE); } - rcTray = rcTrayWnd[Position]; + rcTray = m_TrayRects[m_Position]; - GetScreenRect( - Monitor, - &rcWorkArea); - PreviousMonitor = Monitor; + GetScreenRect(m_Monitor, &rcWorkArea); + m_PreviousMonitor = m_Monitor; /* If AutoHide is false then change the workarea to exclude the area that the taskbar covers. */ if (!AutoHide) { - switch (Position) + switch (m_Position) { case ABE_TOP: rcWorkArea.top = rcTray.bottom; @@ -792,18 +1030,16 @@ ChangePos: { RECT rcTray; - rcTray = rcTrayWnd[Position]; + rcTray = m_TrayRects[m_Position]; if (AutoHide) { - rcTray.left += AutoHideOffset.cx; - rcTray.right += AutoHideOffset.cx; - rcTray.top += AutoHideOffset.cy; - rcTray.bottom += AutoHideOffset.cy; + rcTray.left += m_AutoHideOffset.cx; + rcTray.right += m_AutoHideOffset.cx; + rcTray.top += m_AutoHideOffset.cy; + rcTray.bottom += m_AutoHideOffset.cy; } - // TRACE("CheckTray: %d: %d,%d,%d,%d\n", Position, rcTray.left, rcTray.top, rcTray.right, rcTray.bottom); - /* Move the tray window */ SetWindowPos(NULL, rcTray.left, @@ -827,14 +1063,14 @@ ChangePos: RECT Rect; } TW_STRUCKRECTS2, *PTW_STUCKRECTS2; - VOID - RegLoadSettings() + VOID RegLoadSettings() { DWORD Pos; TW_STRUCKRECTS2 sr; RECT rcScreen; SIZE WndSize, EdgeSize, DlgFrameSize; DWORD cbSize = sizeof(sr); + SIZE StartBtnSize = m_StartButton.GetSize(); EdgeSize.cx = GetSystemMetrics(SM_CXEDGE); EdgeSize.cy = GetSystemMetrics(SM_CYEDGE); @@ -857,12 +1093,12 @@ ChangePos: /* FIXME: Are there more flags? */ #if WIN7_COMPAT_MODE - Position = ABE_LEFT; + m_Position = ABE_LEFT; #else if (sr.Position > ABE_BOTTOM) - Position = ABE_BOTTOM; + m_Position = ABE_BOTTOM; else - Position = sr.Position; + m_Position = sr.Position; #endif /* Try to find out which monitor the tray window was located on last. @@ -876,7 +1112,7 @@ ChangePos: } else { - Position = ABE_BOTTOM; + m_Position = ABE_BOTTOM; AlwaysOnTop = TRUE; /* Use the minimum size of the taskbar, we'll use the start @@ -921,7 +1157,7 @@ ChangePos: WndSize.cy = sr.Size.cy; /* Save the calculated size */ - TraySize = WndSize; + m_TraySize = WndSize; /* Calculate all docking rectangles. We need to do this here so they're initialized and dragging the tray window to another position gives @@ -933,19 +1169,17 @@ ChangePos: GetTrayRectFromScreenRect( Pos, &rcScreen, - &TraySize, - &rcTrayWnd[Pos]); - // TRACE("rcTrayWnd[%d(%d)]: %d,%d,%d,%d\n", Pos, Position, rcTrayWnd[Pos].left, rcTrayWnd[Pos].top, rcTrayWnd[Pos].right, rcTrayWnd[Pos].bottom); + &m_TraySize, + &m_TrayRects[Pos]); + // TRACE("m_TrayRects[%d(%d)]: %d,%d,%d,%d\n", Pos, Position, m_TrayRects[Pos].left, m_TrayRects[Pos].top, m_TrayRects[Pos].right, m_TrayRects[Pos].bottom); } /* Determine which monitor we are on. It shouldn't matter which docked position rectangle we use */ - Monitor = GetMonitorFromRect( - &rcTrayWnd[ABE_LEFT]); + m_Monitor = GetMonitorFromRect(&m_TrayRects[ABE_LEFT]); } - UINT - TrackMenu( + UINT TrackMenu( IN HMENU hMenu, IN POINT *ppt OPTIONAL, IN HWND hwndExclude OPTIONAL, @@ -1063,54 +1297,7 @@ ChangePos: return hr; } - - VOID UpdateStartButton(IN HBITMAP hbmStart OPTIONAL) - { - SIZE Size = { 0, 0 }; - - if (himlStartBtn == NULL || - !StartButton.SendMessage(BCM_GETIDEALSIZE, 0, (LPARAM) &Size)) - { - Size.cx = GetSystemMetrics(SM_CXEDGE); - Size.cy = GetSystemMetrics(SM_CYEDGE); - - if (hbmStart == NULL) - { - hbmStart = (HBITMAP) StartButton.SendMessage(BM_GETIMAGE, IMAGE_BITMAP, 0); - } - - if (hbmStart != NULL) - { - BITMAP bmp; - - if (GetObject(hbmStart, - sizeof(bmp), - &bmp) != 0) - { - Size.cx += bmp.bmWidth; - Size.cy += max(bmp.bmHeight, - GetSystemMetrics(SM_CYCAPTION)); - } - else - { - /* Huh?! Shouldn't happen... */ - goto DefSize; - } - } - else - { -DefSize: - Size.cx += GetSystemMetrics(SM_CXMINIMIZED); - Size.cy += GetSystemMetrics(SM_CYCAPTION); - } - } - - /* Save the size of the start button */ - StartBtnSize = Size; - } - - VOID - AlignControls(IN PRECT prcClient OPTIONAL) + VOID AlignControls(IN PRECT prcClient OPTIONAL) { RECT rcClient; SIZE TraySize, StartSize; @@ -1118,7 +1305,7 @@ DefSize: BOOL Horizontal; HDWP dwp; - UpdateStartButton(NULL); + m_StartButton.UpdateSize(); if (prcClient != NULL) { rcClient = *prcClient; @@ -1140,15 +1327,15 @@ DefSize: return; /* Limit the Start button width to the client width, if neccessary */ - StartSize = StartBtnSize; + StartSize = m_StartButton.GetSize(); if (StartSize.cx > rcClient.right) StartSize.cx = rcClient.right; - if (StartButton.m_hWnd != NULL) + if (m_StartButton.m_hWnd != NULL) { /* Resize and reposition the button */ dwp = DeferWindowPos(dwp, - StartButton.m_hWnd, + m_StartButton.m_hWnd, NULL, 0, 0, @@ -1171,8 +1358,8 @@ DefSize: TraySize.cy = 0; } - if (hwndTrayNotify != NULL && - SendMessage(hwndTrayNotify, + if (m_TrayNotify != NULL && + SendMessage(m_TrayNotify, TNWM_GETMINIMUMSIZE, (WPARAM) Horizontal, (LPARAM) &TraySize)) @@ -1184,7 +1371,7 @@ DefSize: ptTrayNotify.y = rcClient.bottom - TraySize.cy; dwp = DeferWindowPos(dwp, - hwndTrayNotify, + m_TrayNotify, NULL, ptTrayNotify.x, ptTrayNotify.y, @@ -1196,12 +1383,12 @@ DefSize: } /* Resize/Move the rebar control */ - if (hwndRebar != NULL) + if (m_Rebar != NULL) { POINT ptRebar = { 0, 0 }; SIZE szRebar; - SetWindowStyle(hwndRebar, CCS_VERT, Horizontal ? 0 : CCS_VERT); + SetWindowStyle(m_Rebar, CCS_VERT, Horizontal ? 0 : CCS_VERT); if (Horizontal) { @@ -1217,7 +1404,7 @@ DefSize: } dwp = DeferWindowPos(dwp, - hwndRebar, + m_Rebar, NULL, ptRebar.x, ptRebar.y, @@ -1229,189 +1416,24 @@ DefSize: if (dwp != NULL) EndDeferWindowPos(dwp); - if (hwndTaskSwitch != NULL) + if (m_TaskSwitch != NULL) { /* Update the task switch window configuration */ - SendMessage(hwndTaskSwitch, - TSWM_UPDATETASKBARPOS, - 0, - 0); + SendMessage(m_TaskSwitch, TSWM_UPDATETASKBARPOS, 0, 0); } } - BOOL - CreateStartBtnImageList() - { - HICON hIconStart; - SIZE IconSize; - - if (himlStartBtn != NULL) - return TRUE; - - IconSize.cx = GetSystemMetrics(SM_CXSMICON); - IconSize.cy = GetSystemMetrics(SM_CYSMICON); - - /* Load the start button icon and create a image list for it */ - hIconStart = (HICON) LoadImage(hExplorerInstance, - MAKEINTRESOURCE(IDI_START), - IMAGE_ICON, - IconSize.cx, - IconSize.cy, - LR_SHARED | LR_DEFAULTCOLOR); - - if (hIconStart != NULL) - { - himlStartBtn = (IImageList*) ImageList_Create(IconSize.cx, - IconSize.cy, - ILC_COLOR32 | ILC_MASK, - 1, - 1); - if (himlStartBtn != NULL) - { - int s; - himlStartBtn->ReplaceIcon(-1, hIconStart, &s); - if (s >= 0) - { - return TRUE; - } - - /* Failed to add the icon! */ - himlStartBtn->Release(); - himlStartBtn = NULL; - } - } - - return FALSE; - } - - HBITMAP CreateStartButtonBitmap() - { - WCHAR szStartCaption[32]; - HFONT hFontOld; - HDC hDC = NULL; - HDC hDCScreen = NULL; - SIZE Size, SmallIcon; - HBITMAP hbmpOld, hbmp = NULL; - HBITMAP hBitmap = NULL; - HICON hIconStart; - BOOL Ret; - UINT Flags; - RECT rcButton; - - /* NOTE: this is the backwards compatibility code that is used if the - Common Controls Version 6.0 are not available! */ - - if (!LoadString(hExplorerInstance, - IDS_START, - szStartCaption, - sizeof(szStartCaption) / sizeof(szStartCaption[0]))) - { - return NULL; - } - - /* Load the start button icon */ - SmallIcon.cx = GetSystemMetrics(SM_CXSMICON); - SmallIcon.cy = GetSystemMetrics(SM_CYSMICON); - hIconStart = (HICON) LoadImage(hExplorerInstance, - MAKEINTRESOURCE(IDI_START), - IMAGE_ICON, - SmallIcon.cx, - SmallIcon.cy, - LR_SHARED | LR_DEFAULTCOLOR); - - hDCScreen = GetDC(NULL); - if (hDCScreen == NULL) - goto Cleanup; - - hDC = CreateCompatibleDC(hDCScreen); - if (hDC == NULL) - goto Cleanup; - - hFontOld = (HFONT) SelectObject(hDC, hStartBtnFont); - - Ret = GetTextExtentPoint32(hDC, - szStartCaption, - _tcslen(szStartCaption), - &Size); - - SelectObject(hDC, - hFontOld); - if (!Ret) - goto Cleanup; - - /* Make sure the height is at least the size of a caption icon. */ - if (hIconStart != NULL) - Size.cx += SmallIcon.cx + 4; - Size.cy = max(Size.cy, SmallIcon.cy); - - /* Create the bitmap */ - hbmp = CreateCompatibleBitmap(hDCScreen, - Size.cx, - Size.cy); - if (hbmp == NULL) - goto Cleanup; - - /* Caluclate the button rect */ - rcButton.left = 0; - rcButton.top = 0; - rcButton.right = Size.cx; - rcButton.bottom = Size.cy; - - /* Draw the button */ - hbmpOld = (HBITMAP) SelectObject(hDC, hbmp); - - Flags = DC_TEXT | DC_INBUTTON; - if (hIconStart != NULL) - Flags |= DC_ICON; - - if (DrawCapTemp != NULL) - { - Ret = DrawCapTemp(NULL, - hDC, - &rcButton, - hStartBtnFont, - hIconStart, - szStartCaption, - Flags); - } - - SelectObject(hDC, - hbmpOld); - - if (!Ret) - goto Cleanup; - - /* We successfully created the bitmap! */ - hBitmap = hbmp; - hbmp = NULL; - -Cleanup: - if (hDCScreen != NULL) - { - ReleaseDC(NULL, - hDCScreen); - } - - if (hbmp != NULL) - DeleteObject(hbmp); - - if (hDC != NULL) - DeleteDC(hDC); - - return hBitmap; - } - LRESULT OnThemeChanged() { - if (TaskbarTheme) - CloseThemeData(TaskbarTheme); + if (m_Theme) + CloseThemeData(m_Theme); if (IsThemeActive()) - TaskbarTheme = OpenThemeData(m_hWnd, L"TaskBar"); + m_Theme = OpenThemeData(m_hWnd, L"TaskBar"); else - TaskbarTheme = NULL; + m_Theme = NULL; - if (TaskbarTheme) + if (m_Theme) { SetWindowStyle(m_hWnd, WS_THICKFRAME | WS_BORDER, 0); } @@ -1447,34 +1469,25 @@ Cleanup: szStartCaption[0] = TEXT('\0'); } - if (hStartBtnFont == NULL || hCaptionFont == NULL) + if (m_CaptionFont == NULL) { NONCLIENTMETRICS ncm; /* Get the system fonts, we use the caption font, always bold, though. */ ncm.cbSize = sizeof(ncm); - if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, - sizeof(ncm), - &ncm, - FALSE)) + if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, FALSE)) { - if (hCaptionFont == NULL) + if (m_CaptionFont == NULL) { ncm.lfCaptionFont.lfWeight = FW_NORMAL; - hCaptionFont = CreateFontIndirect(&ncm.lfCaptionFont); - } - - if (hStartBtnFont == NULL) - { - ncm.lfCaptionFont.lfWeight = FW_BOLD; - hStartBtnFont = CreateFontIndirect(&ncm.lfCaptionFont); + m_CaptionFont = CreateFontIndirect(&ncm.lfCaptionFont); } } } - + /* Create the Start button */ - StartButton.SubclassWindow(CreateWindowEx( + m_StartButton.SubclassWindow(CreateWindowEx( 0, WC_BUTTON, szStartCaption, @@ -1488,75 +1501,30 @@ Cleanup: (HMENU) IDC_STARTBTN, hExplorerInstance, NULL)); - if (StartButton.m_hWnd) + + if (m_StartButton.m_hWnd) { - SetWindowTheme(StartButton.m_hWnd, L"Start", NULL); - StartButton.SendMessage(WM_SETFONT, (WPARAM) hStartBtnFont, FALSE); - - if (CreateStartBtnImageList()) - { - BUTTON_IMAGELIST bil; - - /* Try to set the start button image. this requires the Common - Controls 6.0 to be present (XP and later) */ - bil.himl = (HIMAGELIST) himlStartBtn; - bil.margin.left = bil.margin.right = 1; - bil.margin.top = bil.margin.bottom = 1; - bil.uAlign = BUTTON_IMAGELIST_ALIGN_LEFT; - - if (!StartButton.SendMessage(BCM_SETIMAGELIST, 0, (LPARAM) &bil)) - { - /* Fall back to the deprecated method on older systems that don't - support Common Controls 6.0 */ - himlStartBtn->Release(); - himlStartBtn = NULL; - - goto SetStartBtnImage; - } - - /* We're using the image list, remove the BS_BITMAP style and - don't center it horizontally */ - SetWindowStyle(StartButton.m_hWnd, BS_BITMAP | BS_RIGHT, 0); - - UpdateStartButton(NULL); - } - else - { - HBITMAP hbmStart, hbmOld; - -SetStartBtnImage: - hbmStart = CreateStartButtonBitmap(); - if (hbmStart != NULL) - { - UpdateStartButton(hbmStart); - - hbmOld = (HBITMAP) StartButton.SendMessage(BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmStart); - - if (hbmOld != NULL) - DeleteObject(hbmOld); - } - } + m_StartButton.Initialize(); } /* Load the saved tray window settings */ RegLoadSettings(); /* Create and initialize the start menu */ - hbmStartMenu = LoadBitmap(hExplorerInstance, - MAKEINTRESOURCE(IDB_STARTMENU)); - StartMenuPopup = CreateStartMenu(this, &StartMenuBand, hbmStartMenu, 0); + HBITMAP hbmBanner = LoadBitmap(hExplorerInstance, MAKEINTRESOURCE(IDB_STARTMENU)); + m_StartMenuPopup = CreateStartMenu(this, &m_StartMenuBand, hbmBanner, 0); /* Load the tray band site */ - if (TrayBandSite != NULL) + if (m_TrayBandSite != NULL) { - TrayBandSite.Release(); + m_TrayBandSite.Release(); } - TrayBandSite = CreateTrayBandSite(this, &hwndRebar, &hwndTaskSwitch); - SetWindowTheme(hwndRebar, L"TaskBar", NULL); + m_TrayBandSite = CreateTrayBandSite(this, &m_Rebar, &m_TaskSwitch); + SetWindowTheme(m_Rebar, L"TaskBar", NULL); /* Create the tray notification window */ - hwndTrayNotify = CreateTrayNotifyWnd(this, HideClock); + m_TrayNotify = CreateTrayNotifyWnd(this, HideClock); if (UpdateNonClientMetrics()) { @@ -1567,14 +1535,13 @@ SetStartBtnImage: CheckTrayWndPosition(); /* Align all controls on the tray window */ - AlignControls( - NULL); + AlignControls(NULL); - InitShellServices(&(hdpaShellServices)); + InitShellServices(&(m_ShellServices)); if (AutoHide) { - AutoHideState = AUTOHIDE_HIDING; + m_AutoHideState = AUTOHIDE_HIDING; SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_DELAY_HIDE, NULL); } @@ -1620,8 +1587,8 @@ SetStartBtnImage: WS_BORDER | WS_THICKFRAME; ZeroMemory(&rcWnd, sizeof(rcWnd)); - if (Position != (DWORD) -1) - rcWnd = rcTrayWnd[Position]; + if (m_Position != (DWORD) -1) + rcWnd = m_TrayRects[m_Position]; if (!Create(NULL, rcWnd, NULL, dwStyle, dwExStyle)) return E_FAIL; @@ -1650,7 +1617,7 @@ SetStartBtnImage: BOOL STDMETHODCALLTYPE IsSpecialHWND(IN HWND hWnd) { return (m_hWnd == hWnd || - (hWndDesktop != NULL && m_hWnd == hWndDesktop)); + (m_DesktopWnd != NULL && m_hWnd == m_DesktopWnd)); } BOOL STDMETHODCALLTYPE @@ -1662,9 +1629,9 @@ SetStartBtnImage: HFONT STDMETHODCALLTYPE GetCaptionFonts(OUT HFONT *phBoldCaption OPTIONAL) { if (phBoldCaption != NULL) - *phBoldCaption = hStartBtnFont; + *phBoldCaption = m_StartButton.GetFont(); - return hCaptionFont; + return m_CaptionFont; } DWORD WINAPI TrayPropertiesThread() @@ -1672,7 +1639,7 @@ SetStartBtnImage: HWND hwnd; RECT posRect; - GetWindowRect(StartButton.m_hWnd, &posRect); + GetWindowRect(m_StartButton.m_hWnd, &posRect); hwnd = CreateWindowEx(0, WC_STATIC, NULL, @@ -1686,11 +1653,11 @@ SetStartBtnImage: NULL, NULL); - hwndTrayPropertiesOwner = hwnd; + m_TrayPropertiesOwner = hwnd; DisplayTrayProperties(hwnd); - hwndTrayPropertiesOwner = NULL; + m_TrayPropertiesOwner = NULL; DestroyWindow(); return 0; @@ -1707,11 +1674,11 @@ SetStartBtnImage: { HWND hTrayProp; - if (hwndTrayPropertiesOwner) + if (m_TrayPropertiesOwner) { - hTrayProp = GetLastActivePopup(hwndTrayPropertiesOwner); + hTrayProp = GetLastActivePopup(m_TrayPropertiesOwner); if (hTrayProp != NULL && - hTrayProp != hwndTrayPropertiesOwner) + hTrayProp != m_TrayPropertiesOwner) { SetForegroundWindow(hTrayProp); return NULL; @@ -1825,10 +1792,9 @@ SetStartBtnImage: { Locked = bLock; - if (TrayBandSite != NULL) + if (m_TrayBandSite != NULL) { - if (!SUCCEEDED(TrayBandSite->Lock( - bLock))) + if (!SUCCEEDED(m_TrayBandSite->Lock(bLock))) { /* Reset?? */ Locked = bPrevLock; @@ -1847,10 +1813,10 @@ SetStartBtnImage: GetClientRect(&rect); - if (TaskbarTheme) + if (m_Theme) { GetClientRect(&rect); - switch (Position) + switch (m_Position) { case ABE_LEFT: partId = TBP_BACKGROUNDLEFT; @@ -1867,7 +1833,7 @@ SetStartBtnImage: break; } - DrawThemeBackground(TaskbarTheme, hdc, partId, 0, &rect, 0); + DrawThemeBackground(m_Theme, hdc, partId, 0, &rect, 0); } return TRUE; @@ -1877,7 +1843,7 @@ SetStartBtnImage: { HDC hdc = (HDC) wParam; - if (!TaskbarTheme) + if (!m_Theme) { bHandled = FALSE; return 0; @@ -1897,7 +1863,7 @@ SetStartBtnImage: hdc = GetDCEx(m_hWnd, hRgn, DCX_WINDOW | DCX_INTERSECTRGN | DCX_PARENTCLIP); - switch (Position) + switch (m_Position) { case ABE_LEFT: backoundPart = TBP_SIZINGBARLEFT; @@ -1918,7 +1884,7 @@ SetStartBtnImage: break; } - DrawThemeBackground(TaskbarTheme, hdc, backoundPart, 0, &rect, 0); + DrawThemeBackground(m_Theme, hdc, backoundPart, 0, &rect, 0); ReleaseDC(m_hWnd, hdc); return 0; @@ -1926,12 +1892,10 @@ SetStartBtnImage: DWORD WINAPI RunFileDlgThread() { - HINSTANCE hShell32; - RUNFILEDLG RunFileDlg; HWND hwnd; RECT posRect; - GetWindowRect(StartButton.m_hWnd, &posRect); + GetWindowRect(m_StartButton.m_hWnd, &posRect); hwnd = CreateWindowEx(0, WC_STATIC, @@ -1946,14 +1910,11 @@ SetStartBtnImage: NULL, NULL); - hwndRunFileDlgOwner = hwnd; - - hShell32 = GetModuleHandle(TEXT("SHELL32.DLL")); - RunFileDlg = (RUNFILEDLG) GetProcAddress(hShell32, (LPCSTR) 61); + m_RunFileDlgOwner = hwnd; RunFileDlg(hwnd, NULL, NULL, NULL, NULL, RFF_CALCDIRECTORY); - hwndRunFileDlgOwner = NULL; + m_RunFileDlgOwner = NULL; ::DestroyWindow(hwnd); return 0; @@ -1968,11 +1929,11 @@ SetStartBtnImage: void DisplayRunFileDlg() { HWND hRunDlg; - if (hwndRunFileDlgOwner) + if (m_RunFileDlgOwner) { - hRunDlg = GetLastActivePopup(hwndRunFileDlgOwner); + hRunDlg = GetLastActivePopup(m_RunFileDlgOwner); if (hRunDlg != NULL && - hRunDlg != hwndRunFileDlgOwner) + hRunDlg != m_RunFileDlgOwner) { SetForegroundWindow(hRunDlg); return; @@ -1984,15 +1945,15 @@ SetStartBtnImage: void PopupStartMenu() { - if (StartMenuPopup != NULL) + if (m_StartMenuPopup != NULL) { POINTL pt; RECTL rcExclude; DWORD dwFlags = 0; - if (GetWindowRect(StartButton.m_hWnd, (RECT*) &rcExclude)) + if (GetWindowRect(m_StartButton.m_hWnd, (RECT*) &rcExclude)) { - switch (Position) + switch (m_Position) { case ABE_BOTTOM: pt.x = rcExclude.left; @@ -2012,12 +1973,9 @@ SetStartBtnImage: break; } - StartMenuPopup->Popup( - &pt, - &rcExclude, - dwFlags); + m_StartMenuPopup->Popup(&pt, &rcExclude, dwFlags); - StartButton.SendMessageW(BM_SETSTATE, TRUE, 0); + m_StartButton.SendMessageW(BM_SETSTATE, TRUE, 0); } } } @@ -2027,13 +1985,13 @@ SetStartBtnImage: RECT rcCurrent; POINT pt; BOOL over; - UINT state = AutoHideState; + UINT state = m_AutoHideState; GetCursorPos(&pt); GetWindowRect(m_hWnd, &rcCurrent); over = PtInRect(&rcCurrent, pt); - if (StartButton.SendMessage( BM_GETSTATE, 0, 0) != BST_UNCHECKED) + if (m_StartButton.SendMessage( BM_GETSTATE, 0, 0) != BST_UNCHECKED) { over = TRUE; } @@ -2043,13 +2001,13 @@ SetStartBtnImage: if (state == AUTOHIDE_HIDING) { TRACE("AutoHide cancelling hide.\n"); - AutoHideState = AUTOHIDE_SHOWING; + m_AutoHideState = AUTOHIDE_SHOWING; SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_INTERVAL_ANIMATING, NULL); } else if (state == AUTOHIDE_HIDDEN) { TRACE("AutoHide starting show.\n"); - AutoHideState = AUTOHIDE_SHOWING; + m_AutoHideState = AUTOHIDE_SHOWING; SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_DELAY_SHOW, NULL); } } @@ -2058,13 +2016,13 @@ SetStartBtnImage: if (state == AUTOHIDE_SHOWING) { TRACE("AutoHide cancelling show.\n"); - AutoHideState = AUTOHIDE_HIDING; + m_AutoHideState = AUTOHIDE_HIDING; SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_INTERVAL_ANIMATING, NULL); } else if (state == AUTOHIDE_SHOWN) { TRACE("AutoHide starting hide.\n"); - AutoHideState = AUTOHIDE_HIDING; + m_AutoHideState = AUTOHIDE_HIDING; SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_DELAY_HIDE, NULL); } @@ -2074,44 +2032,44 @@ SetStartBtnImage: void ProcessAutoHide() { - RECT rc = rcTrayWnd[Position]; - INT w = TraySize.cx - GetSystemMetrics(SM_CXBORDER) * 2 - 1; - INT h = TraySize.cy - GetSystemMetrics(SM_CYBORDER) * 2 - 1; + RECT rc = m_TrayRects[m_Position]; + INT w = m_TraySize.cx - GetSystemMetrics(SM_CXBORDER) * 2 - 1; + INT h = m_TraySize.cy - GetSystemMetrics(SM_CYBORDER) * 2 - 1; - TRACE("AutoHide Timer received for %u, rc=(%d, %d, %d, %d), w=%d, h=%d.\n", AutoHideState, rc.left, rc.top, rc.right, rc.bottom, w, h); + TRACE("AutoHide Timer received for %u, rc=(%d, %d, %d, %d), w=%d, h=%d.\n", m_AutoHideState, rc.left, rc.top, rc.right, rc.bottom, w, h); - switch (AutoHideState) + switch (m_AutoHideState) { case AUTOHIDE_HIDING: - switch (Position) + switch (m_Position) { case ABE_LEFT: - AutoHideOffset.cy = 0; - AutoHideOffset.cx -= AUTOHIDE_SPEED_HIDE; - if (AutoHideOffset.cx < -w) - AutoHideOffset.cx = -w; + m_AutoHideOffset.cy = 0; + m_AutoHideOffset.cx -= AUTOHIDE_SPEED_HIDE; + if (m_AutoHideOffset.cx < -w) + m_AutoHideOffset.cx = -w; break; case ABE_TOP: - AutoHideOffset.cx = 0; - AutoHideOffset.cy -= AUTOHIDE_SPEED_HIDE; - if (AutoHideOffset.cy < -h) - AutoHideOffset.cy = -h; + m_AutoHideOffset.cx = 0; + m_AutoHideOffset.cy -= AUTOHIDE_SPEED_HIDE; + if (m_AutoHideOffset.cy < -h) + m_AutoHideOffset.cy = -h; break; case ABE_RIGHT: - AutoHideOffset.cy = 0; - AutoHideOffset.cx += AUTOHIDE_SPEED_HIDE; - if (AutoHideOffset.cx > w) - AutoHideOffset.cx = w; + m_AutoHideOffset.cy = 0; + m_AutoHideOffset.cx += AUTOHIDE_SPEED_HIDE; + if (m_AutoHideOffset.cx > w) + m_AutoHideOffset.cx = w; break; case ABE_BOTTOM: - AutoHideOffset.cx = 0; - AutoHideOffset.cy += AUTOHIDE_SPEED_HIDE; - if (AutoHideOffset.cy > h) - AutoHideOffset.cy = h; + m_AutoHideOffset.cx = 0; + m_AutoHideOffset.cy += AUTOHIDE_SPEED_HIDE; + if (m_AutoHideOffset.cy > h) + m_AutoHideOffset.cy = h; break; } - if (AutoHideOffset.cx != w && AutoHideOffset.cy != h) + if (m_AutoHideOffset.cx != w && m_AutoHideOffset.cy != h) { SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_INTERVAL_ANIMATING, NULL); break; @@ -2120,58 +2078,58 @@ SetStartBtnImage: /* fallthrough */ case AUTOHIDE_HIDDEN: - switch (Position) + switch (m_Position) { case ABE_LEFT: - AutoHideOffset.cx = -w; - AutoHideOffset.cy = 0; + m_AutoHideOffset.cx = -w; + m_AutoHideOffset.cy = 0; break; case ABE_TOP: - AutoHideOffset.cx = 0; - AutoHideOffset.cy = -h; + m_AutoHideOffset.cx = 0; + m_AutoHideOffset.cy = -h; break; case ABE_RIGHT: - AutoHideOffset.cx = w; - AutoHideOffset.cy = 0; + m_AutoHideOffset.cx = w; + m_AutoHideOffset.cy = 0; break; case ABE_BOTTOM: - AutoHideOffset.cx = 0; - AutoHideOffset.cy = h; + m_AutoHideOffset.cx = 0; + m_AutoHideOffset.cy = h; break; } KillTimer(TIMER_ID_AUTOHIDE); - AutoHideState = AUTOHIDE_HIDDEN; + m_AutoHideState = AUTOHIDE_HIDDEN; break; case AUTOHIDE_SHOWING: - if (AutoHideOffset.cx >= AUTOHIDE_SPEED_SHOW) + if (m_AutoHideOffset.cx >= AUTOHIDE_SPEED_SHOW) { - AutoHideOffset.cx -= AUTOHIDE_SPEED_SHOW; + m_AutoHideOffset.cx -= AUTOHIDE_SPEED_SHOW; } - else if (AutoHideOffset.cx <= -AUTOHIDE_SPEED_SHOW) + else if (m_AutoHideOffset.cx <= -AUTOHIDE_SPEED_SHOW) { - AutoHideOffset.cx += AUTOHIDE_SPEED_SHOW; + m_AutoHideOffset.cx += AUTOHIDE_SPEED_SHOW; } else { - AutoHideOffset.cx = 0; + m_AutoHideOffset.cx = 0; } - if (AutoHideOffset.cy >= AUTOHIDE_SPEED_SHOW) + if (m_AutoHideOffset.cy >= AUTOHIDE_SPEED_SHOW) { - AutoHideOffset.cy -= AUTOHIDE_SPEED_SHOW; + m_AutoHideOffset.cy -= AUTOHIDE_SPEED_SHOW; } - else if (AutoHideOffset.cy <= -AUTOHIDE_SPEED_SHOW) + else if (m_AutoHideOffset.cy <= -AUTOHIDE_SPEED_SHOW) { - AutoHideOffset.cy += AUTOHIDE_SPEED_SHOW; + m_AutoHideOffset.cy += AUTOHIDE_SPEED_SHOW; } else { - AutoHideOffset.cy = 0; + m_AutoHideOffset.cy = 0; } - if (AutoHideOffset.cx != 0 || AutoHideOffset.cy != 0) + if (m_AutoHideOffset.cx != 0 || m_AutoHideOffset.cy != 0) { SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_INTERVAL_ANIMATING, NULL); break; @@ -2181,16 +2139,16 @@ SetStartBtnImage: case AUTOHIDE_SHOWN: KillTimer(TIMER_ID_AUTOHIDE); - AutoHideState = AUTOHIDE_SHOWN; + m_AutoHideState = AUTOHIDE_SHOWN; break; } - rc.left += AutoHideOffset.cx; - rc.right += AutoHideOffset.cx; - rc.top += AutoHideOffset.cy; - rc.bottom += AutoHideOffset.cy; + rc.left += m_AutoHideOffset.cx; + rc.right += m_AutoHideOffset.cx; + rc.top += m_AutoHideOffset.cy; + rc.bottom += m_AutoHideOffset.cy; - TRACE("AutoHide Changing position to (%d, %d, %d, %d) and state=%u.\n", rc.left, rc.top, rc.right, rc.bottom, AutoHideState); + TRACE("AutoHide Changing position to (%d, %d, %d, %d) and state=%u.\n", rc.left, rc.top, rc.right, rc.bottom, m_AutoHideState); SetWindowPos(NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOACTIVATE | SWP_NOZORDER); } @@ -2210,7 +2168,7 @@ SetStartBtnImage: LRESULT OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - if (hwndTrayNotify) + if (m_TrayNotify) { TrayNotify_NotifyMsg(wParam, lParam); } @@ -2219,7 +2177,7 @@ SetStartBtnImage: LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - if (!TaskbarTheme) + if (!m_Theme) { bHandled = FALSE; return 0; @@ -2263,7 +2221,7 @@ SetStartBtnImage: /* Depending on the position of the tray window, allow only changing the border next to the monitor working area */ - switch (Position) + switch (m_Position) { case ABE_TOP: if (pt.y > rcClient.bottom) @@ -2301,21 +2259,18 @@ SetStartBtnImage: if (!Locked && GetCursorPos(&ptCursor)) { IsDragging = TRUE; - DraggingPosition = GetDraggingRectFromPt( - ptCursor, - pRect, - &DraggingMonitor); + m_DraggingPosition = GetDraggingRectFromPt(ptCursor, pRect, &m_DraggingMonitor); } else { - *pRect = rcTrayWnd[Position]; + *pRect = m_TrayRects[m_Position]; if (AutoHide) { - pRect->left += AutoHideOffset.cx; - pRect->right += AutoHideOffset.cx; - pRect->top += AutoHideOffset.cy; - pRect->bottom += AutoHideOffset.cy; + pRect->left += m_AutoHideOffset.cx; + pRect->right += m_AutoHideOffset.cx; + pRect->top += m_AutoHideOffset.cy; + pRect->bottom += m_AutoHideOffset.cy; } } return TRUE; @@ -2327,18 +2282,18 @@ SetStartBtnImage: if (!Locked) { - CalculateValidSize(Position, pRect); + CalculateValidSize(m_Position, pRect); } else { - *pRect = rcTrayWnd[Position]; + *pRect = m_TrayRects[m_Position]; if (AutoHide) { - pRect->left += AutoHideOffset.cx; - pRect->right += AutoHideOffset.cx; - pRect->top += AutoHideOffset.cy; - pRect->bottom += AutoHideOffset.cy; + pRect->left += m_AutoHideOffset.cx; + pRect->right += m_AutoHideOffset.cx; + pRect->top += m_AutoHideOffset.cy; + pRect->bottom += m_AutoHideOffset.cy; } } return TRUE; @@ -2444,15 +2399,12 @@ SetStartBtnImage: uId = TrackMenu( hSysMenu, NULL, - StartButton.m_hWnd, - Position != ABE_TOP, + m_StartButton.m_hWnd, + m_Position != ABE_TOP, FALSE); if (uId != 0) { - SendMessage(m_hWnd, - WM_SYSCOMMAND, - (WPARAM) uId, - 0); + SendMessage(m_hWnd, WM_SYSCOMMAND, (WPARAM) uId, 0); } } @@ -2493,23 +2445,23 @@ SetStartBtnImage: if (pt.x != -1 || pt.y != -1) ppt = &pt; else - hWndExclude = StartButton.m_hWnd; + hWndExclude = m_StartButton.m_hWnd; - if ((HWND) wParam == StartButton.m_hWnd) + if ((HWND) wParam == m_StartButton.m_hWnd) { /* Make sure we can't track the context menu if the start menu is currently being shown */ - if (!(StartButton.SendMessage(BM_GETSTATE, 0, 0) & BST_PUSHED)) + if (!(m_StartButton.SendMessage(BM_GETSTATE, 0, 0) & BST_PUSHED)) { CComPtr ctxMenu; StartMenuBtnCtxMenuCreator(this, m_hWnd, &ctxMenu); - TrackCtxMenu(ctxMenu, ppt, hWndExclude, Position == ABE_BOTTOM, this); + TrackCtxMenu(ctxMenu, ppt, hWndExclude, m_Position == ABE_BOTTOM, this); } } else { /* See if the context menu should be handled by the task band site */ - if (ppt != NULL && TrayBandSite != NULL) + if (ppt != NULL && m_TrayBandSite != NULL) { HWND hWndAtPt; POINT ptClient = *ppt; @@ -2519,19 +2471,18 @@ SetStartBtnImage: hWndAtPt = ChildWindowFromPoint(m_hWnd, ptClient); if (hWndAtPt != NULL && - (hWndAtPt == hwndRebar || IsChild(hwndRebar, - hWndAtPt))) + (hWndAtPt == m_Rebar || IsChild(m_Rebar, hWndAtPt))) { /* Check if the user clicked on the task switch window */ ptClient = *ppt; - MapWindowPoints(NULL, hwndRebar, &ptClient, 1); + MapWindowPoints(NULL, m_Rebar, &ptClient, 1); - hWndAtPt = ChildWindowFromPointEx(hwndRebar, ptClient, CWP_SKIPINVISIBLE | CWP_SKIPDISABLED); - if (hWndAtPt == hwndTaskSwitch) + hWndAtPt = ChildWindowFromPointEx(m_Rebar, ptClient, CWP_SKIPINVISIBLE | CWP_SKIPDISABLED); + if (hWndAtPt == m_TaskSwitch) goto HandleTrayContextMenu; /* Forward the message to the task band site */ - TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret); + m_TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret); } else goto HandleTrayContextMenu; @@ -2557,18 +2508,18 @@ HandleTrayContextMenu: HRESULT hr = E_FAIL; - if (TrayBandSite) + if (m_TrayBandSite) { - hr = TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret); + hr = m_TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret); if (SUCCEEDED(hr)) return Ret; } - if (TrayBandSite == NULL || FAILED(hr)) + if (m_TrayBandSite == NULL || FAILED(hr)) { const NMHDR *nmh = (const NMHDR *) lParam; - if (nmh->hwndFrom == hwndTrayNotify) + if (nmh->hwndFrom == m_TrayNotify) { switch (nmh->code) { @@ -2613,13 +2564,13 @@ HandleTrayContextMenu: LRESULT OnOpenStartMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { HWND hwndStartMenu; - HRESULT hr = IUnknown_GetWindow((IUnknown*) StartMenuPopup, &hwndStartMenu); + HRESULT hr = IUnknown_GetWindow(m_StartMenuPopup, &hwndStartMenu); if (FAILED_UNEXPECTEDLY(hr)) return FALSE; if (IsWindowVisible(hwndStartMenu)) { - StartMenuPopup->OnSelect(MPOS_CANCELLEVEL); + m_StartMenuPopup->OnSelect(MPOS_CANCELLEVEL); } else { @@ -2723,13 +2674,13 @@ HandleTrayContextMenu: { LRESULT Ret = FALSE; - if ((HWND) lParam == StartButton.m_hWnd) + if ((HWND) lParam == m_StartButton.m_hWnd) { PopupStartMenu(); return FALSE; } - if (TrayBandSite == NULL || FAILED_UNEXPECTEDLY(TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret))) + if (m_TrayBandSite == NULL || FAILED_UNEXPECTEDLY(m_TrayBandSite->ProcessMessage(m_hWnd, uMsg, wParam, lParam, &Ret))) { switch (LOWORD(wParam)) { @@ -2816,7 +2767,7 @@ HandleTrayContextMenu: szWindow.cy - szTarget.cx, }; - switch (Position) + switch (m_Position) { case ABE_LEFT: szWindow.cx = szActual.cx + borders.cx; @@ -2844,7 +2795,7 @@ HandleTrayContextMenu: DECLARE_WND_CLASS_EX(szTrayWndClass, CS_DBLCLKS, COLOR_3DFACE) BEGIN_MSG_MAP(CTrayWindow) - if (StartMenuBand != NULL) + if (m_StartMenuBand != NULL) { MSG Msg; LRESULT lRet; @@ -2854,7 +2805,7 @@ HandleTrayContextMenu: Msg.wParam = wParam; Msg.lParam = lParam; - if (StartMenuBand->TranslateMenuMessage(&Msg, &lRet) == S_OK) + if (m_StartMenuBand->TranslateMenuMessage(&Msg, &lRet) == S_OK) { return lRet; } @@ -2903,18 +2854,13 @@ HandleTrayContextMenu: /* FIXME: We should keep a reference here... */ - while (PeekMessage(&Msg, - NULL, - 0, - 0, - PM_REMOVE)) + while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { if (Msg.message == WM_QUIT) break; - if (StartMenuBand == NULL || - StartMenuBand->IsMenuMessage( - &Msg) != S_OK) + if (m_StartMenuBand == NULL || + m_StartMenuBand->IsMenuMessage(&Msg) != S_OK) { TranslateMessage(&Msg); DispatchMessage(&Msg); @@ -2929,15 +2875,15 @@ HandleTrayContextMenu: /* FIXME: We should keep a reference here... */ - while (1) + while (true) { Ret = GetMessage(&Msg, NULL, 0, 0); if (!Ret || Ret == -1) break; - if (StartMenuBand == NULL || - StartMenuBand->IsMenuMessage(&Msg) != S_OK) + if (m_StartMenuBand == NULL || + m_StartMenuBand->IsMenuMessage(&Msg) != S_OK) { TranslateMessage(&Msg); DispatchMessage(&Msg); @@ -2973,7 +2919,7 @@ HandleTrayContextMenu: { TRACE("IShellDesktopTray::RegisterDesktopWindow(0x%p)\n", hWndDesktop); - this->hWndDesktop = hWndDesktop; + m_DesktopWnd = hWndDesktop; return S_OK; } @@ -2985,13 +2931,13 @@ HandleTrayContextMenu: virtual HRESULT RaiseStartButton() { - StartButton.SendMessageW(BM_SETSTATE, FALSE, 0); + m_StartButton.SendMessageW(BM_SETSTATE, FALSE, 0); return S_OK; } void _Init() { - Position = (DWORD) -1; + m_Position = (DWORD) -1; } DECLARE_NOT_AGGREGATABLE(CTrayWindow) @@ -3066,9 +3012,9 @@ public: ID_LOCKTASKBAR, MF_BYCOMMAND | (TrayWnd->Locked ? MF_CHECKED : MF_UNCHECKED)); - if (TrayWnd->TrayBandSite != NULL) + if (TrayWnd->m_TrayBandSite != NULL) { - if (FAILED(TrayWnd->TrayBandSite->AddContextMenus( + if (FAILED(TrayWnd->m_TrayBandSite->AddContextMenus( hPopup, 0, ID_SHELL_CMD_FIRST, diff --git a/base/shell/explorer/util.cpp b/base/shell/explorer/util.cpp index 6bdea90833c..543df9f678f 100644 --- a/base/shell/explorer/util.cpp +++ b/base/shell/explorer/util.cpp @@ -30,50 +30,6 @@ IsSameObject(IN IUnknown *punk1, IN IUnknown *punk2) return (punk1 == punk2) ? S_OK : S_FALSE; } -LONG -SetWindowStyle(IN HWND hWnd, - IN LONG dwStyleMask, - IN LONG dwStyle) -{ - LONG PrevStyle, Style; - - ASSERT((~dwStyleMask & dwStyle) == 0); - - PrevStyle = GetWindowLong(hWnd, GWL_STYLE); - if (PrevStyle != 0 && - (PrevStyle & dwStyleMask) != dwStyle) - { - Style = PrevStyle & ~dwStyleMask; - Style |= dwStyle; - - PrevStyle = SetWindowLong(hWnd, GWL_STYLE, Style); - } - - return PrevStyle; -} - -LONG -SetWindowExStyle(IN HWND hWnd, - IN LONG dwStyleMask, - IN LONG dwStyle) -{ - LONG PrevStyle, Style; - - ASSERT((~dwStyleMask & dwStyle) == 0); - - PrevStyle = GetWindowLong(hWnd, GWL_EXSTYLE); - if (PrevStyle != 0 && - (PrevStyle & dwStyleMask) != dwStyle) - { - Style = PrevStyle & ~dwStyleMask; - Style |= dwStyle; - - PrevStyle = SetWindowLong(hWnd, GWL_EXSTYLE, Style); - } - - return PrevStyle; -} - HMENU LoadPopupMenu(IN HINSTANCE hInstance, IN LPCTSTR lpMenuName) diff --git a/boot/bootdata/hivedef.inf b/boot/bootdata/hivedef.inf index c99473f5c84..80d2d132445 100644 --- a/boot/bootdata/hivedef.inf +++ b/boot/bootdata/hivedef.inf @@ -1812,6 +1812,11 @@ HKCU,"SOFTWARE",,0x00000012 HKCU,"SOFTWARE\Policies",,0x00000012 HKCU,"SOFTWARE\Microsoft",,0x00000012 +; ReactOS Calculator +HKCU,"SOFTWARE\Microsoft\Calc",,0x00000012 +HKCU,"SOFTWARE\Microsoft\Calc","layout",0x00010001,0x00000001 +HKCU,"SOFTWARE\Microsoft\Calc","UseSep",0x00010001,0x00000001 + ; DirectX version report as DirectX 9.0 HKCU,"SOFTWARE\Microsoft\DirectX","Debug",0x00010001,0x00000000 HKCU,"SOFTWARE\Microsoft\DirectX","InstalledVersion",0x00000001,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00 diff --git a/boot/bootdata/hivesft.inf b/boot/bootdata/hivesft.inf index 402514699da..1d7dc2204cb 100644 --- a/boot/bootdata/hivesft.inf +++ b/boot/bootdata/hivesft.inf @@ -88,6 +88,7 @@ HKLM,"SOFTWARE\Microsoft\Active Setup\Installed Components\{de5aed00-a4bf-11d1-9 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","DevicePath",0x00020002,"%SystemRoot%\inf" HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","MediaPathUnexpanded",0x00020000,"%SystemRoot%\Media" +HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","WallPaperDir",0x00020002,"%SystemRoot%\Web\Wallpaper" HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths",,0x00000012 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Applets",,0x00000012 HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls",,0x00000012 diff --git a/dll/CMakeLists.txt b/dll/CMakeLists.txt index 1fc949867f4..3419102e32e 100644 --- a/dll/CMakeLists.txt +++ b/dll/CMakeLists.txt @@ -2,7 +2,7 @@ add_subdirectory(3rdparty) add_subdirectory(cpl) add_subdirectory(directx) -add_subdirectory(keyboard) +#add_subdirectory(keyboard) add_subdirectory(ntdll) add_subdirectory(opengl) add_subdirectory(shellext) diff --git a/dll/cpl/desk/background.c b/dll/cpl/desk/background.c index 3a7a26f870c..415ae3b6e86 100644 --- a/dll/cpl/desk/background.c +++ b/dll/cpl/desk/background.c @@ -78,6 +78,7 @@ AddListViewItems(HWND hwndDlg, PDATA pData) SHFILEINFO sfi; HIMAGELIST himl; TCHAR wallpaperFilename[MAX_PATH]; + TCHAR originalWallpaper[MAX_PATH]; DWORD bufferSize = sizeof(wallpaperFilename); TCHAR buffer[MAX_PATH]; DWORD varType = REG_SZ; @@ -132,6 +133,27 @@ AddListViewItems(HWND hwndDlg, PDATA pData) result = RegQueryValueEx(regKey, TEXT("Wallpaper"), 0, &varType, (LPBYTE)wallpaperFilename, &bufferSize); if ((result == ERROR_SUCCESS) && (_tcslen(wallpaperFilename) > 0)) { + bufferSize = sizeof(originalWallpaper); + result = RegQueryValueEx(regKey, TEXT("OriginalWallpaper"), 0, &varType, (LPBYTE)originalWallpaper, &bufferSize); + + /* If Wallpaper and OriginalWallpaper are the same, try to retrieve ConvertedWallpaper and use it instead of Wallpaper */ + if ((result == ERROR_SUCCESS) && (_tcslen(originalWallpaper) > 0) && (_tcsicmp(wallpaperFilename, originalWallpaper) == 0)) + { + bufferSize = sizeof(originalWallpaper); + result = RegQueryValueEx(regKey, TEXT("ConvertedWallpaper"), 0, &varType, (LPBYTE)originalWallpaper, &bufferSize); + + if ((result == ERROR_SUCCESS) && (_tcslen(originalWallpaper) > 0)) + { + hr = StringCbCopy(wallpaperFilename, sizeof(wallpaperFilename), originalWallpaper); + } + + if (FAILED(hr)) + { + RegCloseKey(regKey); + return; + } + } + /* Allow environment variables in file name */ if (ExpandEnvironmentStrings(wallpaperFilename, buffer, MAX_PATH)) { diff --git a/dll/cpl/desk/general.c b/dll/cpl/desk/general.c index 7ec2a9620c2..0858c16f974 100644 --- a/dll/cpl/desk/general.c +++ b/dll/cpl/desk/general.c @@ -26,8 +26,21 @@ InitFontSizeList(HWND hWnd) { if (SetupFindFirstLine(hInf, _T("Font Sizes"), NULL, &Context)) { - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontDPI"), + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts"), 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + dwSize = MAX_PATH; + dwType = REG_DWORD; + + if (!RegQueryValueEx(hKey, _T("LogPixels"), NULL, + &dwType, (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS) + { + dwValue = 0; + } + + RegCloseKey(hKey); + } + for (;;) { TCHAR Buffer[LINE_LEN]; @@ -41,23 +54,17 @@ InitFontSizeList(HWND hWnd) if (i != CB_ERR) SendMessage(hFontSize, CB_SETITEMDATA, (WPARAM)i, (LPARAM)ci); - dwSize = MAX_PATH; - dwType = REG_DWORD; - - if (RegQueryValueEx(hKey, _T("LogPixels"), NULL, - &dwType, (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS) + if ((int)dwValue == ci) { - if ((int)dwValue == ci) - { - SendMessage(hFontSize, CB_SETCURSEL, (WPARAM)i, 0); - SetWindowText(GetDlgItem(hWnd, IDC_FONTSIZE_CUSTOM), Desc); - } + SendMessage(hFontSize, CB_SETCURSEL, (WPARAM)i, 0); + SetWindowText(GetDlgItem(hWnd, IDC_FONTSIZE_CUSTOM), Desc); } + else + SendMessage(hFontSize, CB_SETCURSEL, 0, 0); } if (!SetupFindNextLine(&Context, &Context)) { - RegCloseKey(hKey); break; } } diff --git a/dll/win32/shell32/res/icons/16.ico b/dll/win32/shell32/res/icons/16.ico index 56edfcbb2af..31aea68c0ff 100644 Binary files a/dll/win32/shell32/res/icons/16.ico and b/dll/win32/shell32/res/icons/16.ico differ diff --git a/dll/win32/shell32/systray.cpp b/dll/win32/shell32/systray.cpp index 6fc578f0e58..ddf569fb8d9 100644 --- a/dll/win32/shell32/systray.cpp +++ b/dll/win32/shell32/systray.cpp @@ -50,8 +50,8 @@ static BOOL SHELL_NotifyIcon(DWORD dwMessage, void* pnid, HWND nid_hwnd, DWORD n data.lpData = pnotify_data; for(hwnd = 0; (hwnd = FindWindowExW(0, hwnd, L"Shell_TrayWnd", NULL)); ) - if ((unicode ? SendMessageW : SendMessageA)(hwnd, WM_COPYDATA, (WPARAM)nid_hwnd, (LPARAM)&data)) - ret = TRUE; + if ((unicode ? SendMessageTimeoutW : SendMessageTimeoutA)(hwnd, WM_COPYDATA, (WPARAM)nid_hwnd, (LPARAM)&data, SMTO_BLOCK|SMTO_ABORTIFHUNG, 4000, (PDWORD_PTR)&ret)) + return ret; return ret; } diff --git a/dll/win32/shimgvw/CMakeLists.txt b/dll/win32/shimgvw/CMakeLists.txt index c923f33bc80..8895a0b654d 100644 --- a/dll/win32/shimgvw/CMakeLists.txt +++ b/dll/win32/shimgvw/CMakeLists.txt @@ -3,6 +3,7 @@ spec2def(shimgvw.dll shimgvw.spec) list(APPEND SOURCE shimgvw.c + comsup.c shimgvw.rc ${CMAKE_CURRENT_BINARY_DIR}/shimgvw_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/shimgvw.def) @@ -10,5 +11,5 @@ list(APPEND SOURCE add_library(shimgvw SHARED ${SOURCE}) set_module_type(shimgvw win32dll) target_link_libraries(shimgvw wine) -add_importlibs(shimgvw advapi32 comctl32 user32 gdi32 gdiplus comdlg32 msvcrt kernel32 ntdll) +add_importlibs(shimgvw advapi32 comctl32 user32 gdi32 gdiplus comdlg32 shlwapi msvcrt kernel32 ntdll) add_cd_file(TARGET shimgvw DESTINATION reactos/system32 FOR all) diff --git a/dll/win32/shimgvw/comsup.c b/dll/win32/shimgvw/comsup.c new file mode 100644 index 00000000000..473d634cb15 --- /dev/null +++ b/dll/win32/shimgvw/comsup.c @@ -0,0 +1,58 @@ +#define INITGUID + +#include +#include + +LONG LockCount; +LONG ObjectCount; + + +VOID +DllInitServer(VOID) +{ + ObjectCount = 0; + LockCount = 0; +} + + +STDAPI +DllRegisterServer(VOID) +{ + /* Always return S_OK, since there is currently nothing that can go wrong */ + return S_OK; +} + + +STDAPI +DllUnregisterServer(VOID) +{ + /* Always return S_OK, since there is currently nothing that can go wrong */ + return S_OK; +} + + +STDAPI +DllCanUnloadNow(VOID) +{ + if ((ObjectCount != 0) || (LockCount != 0)) + { + return S_FALSE; + } + else + { + return S_OK; + } +} + + +STDAPI +DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) +{ + HRESULT hr; + + /* There are no classes to export, so always return CLASS_E_CLASSNOTAVAILABLE*/ + *ppv = NULL; + hr = CLASS_E_CLASSNOTAVAILABLE; + + return hr; +} diff --git a/dll/win32/shimgvw/comsup.h b/dll/win32/shimgvw/comsup.h new file mode 100644 index 00000000000..9ac6d856c5c --- /dev/null +++ b/dll/win32/shimgvw/comsup.h @@ -0,0 +1,4 @@ +extern LONG LockCount; +extern LONG ObjectCount; + +VOID DllInitServer(VOID); \ No newline at end of file diff --git a/dll/win32/shimgvw/shimgvw.c b/dll/win32/shimgvw/shimgvw.c index 1c1ea76b014..557c925fb30 100644 --- a/dll/win32/shimgvw/shimgvw.c +++ b/dll/win32/shimgvw/shimgvw.c @@ -26,6 +26,7 @@ #include #include #include +#include #define NDEBUG #include @@ -35,6 +36,7 @@ HINSTANCE hInstance; SHIMGVW_SETTINGS shiSettings; +SHIMGVW_FILENODE *currentFile; GpImage *image; WNDPROC PrevProc = NULL; @@ -76,7 +78,7 @@ static void pSaveImageAs(HWND hwnd) OPENFILENAMEW sfn; ImageCodecInfo *codecInfo; WCHAR szSaveFileName[MAX_PATH]; - WCHAR szFilterMask[2048]; + WCHAR *szFilterMask; GUID rawFormat; UINT num; UINT size; @@ -84,17 +86,6 @@ static void pSaveImageAs(HWND hwnd) UINT j; WCHAR *c; - ZeroMemory(szSaveFileName, sizeof(szSaveFileName)); - ZeroMemory(szFilterMask, sizeof(szFilterMask)); - ZeroMemory(&sfn, sizeof(sfn)); - sfn.lStructSize = sizeof(sfn); - sfn.hwndOwner = hwnd; - sfn.hInstance = hInstance; - sfn.lpstrFile = szSaveFileName; - sfn.lpstrFilter = szFilterMask; - sfn.nMaxFile = MAX_PATH; - sfn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; - GdipGetImageEncodersSize(&num, &size); codecInfo = malloc(size); if (!codecInfo) @@ -106,7 +97,36 @@ static void pSaveImageAs(HWND hwnd) GdipGetImageEncoders(num, size, codecInfo); GdipGetImageRawFormat(image, &rawFormat); - sizeRemain = sizeof(szFilterMask); + sizeRemain = 0; + + for (j = 0; j < num; ++j) + { + // Every pair needs space for the Description, twice the Extensions, 1 char for the space, 2 for the braces and 2 for the NULL terminators. + sizeRemain = sizeRemain + (((wcslen(codecInfo[j].FormatDescription) + (wcslen(codecInfo[j].FilenameExtension) * 2) + 5) * sizeof(WCHAR))); + } + + /* Add two more chars for the last terminator */ + sizeRemain = sizeRemain + (sizeof(WCHAR) * 2); + + szFilterMask = malloc(sizeRemain); + if (!szFilterMask) + { + DPRINT1("cannot allocate memory for filter mask in pSaveImageAs()"); + free(codecInfo); + return; + } + + ZeroMemory(szSaveFileName, sizeof(szSaveFileName)); + ZeroMemory(szFilterMask, sizeRemain); + ZeroMemory(&sfn, sizeof(sfn)); + sfn.lStructSize = sizeof(sfn); + sfn.hwndOwner = hwnd; + sfn.hInstance = hInstance; + sfn.lpstrFile = szSaveFileName; + sfn.lpstrFilter = szFilterMask; + sfn.nMaxFile = MAX_PATH; + sfn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; + c = szFilterMask; for (j = 0; j < num; ++j) @@ -137,9 +157,177 @@ static void pSaveImageAs(HWND hwnd) } } + free(szFilterMask); free(codecInfo); } +static VOID +pLoadImageFromNode(SHIMGVW_FILENODE *node, HWND hwnd) +{ + WCHAR szTitleBuf[800]; + WCHAR szResStr[512]; + WCHAR *c; + + if (node) + { + c = wcsrchr(node->FileName, '\\'); + if (c) + { + c++; + } + + LoadStringW(hInstance, IDS_APPTITLE, szResStr, 512); + StringCbPrintfExW(szTitleBuf, 800, NULL, NULL, 0, L"%ls%ls%ls", szResStr, L" - ", c); + SetWindowTextW(hwnd, szTitleBuf); + + if (image) + { + GdipDisposeImage(image); + } + + pLoadImage(node->FileName); + InvalidateRect(hDispWnd, NULL, TRUE); + UpdateWindow(hDispWnd); + } +} + +static SHIMGVW_FILENODE* +pBuildFileList(LPWSTR szFirstFile) +{ + HANDLE hFindHandle; + WCHAR *extension; + WCHAR szSearchPath[MAX_PATH]; + WCHAR szSearchMask[MAX_PATH]; + WCHAR szFileTypes[MAX_PATH]; + WIN32_FIND_DATAW findData; + SHIMGVW_FILENODE *currentNode; + SHIMGVW_FILENODE *root; + SHIMGVW_FILENODE *conductor; + ImageCodecInfo *codecInfo; + UINT num; + UINT size; + UINT j; + + + wcscpy(szSearchPath, szFirstFile); + PathRemoveFileSpecW(szSearchPath); + + GdipGetImageDecodersSize(&num, &size); + codecInfo = malloc(size); + if (!codecInfo) + { + DPRINT1("malloc() failed in pLoadFileList()\n"); + return NULL; + } + + GdipGetImageDecoders(num, size, codecInfo); + + root = malloc(sizeof(SHIMGVW_FILENODE)); + if (!root) + { + DPRINT1("malloc() failed in pLoadFileList()\n"); + free(codecInfo); + return NULL; + } + + conductor = root; + + for (j = 0; j < num; ++j) + { + StringCbPrintfExW(szFileTypes, MAX_PATH, NULL, NULL, 0, L"%ls", codecInfo[j].FilenameExtension); + + extension = wcstok(szFileTypes, L";"); + while (extension != NULL) + { + StringCbPrintfExW(szSearchMask, MAX_PATH, NULL, NULL, 0, L"%ls%ls%ls", szSearchPath, L"\\", extension); + + hFindHandle = FindFirstFileW(szSearchMask, &findData); + if (hFindHandle != INVALID_HANDLE_VALUE) + { + do + { + StringCbPrintfExW(conductor->FileName, MAX_PATH, NULL, NULL, 0, L"%ls%ls%ls", szSearchPath, L"\\", findData.cFileName); + + // compare the name of the requested file with the one currently found. + // if the name matches, the current node is returned by the function. + if (wcscmp(szFirstFile, conductor->FileName) == 0) + { + currentNode = conductor; + } + + conductor->Next = malloc(sizeof(SHIMGVW_FILENODE)); + + // if malloc fails, make circular what we have and return it + if (!conductor->Next) + { + DPRINT1("malloc() failed in pLoadFileList()\n"); + + conductor->Next = root; + root->Prev = conductor; + + FindClose(hFindHandle); + free(codecInfo); + return conductor; + } + + conductor->Next->Prev = conductor; + conductor = conductor->Next; + } + while (FindNextFileW(hFindHandle, &findData) != 0); + + FindClose(hFindHandle); + } + + extension = wcstok(NULL, L";"); + } + } + + // we now have a node too much in the list. In case the requested file was not found, + // we use this node to store the name of it, otherwise we free it. + if (currentNode == NULL) + { + StringCbPrintfExW(conductor->FileName, MAX_PATH, NULL, NULL, 0, L"%ls", szFirstFile); + currentNode = conductor; + } + else + { + conductor = conductor->Prev; + free(conductor->Next); + } + + // link the last node with the first one to make the list circular + conductor->Next = root; + root->Prev = conductor; + conductor = currentNode; + + free(codecInfo); + + return conductor; +} + +static VOID +pFreeFileList(SHIMGVW_FILENODE *root) +{ + SHIMGVW_FILENODE *conductor; + + root->Prev->Next = NULL; + root->Prev = NULL; + + while (root) + { + conductor = root; + root = conductor->Next; + free(conductor); + } +} + +static VOID +ImageView_UpdateWindow(HWND hwnd) +{ + InvalidateRect(hwnd, NULL, FALSE); + UpdateWindow(hwnd); +} + static VOID ImageView_DrawImage(HWND hwnd) { @@ -171,65 +359,27 @@ ImageView_DrawImage(HWND hwnd) { FillRect(hdc, &rect, (HBRUSH)GetStockObject(WHITE_BRUSH)); - if ((rect.right == uImgWidth)&&(rect.bottom == uImgHeight)) + if ((rect.right >= uImgWidth)&&(rect.bottom >= uImgHeight)) { - x = 0, y = 0, width = rect.right, height = rect.bottom; - } - else if ((rect.right >= uImgWidth)&&(rect.bottom >= uImgHeight)) - { - x = (rect.right/2)-(uImgWidth/2); - y = (rect.bottom/2)-(uImgHeight/2); width = uImgWidth; height = uImgHeight; } - else if ((rect.right < uImgWidth)||(rect.bottom < uImgHeight)) + else { - if (rect.bottom < uImgHeight) - { - height = rect.bottom; - width = uImgWidth*(UINT)rect.bottom/uImgHeight; - x = (rect.right/2)-(width/2); - y = (rect.bottom/2)-(height/2); - } - if (rect.right < uImgWidth) + height = uImgHeight * (UINT)rect.right / uImgWidth; + if (height <= rect.bottom) { width = rect.right; - height = uImgHeight*(UINT)rect.right/uImgWidth; - x = (rect.right/2)-(width/2); - y = (rect.bottom/2)-(height/2); } - if ((height > rect.bottom)||(width > rect.right)) + else { - for (;;) - { - if (((int)width - 1 < 0)||((int)height - 1 < 0)) break; - width -= 1; - height -= 1; - y = (rect.bottom/2)-(height/2); - x = (rect.right/2)-(width/2); - if ((height < rect.bottom)&&(width < rect.right)) break; - } + width = uImgWidth * (UINT)rect.bottom / uImgHeight; + height = rect.bottom; } } - else if ((rect.right <= uImgWidth)&&(rect.bottom <= uImgHeight)) - { - height = uImgHeight*(UINT)rect.right/uImgWidth; - y = (rect.bottom/2)-(height/2); - width = rect.right; - if ((height > rect.bottom)||(width > rect.right)) - { - for (;;) - { - if (((int)width - 1 < 0)||((int)height - 1 < 0)) break; - width -= 1; - height -= 1; - y = (rect.bottom/2)-(height/2); - x = (rect.right/2)-(width/2); - if ((height < rect.bottom)&&(width < rect.right)) break; - } - } - } + y = (rect.bottom / 2) - (height / 2); + x = (rect.right / 2) - (width / 2); DPRINT("x = %d\ny = %d\nWidth = %d\nHeight = %d\n\nrect.right = %d\nrect.bottom = %d\n\nuImgWidth = %d\nuImgHeight = %d\n", x, y, width, height, rect.right, rect.bottom, uImgWidth, uImgHeight); Rectangle(hdc, x - 1, y - 1, x + width + 1, y + height + 1); @@ -391,9 +541,17 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) switch (wParam) { case IDC_PREV: + { + currentFile = currentFile->Prev; + pLoadImageFromNode(currentFile, hwnd); + } break; case IDC_NEXT: + { + currentFile = currentFile->Next; + pLoadImageFromNode(currentFile, hwnd); + } break; case IDC_ZOOMP: @@ -410,9 +568,17 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) break; case IDC_ROT1: + { + GdipImageRotateFlip(image, Rotate270FlipNone); + ImageView_UpdateWindow(hwnd); + } break; case IDC_ROT2: + { + GdipImageRotateFlip(image, Rotate90FlipNone); + ImageView_UpdateWindow(hwnd); + } break; } @@ -432,6 +598,7 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) lpttt = (LPTOOLTIPTEXT)lParam; idButton = (UINT)lpttt->hdr.idFrom; + lpttt->hinst = hInstance; switch (idButton) { @@ -479,8 +646,8 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { RECT rc; SendMessage(hToolBar, TB_AUTOSIZE, 0, 0); - SendMessage(hToolBar, TB_GETITEMRECT, 1, (LPARAM)&rc); - MoveWindow(hDispWnd, 1, 1, LOWORD(lParam)-1, HIWORD(lParam)-rc.bottom, TRUE); + GetWindowRect(hToolBar, &rc); + MoveWindow(hDispWnd, 1, 1, LOWORD(lParam) - 1, HIWORD(lParam) - (rc.bottom - rc.top) - 1, TRUE); return 0L; } case WM_DESTROY: @@ -502,6 +669,7 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName) ULONG_PTR gdiplusToken; WNDCLASS WndClass = {0}; TCHAR szBuf[512]; + WCHAR szInitialFile[MAX_PATH]; HWND hMainWnd; MSG msg; @@ -540,6 +708,16 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName) CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, NULL, NULL, hInstance, NULL); + // make sure the path has no quotes on it + wcscpy(szInitialFile, szFileName); + PathUnquoteSpacesW(szInitialFile); + + currentFile = pBuildFileList(szInitialFile); + if (currentFile) + { + pLoadImageFromNode(currentFile, hMainWnd); + } + // Show it ShowWindow(hMainWnd, SW_SHOW); UpdateWindow(hMainWnd); @@ -551,6 +729,8 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName) DispatchMessageW(&msg); } + pFreeFileList(currentFile); + if (image) GdipDisposeImage(image); GdiplusShutdown(gdiplusToken); diff --git a/dll/win32/shimgvw/shimgvw.h b/dll/win32/shimgvw/shimgvw.h index 47135ead049..9bce39c6cbf 100644 --- a/dll/win32/shimgvw/shimgvw.h +++ b/dll/win32/shimgvw/shimgvw.h @@ -13,3 +13,10 @@ typedef struct INT Right; INT Bottom; } SHIMGVW_SETTINGS; + +typedef struct SHIMGVW_FILENODE_INTERNAL +{ + WCHAR FileName[MAX_PATH]; + struct SHIMGVW_FILENODE_INTERNAL *Prev; + struct SHIMGVW_FILENODE_INTERNAL *Next; +} SHIMGVW_FILENODE; diff --git a/dll/win32/shimgvw/shimgvw.spec b/dll/win32/shimgvw/shimgvw.spec index 427eaa4ca7c..fd06419ee2c 100644 --- a/dll/win32/shimgvw/shimgvw.spec +++ b/dll/win32/shimgvw/shimgvw.spec @@ -7,8 +7,8 @@ @ stdcall ImageView_PrintToW(ptr ptr wstr long) @ stdcall imageview_fullscreenW(ptr ptr wstr long) ImageView_FullscreenW @ stub ConvertDIBSECTIONToThumbnail -@ stub -private DllCanUnloadNow -@ stub -private DllGetClassObject +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) @ stub -private DllInstall -@ stub -private DllRegisterServer -@ stub -private DllUnregisterServer +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() diff --git a/drivers/filesystems/cdfs/create.c b/drivers/filesystems/cdfs/create.c index eef173d90a0..c226c1da570 100644 --- a/drivers/filesystems/cdfs/create.c +++ b/drivers/filesystems/cdfs/create.c @@ -140,10 +140,6 @@ CdfsOpenFile(PDEVICE_EXTENSION DeviceExt, DPRINT ("Status %lx\n", Status); if (!NT_SUCCESS(Status)) { - if (Status == STATUS_NO_MEDIA_IN_DEVICE || Status == STATUS_VERIFY_REQUIRED) - { - DeviceExt->VolumeDevice->Flags |= DO_VERIFY_VOLUME; - } DPRINT1 ("Status %lx\n", Status); return Status; } diff --git a/drivers/filesystems/cdfs/fsctl.c b/drivers/filesystems/cdfs/fsctl.c index 5da9923e822..702f1ade7a9 100644 --- a/drivers/filesystems/cdfs/fsctl.c +++ b/drivers/filesystems/cdfs/fsctl.c @@ -453,34 +453,25 @@ CdfsVerifyVolume(PDEVICE_OBJECT DeviceObject, PIRP Irp) { PDEVICE_EXTENSION DeviceExt; - PDEVICE_OBJECT DeviceToVerify; PIO_STACK_LOCATION Stack; NTSTATUS Status; CDINFO CdInfo; - PLIST_ENTRY Entry; PFCB Fcb; + PVPB VpbToVerify; DPRINT1 ("CdfsVerifyVolume() called\n"); -#if 0 - if (DeviceObject != CdfsGlobalData->DeviceObject) - { - DPRINT1("DeviceObject != CdfsGlobalData->DeviceObject\n"); - return(STATUS_INVALID_DEVICE_REQUEST); - } -#endif - DeviceExt = DeviceObject->DeviceExtension; Stack = IoGetCurrentIrpStackLocation (Irp); - DeviceToVerify = Stack->Parameters.VerifyVolume.DeviceObject; + VpbToVerify = Stack->Parameters.VerifyVolume.Vpb; FsRtlEnterFileSystem(); ExAcquireResourceExclusiveLite (&DeviceExt->VcbResource, TRUE); - if (!(DeviceToVerify->Flags & DO_VERIFY_VOLUME)) + if (!(VpbToVerify->RealDevice->Flags & DO_VERIFY_VOLUME)) { DPRINT1 ("Volume has been verified!\n"); ExReleaseResourceLite (&DeviceExt->VcbResource); @@ -488,14 +479,14 @@ CdfsVerifyVolume(PDEVICE_OBJECT DeviceObject, return STATUS_SUCCESS; } - DPRINT1 ("Device object %p Device to verify %p\n", DeviceObject, DeviceToVerify); + DPRINT1("Device object %p Device to verify %p\n", DeviceObject, VpbToVerify->RealDevice); - Status = CdfsGetVolumeData (DeviceToVerify, + Status = CdfsGetVolumeData(VpbToVerify->RealDevice, &CdInfo); if (NT_SUCCESS(Status) && - CdInfo.SerialNumber == DeviceToVerify->Vpb->SerialNumber && - CdInfo.VolumeLabelLength == DeviceToVerify->Vpb->VolumeLabelLength && - !wcsncmp (CdInfo.VolumeLabel, DeviceToVerify->Vpb->VolumeLabel, CdInfo.VolumeLabelLength)) + CdInfo.SerialNumber == VpbToVerify->SerialNumber && + CdInfo.VolumeLabelLength == VpbToVerify->VolumeLabelLength && + !wcsncmp(CdInfo.VolumeLabel, VpbToVerify->VolumeLabel, CdInfo.VolumeLabelLength)) { DPRINT1 ("Same volume!\n"); @@ -520,7 +511,7 @@ CdfsVerifyVolume(PDEVICE_OBJECT DeviceObject, Status = STATUS_WRONG_VOLUME; } - DeviceToVerify->Flags &= ~DO_VERIFY_VOLUME; + VpbToVerify->RealDevice->Flags &= ~DO_VERIFY_VOLUME; ExReleaseResourceLite (&DeviceExt->VcbResource); FsRtlExitFileSystem(); diff --git a/drivers/filesystems/ntfs/CMakeLists.txt b/drivers/filesystems/ntfs/CMakeLists.txt index 707f99d3023..a5b247d48b9 100644 --- a/drivers/filesystems/ntfs/CMakeLists.txt +++ b/drivers/filesystems/ntfs/CMakeLists.txt @@ -4,6 +4,7 @@ list(APPEND SOURCE blockdev.c close.c create.c + devctl.c dirctl.c dispatch.c fastio.c @@ -19,6 +20,7 @@ list(APPEND SOURCE add_library(ntfs SHARED ${SOURCE} ntfs.rc) set_module_type(ntfs kernelmodedriver) +target_link_libraries(ntfs ${PSEH_LIB}) add_importlibs(ntfs ntoskrnl hal) add_pch(ntfs ntfs.h SOURCE) add_cd_file(TARGET ntfs DESTINATION reactos/system32/drivers NO_CAB FOR all) diff --git a/drivers/filesystems/ntfs/attrib.c b/drivers/filesystems/ntfs/attrib.c index 675a2d8d8af..793ca291a5f 100644 --- a/drivers/filesystems/ntfs/attrib.c +++ b/drivers/filesystems/ntfs/attrib.c @@ -104,7 +104,23 @@ NtfsDumpFileNameAttribute(PNTFS_ATTR_RECORD Attribute) // DbgPrint(" Length %lu Offset %hu ", Attribute->Resident.ValueLength, Attribute->Resident.ValueOffset); FileNameAttr = (PFILENAME_ATTRIBUTE)((ULONG_PTR)Attribute + Attribute->Resident.ValueOffset); - DbgPrint(" '%.*S' ", FileNameAttr->NameLength, FileNameAttr->Name); + DbgPrint(" (%x) '%.*S' ", FileNameAttr->NameType, FileNameAttr->NameLength, FileNameAttr->Name); + DbgPrint(" '%x' ", FileNameAttr->FileAttributes); +} + + +static +VOID +NtfsDumpStandardInformationAttribute(PNTFS_ATTR_RECORD Attribute) +{ + PSTANDARD_INFORMATION StandardInfoAttr; + + DbgPrint(" $STANDARD_INFORMATION "); + +// DbgPrint(" Length %lu Offset %hu ", Attribute->Resident.ValueLength, Attribute->Resident.ValueOffset); + + StandardInfoAttr = (PSTANDARD_INFORMATION)((ULONG_PTR)Attribute + Attribute->Resident.ValueOffset); + DbgPrint(" '%x' ", StandardInfoAttr->FileAttribute); } @@ -182,7 +198,7 @@ NtfsDumpAttribute(PNTFS_ATTR_RECORD Attribute) break; case AttributeStandardInformation: - DbgPrint(" $STANDARD_INFORMATION "); + NtfsDumpStandardInformationAttribute(Attribute); break; case AttributeAttributeList: @@ -314,6 +330,28 @@ GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType) return NULL; } +PSTANDARD_INFORMATION +GetStandardInformationFromRecord(PFILE_RECORD_HEADER FileRecord) +{ + PNTFS_ATTR_RECORD Attribute; + PSTANDARD_INFORMATION StdInfo; + + Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)FileRecord + FileRecord->AttributeOffset); + while (Attribute < (PNTFS_ATTR_RECORD)((ULONG_PTR)FileRecord + FileRecord->BytesInUse) && + Attribute->Type != AttributeEnd) + { + if (Attribute->Type == AttributeStandardInformation) + { + StdInfo = (PSTANDARD_INFORMATION)((ULONG_PTR)Attribute + Attribute->Resident.ValueOffset); + return StdInfo; + } + + Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)Attribute + Attribute->Length); + } + + return NULL; +} + PFILENAME_ATTRIBUTE GetBestFileNameFromRecord(PFILE_RECORD_HEADER FileRecord) { diff --git a/drivers/filesystems/ntfs/create.c b/drivers/filesystems/ntfs/create.c index 08ceb39b805..ac9920ed84c 100644 --- a/drivers/filesystems/ntfs/create.c +++ b/drivers/filesystems/ntfs/create.c @@ -80,6 +80,7 @@ NTSTATUS NtfsOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, PWSTR FileName, + BOOLEAN OpenById, PNTFS_FCB * FoundFCB) { PNTFS_FCB ParentFcb; @@ -87,55 +88,81 @@ NtfsOpenFile(PDEVICE_EXTENSION DeviceExt, NTSTATUS Status; PWSTR AbsFileName = NULL; - DPRINT1("NtfsOpenFile(%p, %p, %S, %p)\n", DeviceExt, FileObject, FileName, FoundFCB); + DPRINT1("NtfsOpenFile(%p, %p, %S, %u, %p)\n", DeviceExt, FileObject, (!OpenById ? FileName : NULL), OpenById, FoundFCB); *FoundFCB = NULL; - if (FileObject->RelatedFileObject) + if (OpenById) { - DPRINT("Converting relative filename to absolute filename\n"); + ULONGLONG Id = (*(PULONGLONG)FileName) & NTFS_MFT_MASK; - Status = NtfsMakeAbsoluteFilename(FileObject->RelatedFileObject, - FileName, - &AbsFileName); - FileName = AbsFileName; - if (!NT_SUCCESS(Status)) + DPRINT1("Will attempt to open by id: %I64x\n", Id); + + Fcb = NtfsGrabFCBFromTableById(DeviceExt, + Id); + if (Fcb == NULL) { - return Status; - } + Status = NtfsGetFCBForFileById(DeviceExt, + &Fcb, + Id); + if (!NT_SUCCESS (Status)) + { + DPRINT("Could not make a new FCB, status: %x\n", Status); - return STATUS_UNSUCCESSFUL; + return Status; + } + + Fcb->Flags |= FCB_IS_OPEN_BY_ID; + } } - - //FIXME: Get cannonical path name (remove .'s, ..'s and extra separators) - - DPRINT("PathName to open: %S\n", FileName); - - /* try first to find an existing FCB in memory */ - DPRINT("Checking for existing FCB in memory\n"); - Fcb = NtfsGrabFCBFromTable(DeviceExt, - FileName); - if (Fcb == NULL) + else { - DPRINT("No existing FCB found, making a new one if file exists.\n"); - Status = NtfsGetFCBForFile(DeviceExt, - &ParentFcb, - &Fcb, - FileName); - if (ParentFcb != NULL) + if (FileObject->RelatedFileObject) { - NtfsReleaseFCB(DeviceExt, - ParentFcb); + DPRINT("Converting relative filename to absolute filename\n"); + + Status = NtfsMakeAbsoluteFilename(FileObject->RelatedFileObject, + FileName, + &AbsFileName); + FileName = AbsFileName; + if (!NT_SUCCESS(Status)) + { + return Status; + } + + return STATUS_UNSUCCESSFUL; } - if (!NT_SUCCESS (Status)) + //FIXME: Get cannonical path name (remove .'s, ..'s and extra separators) + + DPRINT("PathName to open: %S\n", FileName); + + /* try first to find an existing FCB in memory */ + DPRINT("Checking for existing FCB in memory\n"); + Fcb = NtfsGrabFCBFromTable(DeviceExt, + FileName); + if (Fcb == NULL) { - DPRINT("Could not make a new FCB, status: %x\n", Status); + DPRINT("No existing FCB found, making a new one if file exists.\n"); + Status = NtfsGetFCBForFile(DeviceExt, + &ParentFcb, + &Fcb, + FileName); + if (ParentFcb != NULL) + { + NtfsReleaseFCB(DeviceExt, + ParentFcb); + } - if (AbsFileName) - ExFreePool(AbsFileName); + if (!NT_SUCCESS (Status)) + { + DPRINT("Could not make a new FCB, status: %x\n", Status); - return Status; + if (AbsFileName) + ExFreePool(AbsFileName); + + return Status; + } } } @@ -186,6 +213,12 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, return STATUS_INVALID_PARAMETER; } + if (RequestedOptions & FILE_OPEN_BY_FILE_ID) + { + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; + } + FileObject = Stack->FileObject; if (RequestedDisposition == FILE_CREATE || @@ -195,6 +228,12 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, return STATUS_ACCESS_DENIED; } + if ((RequestedOptions & FILE_OPEN_BY_FILE_ID) == FILE_OPEN_BY_FILE_ID && + FileObject->FileName.Length != sizeof(ULONGLONG)) + { + return STATUS_INVALID_PARAMETER; + } + /* This a open operation for the volume itself */ if (FileObject->FileName.Length == 0 && (FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL)) @@ -220,6 +259,7 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, Status = NtfsOpenFile(DeviceExt, FileObject, FileObject->FileName.Buffer, + ((RequestedOptions & FILE_OPEN_BY_FILE_ID) == FILE_OPEN_BY_FILE_ID), &Fcb); if (NT_SUCCESS(Status)) @@ -245,6 +285,40 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, return STATUS_NOT_A_DIRECTORY; } + /* + * If it is a reparse point & FILE_OPEN_REPARSE_POINT, then allow opening it + * as a normal file. + * Otherwise, attempt to read reparse data and hand them to the Io manager + * with status reparse to force a reparse. + */ + if (NtfsFCBIsReparsePoint(Fcb) && + ((RequestedOptions & FILE_OPEN_REPARSE_POINT) != FILE_OPEN_REPARSE_POINT)) + { + PREPARSE_DATA_BUFFER ReparseData = NULL; + + Status = NtfsReadFCBAttribute(DeviceExt, Fcb, + AttributeReparsePoint, L"", 0, + (PVOID *)&Irp->Tail.Overlay.AuxiliaryBuffer); + if (NT_SUCCESS(Status)) + { + ReparseData = (PREPARSE_DATA_BUFFER)Irp->Tail.Overlay.AuxiliaryBuffer; + if (ReparseData->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) + { + Status = STATUS_REPARSE; + } + else + { + Status = STATUS_NOT_IMPLEMENTED; + ExFreePoolWithTag(ReparseData, TAG_NTFS); + } + } + + Irp->IoStatus.Information = ((Status == STATUS_REPARSE) ? ReparseData->ReparseTag : 0); + + NtfsCloseFile(DeviceExt, FileObject); + return Status; + } + /* HUGLY HACK: remain RO so far... */ if (RequestedDisposition == FILE_OVERWRITE || RequestedDisposition == FILE_OVERWRITE_IF || diff --git a/drivers/filesystems/ntfs/devctl.c b/drivers/filesystems/ntfs/devctl.c new file mode 100644 index 00000000000..115ef9273f9 --- /dev/null +++ b/drivers/filesystems/ntfs/devctl.c @@ -0,0 +1,46 @@ +/* + * ReactOS kernel + * Copyright (C) 2014 ReactOS Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: drivers/filesystem/ntfs/devctl.c + * PURPOSE: NTFS filesystem driver + * PROGRAMMERS: Pierre Schweitzer (pierre@reactos.org) + */ + +/* INCLUDES *****************************************************************/ + +#include "ntfs.h" + +#define NDEBUG +#include + +/* FUNCTIONS ****************************************************************/ + +NTSTATUS +NTAPI +NtfsFsdDeviceControl(PDEVICE_OBJECT DeviceObject, + PIRP Irp) +{ + PDEVICE_EXTENSION DeviceExt; + + DeviceExt = DeviceObject->DeviceExtension; + IoSkipCurrentIrpStackLocation(Irp); + + return IoCallDriver(DeviceExt->StorageDevice, Irp); +} diff --git a/drivers/filesystems/ntfs/fcb.c b/drivers/filesystems/ntfs/fcb.c index 57ff1987b53..2cb224d7151 100644 --- a/drivers/filesystems/ntfs/fcb.c +++ b/drivers/filesystems/ntfs/fcb.c @@ -124,6 +124,13 @@ NtfsFCBIsDirectory(PNTFS_FCB Fcb) } +BOOLEAN +NtfsFCBIsReparsePoint(PNTFS_FCB Fcb) +{ + return ((Fcb->Entry.FileAttributes & NTFS_FILE_TYPE_REPARSE) == NTFS_FILE_TYPE_REPARSE); +} + + BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb) { @@ -213,7 +220,8 @@ NtfsGrabFCBFromTable(PNTFS_VCB Vcb, Fcb = CONTAINING_RECORD(current_entry, NTFS_FCB, FcbListEntry); DPRINT("Comparing '%S' and '%S'\n", FileName, Fcb->PathName); - if (_wcsicmp(FileName, Fcb->PathName) == 0) + if ((Fcb->Flags & FCB_IS_OPEN_BY_ID) != FCB_IS_OPEN_BY_ID && + _wcsicmp(FileName, Fcb->PathName) == 0) { Fcb->RefCount++; KeReleaseSpinLock(&Vcb->FcbListLock, oldIrql); @@ -231,6 +239,38 @@ NtfsGrabFCBFromTable(PNTFS_VCB Vcb, } +PNTFS_FCB +NtfsGrabFCBFromTableById(PNTFS_VCB Vcb, + ULONGLONG Id) +{ + KIRQL oldIrql; + PNTFS_FCB Fcb; + PLIST_ENTRY current_entry; + + KeAcquireSpinLock(&Vcb->FcbListLock, &oldIrql); + + current_entry = Vcb->FcbListHead.Flink; + while (current_entry != &Vcb->FcbListHead) + { + Fcb = CONTAINING_RECORD(current_entry, NTFS_FCB, FcbListEntry); + + if ((Fcb->Flags & FCB_IS_OPEN_BY_ID) == FCB_IS_OPEN_BY_ID && + Fcb->MFTIndex == Id) + { + Fcb->RefCount++; + KeReleaseSpinLock(&Vcb->FcbListLock, oldIrql); + return Fcb; + } + + current_entry = current_entry->Flink; + } + + KeReleaseSpinLock(&Vcb->FcbListLock, oldIrql); + + return NULL; +} + + NTSTATUS NtfsFCBInitializeCache(PNTFS_VCB Vcb, PNTFS_FCB Fcb) @@ -392,6 +432,7 @@ NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb, { WCHAR pathName[MAX_PATH]; PFILENAME_ATTRIBUTE FileName; + PSTANDARD_INFORMATION StdInfo; PNTFS_FCB rcFCB; DPRINT1("NtfsMakeFCBFromDirEntry(%p, %p, %wZ, %p, %p)\n", Vcb, DirectoryFCB, Name, Record, fileFCB); @@ -402,18 +443,26 @@ NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb, return STATUS_OBJECT_NAME_NOT_FOUND; // Not sure that's the best here } - if (Name->Buffer[0] != 0 && wcslen(DirectoryFCB->PathName) + - sizeof(WCHAR) + Name->Length / sizeof(WCHAR) > MAX_PATH) + if (DirectoryFCB && Name) { - return STATUS_OBJECT_NAME_INVALID; - } + if (Name->Buffer[0] != 0 && wcslen(DirectoryFCB->PathName) + + sizeof(WCHAR) + Name->Length / sizeof(WCHAR) > MAX_PATH) + { + return STATUS_OBJECT_NAME_INVALID; + } - wcscpy(pathName, DirectoryFCB->PathName); - if (!NtfsFCBIsRoot(DirectoryFCB)) - { - wcscat(pathName, L"\\"); + wcscpy(pathName, DirectoryFCB->PathName); + if (!NtfsFCBIsRoot(DirectoryFCB)) + { + wcscat(pathName, L"\\"); + } + wcscat(pathName, Name->Buffer); + } + else + { + RtlCopyMemory(pathName, FileName->Name, FileName->NameLength * sizeof (WCHAR)); + pathName[FileName->NameLength] = UNICODE_NULL; } - wcscat(pathName, Name->Buffer); rcFCB = NtfsCreateFCB(pathName, Vcb); if (!rcFCB) @@ -427,6 +476,12 @@ NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb, rcFCB->RFCB.ValidDataLength.QuadPart = FileName->DataSize; rcFCB->RFCB.AllocationSize.QuadPart = FileName->AllocatedSize; + StdInfo = GetStandardInformationFromRecord(Record); + if (StdInfo != NULL) + { + rcFCB->Entry.FileAttributes |= StdInfo->FileAttribute; + } + NtfsFCBInitializeCache(Vcb, rcFCB); rcFCB->RefCount = 1; rcFCB->MFTIndex = MFTIndex; @@ -639,4 +694,93 @@ NtfsGetFCBForFile(PNTFS_VCB Vcb, return STATUS_SUCCESS; } + +NTSTATUS +NtfsGetFCBForFileById(PNTFS_VCB Vcb, + PNTFS_FCB *pFCB, + ULONGLONG Id) +{ + NTSTATUS Status; + PFILE_RECORD_HEADER FileRecord; + + FileRecord = ExAllocatePoolWithTag(NonPagedPool, + Vcb->NtfsInfo.BytesPerFileRecord, + TAG_NTFS); + if (FileRecord == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + Status = ReadFileRecord(Vcb, Id, FileRecord); + if (!NT_SUCCESS(Status)) + { + ExFreePoolWithTag(FileRecord, TAG_NTFS); + return Status; + } + + if ((FileRecord->Flags & FRH_IN_USE) != FRH_IN_USE) + { + ExFreePoolWithTag(FileRecord, TAG_NTFS); + return STATUS_INVALID_PARAMETER; + } + + Status = NtfsMakeFCBFromDirEntry(Vcb, NULL, NULL, FileRecord, Id, pFCB); + + ExFreePoolWithTag(FileRecord, TAG_NTFS); + + return Status; +} + +NTSTATUS +NtfsReadFCBAttribute(PNTFS_VCB Vcb, + PNTFS_FCB pFCB, + ULONG Type, + PCWSTR Name, + ULONG NameLength, + PVOID * Data) +{ + NTSTATUS Status; + PFILE_RECORD_HEADER FileRecord; + PNTFS_ATTR_CONTEXT AttrCtxt; + ULONGLONG AttrLength; + + FileRecord = ExAllocatePoolWithTag(NonPagedPool, + Vcb->NtfsInfo.BytesPerFileRecord, + TAG_NTFS); + if (FileRecord == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + Status = ReadFileRecord(Vcb, pFCB->MFTIndex, FileRecord); + if (!NT_SUCCESS(Status)) + { + ExFreePoolWithTag(FileRecord, TAG_NTFS); + return Status; + } + + Status = FindAttribute(Vcb, FileRecord, Type, Name, NameLength, &AttrCtxt); + if (!NT_SUCCESS(Status)) + { + ExFreePoolWithTag(FileRecord, TAG_NTFS); + return Status; + } + + AttrLength = AttributeDataLength(&AttrCtxt->Record); + *Data = ExAllocatePoolWithTag(NonPagedPool, AttrLength, TAG_NTFS); + if (*Data == NULL) + { + ReleaseAttributeContext(AttrCtxt); + ExFreePoolWithTag(FileRecord, TAG_NTFS); + return STATUS_INSUFFICIENT_RESOURCES; + } + + ReadAttribute(Vcb, AttrCtxt, 0, *Data, AttrLength); + + ReleaseAttributeContext(AttrCtxt); + ExFreePoolWithTag(FileRecord, TAG_NTFS); + + return STATUS_SUCCESS; +} + /* EOF */ diff --git a/drivers/filesystems/ntfs/finfo.c b/drivers/filesystems/ntfs/finfo.c index a1cdad2de0d..4ca26b83dde 100644 --- a/drivers/filesystems/ntfs/finfo.c +++ b/drivers/filesystems/ntfs/finfo.c @@ -45,7 +45,7 @@ NtfsGetStandardInformation(PNTFS_FCB Fcb, { UNREFERENCED_PARAMETER(DeviceObject); - DPRINT("NtfsGetStandardInformation() called\n"); + DPRINT1("NtfsGetStandardInformation(%p, %p, %p, %p)\n", Fcb, DeviceObject, StandardInfo, BufferLength); if (*BufferLength < sizeof(FILE_STANDARD_INFORMATION)) return STATUS_BUFFER_OVERFLOW; @@ -75,7 +75,7 @@ NtfsGetPositionInformation(PFILE_OBJECT FileObject, PFILE_POSITION_INFORMATION PositionInfo, PULONG BufferLength) { - DPRINT("NtfsGetPositionInformation() called\n"); + DPRINT1("NtfsGetPositionInformation(%p, %p, %p)\n", FileObject, PositionInfo, BufferLength); if (*BufferLength < sizeof(FILE_POSITION_INFORMATION)) return STATUS_BUFFER_OVERFLOW; @@ -101,7 +101,7 @@ NtfsGetBasicInformation(PFILE_OBJECT FileObject, { PFILENAME_ATTRIBUTE FileName = &Fcb->Entry; - DPRINT("NtfsGetBasicInformation() called\n"); + DPRINT1("NtfsGetBasicInformation(%p, %p, %p, %p, %p)\n", FileObject, Fcb, DeviceObject, BasicInfo, BufferLength); if (*BufferLength < sizeof(FILE_BASIC_INFORMATION)) return STATUS_BUFFER_OVERFLOW; @@ -135,7 +135,7 @@ NtfsGetNameInformation(PFILE_OBJECT FileObject, UNREFERENCED_PARAMETER(FileObject); UNREFERENCED_PARAMETER(DeviceObject); - DPRINT("NtfsGetNameInformation() called\n"); + DPRINT1("NtfsGetNameInformation(%p, %p, %p, %p, %p)\n", FileObject, Fcb, DeviceObject, NameInfo, BufferLength); ASSERT(NameInfo != NULL); ASSERT(Fcb != NULL); @@ -175,7 +175,7 @@ NtfsGetInternalInformation(PNTFS_FCB Fcb, PFILE_INTERNAL_INFORMATION InternalInfo, PULONG BufferLength) { - DPRINT("NtfsGetInternalInformation() called\n"); + DPRINT1("NtfsGetInternalInformation(%p, %p, %p)\n", Fcb, InternalInfo, BufferLength); ASSERT(InternalInfo); ASSERT(Fcb); @@ -200,6 +200,8 @@ NtfsGetNetworkOpenInformation(PNTFS_FCB Fcb, { PFILENAME_ATTRIBUTE FileName = &Fcb->Entry; + DPRINT1("NtfsGetNetworkOpenInformation(%p, %p, %p, %p)\n", Fcb, DeviceExt, NetworkInfo, BufferLength); + if (*BufferLength < sizeof(FILE_NETWORK_OPEN_INFORMATION)) return(STATUS_BUFFER_OVERFLOW); @@ -233,7 +235,7 @@ NtfsFsdQueryInformation(PDEVICE_OBJECT DeviceObject, ULONG BufferLength; NTSTATUS Status = STATUS_SUCCESS; - DPRINT("NtfsQueryInformation() called\n"); + DPRINT1("NtfsQueryInformation(%p, %p)\n", DeviceObject, Irp); Stack = IoGetCurrentIrpStackLocation(Irp); FileInformationClass = Stack->Parameters.QueryFile.FileInformationClass; @@ -289,11 +291,12 @@ NtfsFsdQueryInformation(PDEVICE_OBJECT DeviceObject, case FileAlternateNameInformation: case FileAllInformation: + DPRINT1("Unimplemented information class %u\n", FileInformationClass); Status = STATUS_NOT_IMPLEMENTED; break; default: - DPRINT("Unimplemented information class %u\n", FileInformationClass); + DPRINT1("Unimplemented information class %u\n", FileInformationClass); Status = STATUS_INVALID_PARAMETER; } diff --git a/drivers/filesystems/ntfs/fsctl.c b/drivers/filesystems/ntfs/fsctl.c index 71f884c492c..6a817e473b7 100644 --- a/drivers/filesystems/ntfs/fsctl.c +++ b/drivers/filesystems/ntfs/fsctl.c @@ -226,6 +226,7 @@ NtfsGetVolumeData(PDEVICE_OBJECT DeviceObject, NtfsInfo->SectorsPerCluster = BootSector->BPB.SectorsPerCluster; NtfsInfo->BytesPerCluster = BootSector->BPB.BytesPerSector * BootSector->BPB.SectorsPerCluster; NtfsInfo->SectorCount = BootSector->EBPB.SectorCount; + NtfsInfo->ClusterCount = DeviceExt->NtfsInfo.SectorCount / (ULONGLONG)DeviceExt->NtfsInfo.SectorsPerCluster; NtfsInfo->MftStart.QuadPart = BootSector->EBPB.MftLocation; NtfsInfo->MftMirrStart.QuadPart = BootSector->EBPB.MftMirrLocation; @@ -547,7 +548,7 @@ GetNfsVolumeData(PDEVICE_EXTENSION DeviceExt, DataBuffer->VolumeSerialNumber.QuadPart = DeviceExt->NtfsInfo.SerialNumber; DataBuffer->NumberSectors.QuadPart = DeviceExt->NtfsInfo.SectorCount; - DataBuffer->TotalClusters.QuadPart = DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster; + DataBuffer->TotalClusters.QuadPart = DeviceExt->NtfsInfo.ClusterCount; DataBuffer->FreeClusters.QuadPart = NtfsGetFreeClusters(DeviceExt); DataBuffer->TotalReserved.QuadPart = 0LL; // FIXME DataBuffer->BytesPerSector = DeviceExt->NtfsInfo.BytesPerSector; @@ -626,14 +627,23 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt, InputBuffer = (PNTFS_FILE_RECORD_INPUT_BUFFER)Irp->AssociatedIrp.SystemBuffer; MFTRecord = InputBuffer->FileReferenceNumber.QuadPart; - Status = ReadFileRecord(DeviceExt, MFTRecord, FileRecord); - if (!NT_SUCCESS(Status)) - { - DPRINT1("Failed reading record: %I64x\n", MFTRecord); - ExFreePoolWithTag(FileRecord, TAG_NTFS); - return Status; - } + DPRINT1("Requesting: %I64x\n", MFTRecord); + do + { + Status = ReadFileRecord(DeviceExt, MFTRecord, FileRecord); + if (NT_SUCCESS(Status)) + { + if (FileRecord->Flags & FRH_IN_USE) + { + break; + } + } + + --MFTRecord; + } while (TRUE); + + DPRINT1("Returning: %I64x\n", MFTRecord); OutputBuffer = (PNTFS_FILE_RECORD_OUTPUT_BUFFER)Irp->AssociatedIrp.SystemBuffer; OutputBuffer->FileReferenceNumber.QuadPart = MFTRecord; OutputBuffer->FileRecordLength = DeviceExt->NtfsInfo.BytesPerFileRecord; @@ -641,6 +651,134 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt, ExFreePoolWithTag(FileRecord, TAG_NTFS); + Irp->IoStatus.Information = FIELD_OFFSET(NTFS_FILE_RECORD_OUTPUT_BUFFER, FileRecordBuffer) + DeviceExt->NtfsInfo.BytesPerFileRecord; + + return STATUS_SUCCESS; +} + + +static +NTSTATUS +GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, + PIRP Irp) +{ + NTSTATUS Status = STATUS_SUCCESS; + PIO_STACK_LOCATION Stack; + PVOLUME_BITMAP_BUFFER BitmapBuffer; + LONGLONG StartingLcn; + PFILE_RECORD_HEADER BitmapRecord; + PNTFS_ATTR_CONTEXT DataContext; + ULONGLONG TotalClusters; + ULONGLONG ToCopy; + BOOLEAN Overflow = FALSE; + + DPRINT1("GetVolumeBitmap(%p, %p)\n", DeviceExt, Irp); + + Stack = IoGetCurrentIrpStackLocation(Irp); + + if (Stack->Parameters.FileSystemControl.InputBufferLength < sizeof(STARTING_LCN_INPUT_BUFFER)) + { + DPRINT1("Invalid input! %d\n", Stack->Parameters.FileSystemControl.InputBufferLength); + return STATUS_INVALID_PARAMETER; + } + + if (Stack->Parameters.FileSystemControl.OutputBufferLength < sizeof(VOLUME_BITMAP_BUFFER)) + { + DPRINT1("Invalid output! %d\n", Stack->Parameters.FileSystemControl.OutputBufferLength); + return STATUS_BUFFER_TOO_SMALL; + } + + BitmapBuffer = NtfsGetUserBuffer(Irp); + if (Irp->RequestorMode == UserMode) + { + _SEH2_TRY + { + ProbeForRead(Stack->Parameters.FileSystemControl.Type3InputBuffer, + Stack->Parameters.FileSystemControl.InputBufferLength, + sizeof(CHAR)); + ProbeForWrite(BitmapBuffer, Stack->Parameters.FileSystemControl.OutputBufferLength, + sizeof(CHAR)); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + } + else + { + if (Stack->Parameters.FileSystemControl.Type3InputBuffer == NULL || + BitmapBuffer == NULL) + { + Status = STATUS_INVALID_PARAMETER; + } + } + + if (!NT_SUCCESS(Status)) + { + DPRINT1("Invalid buffer! %p %p\n", Stack->Parameters.FileSystemControl.Type3InputBuffer, BitmapBuffer); + return Status; + } + + StartingLcn = ((PSTARTING_LCN_INPUT_BUFFER)Stack->Parameters.FileSystemControl.Type3InputBuffer)->StartingLcn.QuadPart; + if (StartingLcn > DeviceExt->NtfsInfo.ClusterCount) + { + DPRINT1("Requested bitmap start beyond partition end: %I64x %I64x\n", DeviceExt->NtfsInfo.ClusterCount, StartingLcn); + return STATUS_INVALID_PARAMETER; + } + + /* Round down to a multiple of 8 */ + StartingLcn = StartingLcn & ~7; + TotalClusters = DeviceExt->NtfsInfo.ClusterCount - StartingLcn; + ToCopy = TotalClusters / 8; + if ((ToCopy + FIELD_OFFSET(VOLUME_BITMAP_BUFFER, Buffer)) > Stack->Parameters.FileSystemControl.OutputBufferLength) + { + DPRINT1("Buffer too small: %x, needed: %x\n", Stack->Parameters.FileSystemControl.OutputBufferLength, (ToCopy + FIELD_OFFSET(VOLUME_BITMAP_BUFFER, Buffer))); + Overflow = TRUE; + ToCopy = Stack->Parameters.FileSystemControl.OutputBufferLength - FIELD_OFFSET(VOLUME_BITMAP_BUFFER, Buffer); + } + + BitmapRecord = ExAllocatePoolWithTag(NonPagedPool, + DeviceExt->NtfsInfo.BytesPerFileRecord, + TAG_NTFS); + if (BitmapRecord == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + Status = ReadFileRecord(DeviceExt, NTFS_FILE_BITMAP, BitmapRecord); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed reading volume bitmap: %lx\n", Status); + ExFreePoolWithTag(BitmapRecord, TAG_NTFS); + return Status; + } + + Status = FindAttribute(DeviceExt, BitmapRecord, AttributeData, L"", 0, &DataContext); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed find $DATA for bitmap: %lx\n", Status); + ExFreePoolWithTag(BitmapRecord, TAG_NTFS); + return Status; + } + + BitmapBuffer->StartingLcn.QuadPart = StartingLcn; + BitmapBuffer->BitmapSize.QuadPart = ToCopy * 8; + + Irp->IoStatus.Information = FIELD_OFFSET(VOLUME_BITMAP_BUFFER, Buffer); + _SEH2_TRY + { + Irp->IoStatus.Information += ReadAttribute(DeviceExt, DataContext, StartingLcn / 8, (PCHAR)BitmapBuffer->Buffer, ToCopy); + Status = (Overflow ? STATUS_BUFFER_OVERFLOW : STATUS_SUCCESS); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + ReleaseAttributeContext(DataContext); + ExFreePoolWithTag(BitmapRecord, TAG_NTFS); + return STATUS_SUCCESS; } @@ -668,6 +806,10 @@ NtfsUserFsRequest(PDEVICE_OBJECT DeviceObject, Status = GetNtfsFileRecord(DeviceExt, Irp); break; + case FSCTL_GET_VOLUME_BITMAP: + Status = GetVolumeBitmap(DeviceExt, Irp); + break; + default: DPRINT1("Invalid user request: %x\n", Stack->Parameters.FileSystemControl.FsControlCode); Status = STATUS_INVALID_DEVICE_REQUEST; @@ -690,6 +832,8 @@ NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, Stack = IoGetCurrentIrpStackLocation(Irp); + Irp->IoStatus.Information = 0; + switch (Stack->MinorFunction) { case IRP_MN_KERNEL_CALL: @@ -718,7 +862,6 @@ NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, } Irp->IoStatus.Status = Status; - Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); diff --git a/drivers/filesystems/ntfs/misc.c b/drivers/filesystems/ntfs/misc.c index 27c38bb6d67..5d17e1a07a4 100644 --- a/drivers/filesystems/ntfs/misc.c +++ b/drivers/filesystems/ntfs/misc.c @@ -112,4 +112,17 @@ NtfsFileFlagsToAttributes(ULONG NtfsAttributes, *FileAttributes = FILE_ATTRIBUTE_NORMAL; } +PVOID +NtfsGetUserBuffer(PIRP Irp) +{ + if (Irp->MdlAddress != NULL) + { + return MmGetSystemAddressForMdlSafe(Irp->MdlAddress, HighPagePriority); + } + else + { + return Irp->UserBuffer; + } +} + /* EOF */ diff --git a/drivers/filesystems/ntfs/ntfs.c b/drivers/filesystems/ntfs/ntfs.c index dff05051774..090ee68c22f 100644 --- a/drivers/filesystems/ntfs/ntfs.c +++ b/drivers/filesystems/ntfs/ntfs.c @@ -135,6 +135,7 @@ NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject) DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = NtfsFsdDirectoryControl; DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NtfsFsdFileSystemControl; + DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NtfsFsdDeviceControl; return; } diff --git a/drivers/filesystems/ntfs/ntfs.h b/drivers/filesystems/ntfs/ntfs.h index bb72e0113ff..77570526c5f 100644 --- a/drivers/filesystems/ntfs/ntfs.h +++ b/drivers/filesystems/ntfs/ntfs.h @@ -2,6 +2,7 @@ #define NTFS_H #include +#include #define CACHEPAGESIZE(pDeviceExt) \ ((pDeviceExt)->NtfsInfo.UCHARsPerCluster > PAGE_SIZE ? \ @@ -61,6 +62,7 @@ typedef struct _NTFS_INFO ULONG SectorsPerCluster; ULONG BytesPerCluster; ULONGLONG SectorCount; + ULONGLONG ClusterCount; ULARGE_INTEGER MftStart; ULARGE_INTEGER MftMirrStart; ULONG BytesPerFileRecord; @@ -414,6 +416,7 @@ typedef struct _NTFS_ATTR_CONTEXT #define FCB_CACHE_INITIALIZED 0x0001 #define FCB_IS_VOLUME_STREAM 0x0002 #define FCB_IS_VOLUME 0x0004 +#define FCB_IS_OPEN_BY_ID 0x0008 #define MAX_PATH 260 typedef struct _FCB @@ -465,6 +468,9 @@ DecodeRun(PUCHAR DataRun, VOID NtfsDumpFileAttributes(PFILE_RECORD_HEADER FileRecord); +PSTANDARD_INFORMATION +GetStandardInformationFromRecord(PFILE_RECORD_HEADER FileRecord); + PFILENAME_ATTRIBUTE GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType); @@ -519,6 +525,14 @@ NtfsFsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp); +/* devctl.c */ + +DRIVER_DISPATCH NtfsFsdDeviceControl; +NTSTATUS NTAPI +NtfsFsdDeviceControl(PDEVICE_OBJECT DeviceObject, + PIRP Irp); + + /* dirctl.c */ DRIVER_DISPATCH NtfsFsdDirectoryControl; @@ -564,6 +578,9 @@ NtfsDestroyFCB(PNTFS_FCB Fcb); BOOLEAN NtfsFCBIsDirectory(PNTFS_FCB Fcb); +BOOLEAN +NtfsFCBIsReparsePoint(PNTFS_FCB Fcb); + BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb); @@ -583,6 +600,10 @@ PNTFS_FCB NtfsGrabFCBFromTable(PNTFS_VCB Vcb, PCWSTR FileName); +PNTFS_FCB +NtfsGrabFCBFromTableById(PNTFS_VCB Vcb, + ULONGLONG Id); + NTSTATUS NtfsFCBInitializeCache(PNTFS_VCB Vcb, PNTFS_FCB Fcb); @@ -604,6 +625,19 @@ NtfsGetFCBForFile(PNTFS_VCB Vcb, PNTFS_FCB *pFCB, const PWSTR pFileName); +NTSTATUS +NtfsGetFCBForFileById(PNTFS_VCB Vcb, + PNTFS_FCB *pFCB, + ULONGLONG Id); + +NTSTATUS +NtfsReadFCBAttribute(PNTFS_VCB Vcb, + PNTFS_FCB pFCB, + ULONG Type, + PCWSTR Name, + ULONG NameLength, + PVOID * Data); + /* finfo.c */ @@ -707,6 +741,9 @@ PNTFS_IRP_CONTEXT NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PIRP Irp); +PVOID +NtfsGetUserBuffer(PIRP Irp); + #if 0 BOOLEAN wstrcmpjoki(PWSTR s1, PWSTR s2); diff --git a/drivers/filesystems/ntfs/volinfo.c b/drivers/filesystems/ntfs/volinfo.c index 794c39e8292..41823e10b40 100644 --- a/drivers/filesystems/ntfs/volinfo.c +++ b/drivers/filesystems/ntfs/volinfo.c @@ -70,7 +70,7 @@ NtfsGetFreeClusters(PDEVICE_EXTENSION DeviceExt) } BitmapDataSize = AttributeDataLength(&DataContext->Record); - ASSERT((BitmapDataSize * 8) >= (DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster)); + ASSERT((BitmapDataSize * 8) >= DeviceExt->NtfsInfo.ClusterCount); BitmapData = ExAllocatePoolWithTag(NonPagedPool, ROUND_UP(BitmapDataSize, DeviceExt->NtfsInfo.BytesPerSector), TAG_NTFS); if (BitmapData == NULL) { @@ -86,11 +86,11 @@ NtfsGetFreeClusters(PDEVICE_EXTENSION DeviceExt) } ReleaseAttributeContext(DataContext); - DPRINT1("Total clusters: %I64x\n", DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster); + DPRINT1("Total clusters: %I64x\n", DeviceExt->NtfsInfo.ClusterCount); DPRINT1("Total clusters in bitmap: %I64x\n", BitmapDataSize * 8); - DPRINT1("Diff in size: %I64d B\n", ((BitmapDataSize * 8) - (DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster)) * DeviceExt->NtfsInfo.SectorsPerCluster * DeviceExt->NtfsInfo.BytesPerSector); + DPRINT1("Diff in size: %I64d B\n", ((BitmapDataSize * 8) - DeviceExt->NtfsInfo.ClusterCount) * DeviceExt->NtfsInfo.SectorsPerCluster * DeviceExt->NtfsInfo.BytesPerSector); - RtlInitializeBitMap(&Bitmap, (PULONG)BitmapData, DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster); + RtlInitializeBitMap(&Bitmap, (PULONG)BitmapData, DeviceExt->NtfsInfo.ClusterCount); FreeClusters = RtlNumberOfClearBits(&Bitmap); ExFreePoolWithTag(BitmapData, TAG_NTFS); @@ -198,7 +198,7 @@ NtfsGetFsSizeInformation(PDEVICE_OBJECT DeviceObject, DeviceExt = DeviceObject->DeviceExtension; FsSizeInfo->AvailableAllocationUnits.QuadPart = NtfsGetFreeClusters(DeviceExt); - FsSizeInfo->TotalAllocationUnits.QuadPart = DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster; + FsSizeInfo->TotalAllocationUnits.QuadPart = DeviceExt->NtfsInfo.ClusterCount; FsSizeInfo->SectorsPerAllocationUnit = DeviceExt->NtfsInfo.SectorsPerCluster; FsSizeInfo->BytesPerSector = DeviceExt->NtfsInfo.BytesPerSector; diff --git a/drivers/sac/driver/sacdrv.h b/drivers/sac/driver/sacdrv.h index 900768b8a9f..c01c8d15a33 100644 --- a/drivers/sac/driver/sacdrv.h +++ b/drivers/sac/driver/sacdrv.h @@ -1397,8 +1397,8 @@ typedef enum _VT_ANSI_ATTRIBUTES AlteronateFont5, AlteronateFont6, AlternateFont7, - AlternatEfont8, - Alternatefont9, + AlternateFont8, + AlternateFont9, // // Additional attributes (not supported) diff --git a/drivers/sac/driver/vtutf8chan.c b/drivers/sac/driver/vtutf8chan.c index fe9f7f65e62..ce45af22246 100644 --- a/drivers/sac/driver/vtutf8chan.c +++ b/drivers/sac/driver/vtutf8chan.c @@ -1088,7 +1088,7 @@ VTUTF8ChannelOEcho(IN PSAC_CHANNEL Channel, /* Return success if there's nothing to echo */ if (!(Size / sizeof(WCHAR))) return Status; - /* Start with the input string*/ + /* Start with the input string */ pwch = (PWCHAR)String; /* First, figure out how much is outside of the block length alignment */ diff --git a/hello b/hello new file mode 100644 index 00000000000..ce013625030 --- /dev/null +++ b/hello @@ -0,0 +1 @@ +hello diff --git a/include/crt/string.h b/include/crt/string.h index 219bf0e4031..ef659029c84 100644 --- a/include/crt/string.h +++ b/include/crt/string.h @@ -357,6 +357,7 @@ extern "C" { _In_opt_ _locale_t _Locale); char* + __cdecl strncpy( char *_Dest, const char *_Source, @@ -707,6 +708,7 @@ extern "C" { _CRTIMP _CRT_INSECURE_DEPRECATE(wcsncpy_s) wchar_t* + __cdecl wcsncpy( wchar_t *_Dest, const wchar_t *_Source, diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h index 3c35399d69e..982bef28de4 100644 --- a/include/ddk/ntifs.h +++ b/include/ddk/ntifs.h @@ -5213,6 +5213,7 @@ KeRemoveQueueEx( #define ExDisableResourceBoost ExDisableResourceBoostLite VOID +NTAPI ExInitializePushLock( _Out_ PEX_PUSH_LOCK PushLock); diff --git a/include/reactos/mc/bugcodes.mc b/include/reactos/mc/bugcodes.mc index 3afd246aab6..1a1d59cf810 100644 --- a/include/reactos/mc/bugcodes.mc +++ b/include/reactos/mc/bugcodes.mc @@ -1586,6 +1586,14 @@ Language=English An initialization failure occurred while attempting to boot from the RAM disk. . +MessageId=0xF9 +Severity=Success +Facility=System +SymbolicName=DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN +Language=English +STATUS_REPARSE was returned from a FSD when trying to open a volume. +. + MessageId=0xFA Severity=Success Facility=System diff --git a/include/xdk/exfuncs.h b/include/xdk/exfuncs.h index a60908fbe76..503c07a7145 100644 --- a/include/xdk/exfuncs.h +++ b/include/xdk/exfuncs.h @@ -379,6 +379,7 @@ $if (_NTIFS_) #define ExDisableResourceBoost ExDisableResourceBoostLite VOID +NTAPI ExInitializePushLock( _Out_ PEX_PUSH_LOCK PushLock); $endif (_NTIFS_) diff --git a/ntoskrnl/include/internal/io.h b/ntoskrnl/include/internal/io.h index 778bf6d8073..835e8d3b607 100644 --- a/ntoskrnl/include/internal/io.h +++ b/ntoskrnl/include/internal/io.h @@ -1210,6 +1210,14 @@ IoChangeFileObjectFilterContext( IN BOOLEAN Define ); +VOID +NTAPI +IopDoNameTransmogrify( + IN PIRP Irp, + IN PFILE_OBJECT FileObject, + IN PREPARSE_DATA_BUFFER DataBuffer +); + // // I/O Timer Routines // diff --git a/ntoskrnl/io/iomgr/file.c b/ntoskrnl/io/iomgr/file.c index 74ce63fd36d..1f8a76bfbba 100644 --- a/ntoskrnl/io/iomgr/file.c +++ b/ntoskrnl/io/iomgr/file.c @@ -162,6 +162,107 @@ IopCheckDeviceAndDriver(IN POPEN_PACKET OpenPacket, } } +VOID +NTAPI +IopDoNameTransmogrify(IN PIRP Irp, + IN PFILE_OBJECT FileObject, + IN PREPARSE_DATA_BUFFER DataBuffer) +{ + PWSTR Buffer; + USHORT Length; + USHORT RequiredLength; + PWSTR NewBuffer; + + PAGED_CODE(); + + ASSERT(Irp->IoStatus.Status == STATUS_REPARSE); + ASSERT(Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT); + ASSERT(Irp->Tail.Overlay.AuxiliaryBuffer != NULL); + ASSERT(DataBuffer != NULL); + ASSERT(DataBuffer->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT); + ASSERT(DataBuffer->ReparseDataLength < MAXIMUM_REPARSE_DATA_BUFFER_SIZE); + ASSERT(DataBuffer->Reserved < MAXIMUM_REPARSE_DATA_BUFFER_SIZE); + + /* First of all, validate data */ + if (DataBuffer->ReparseDataLength < REPARSE_DATA_BUFFER_HEADER_SIZE || + (DataBuffer->SymbolicLinkReparseBuffer.PrintNameLength + + DataBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength + + FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer.PathBuffer[0])) > MAXIMUM_REPARSE_DATA_BUFFER_SIZE) + { + Irp->IoStatus.Status = STATUS_IO_REPARSE_DATA_INVALID; + } + + /* Everything went right */ + if (NT_SUCCESS(Irp->IoStatus.Status)) + { + /* Compute buffer & length */ + Buffer = (PWSTR)((ULONG_PTR)DataBuffer->MountPointReparseBuffer.PathBuffer + + DataBuffer->MountPointReparseBuffer.SubstituteNameOffset); + Length = DataBuffer->MountPointReparseBuffer.SubstituteNameLength; + + /* Check we don't overflow */ + if ((MAXUSHORT - DataBuffer->Reserved) <= (Length + sizeof(UNICODE_NULL))) + { + Irp->IoStatus.Status = STATUS_IO_REPARSE_DATA_INVALID; + } + else + { + /* Compute how much mem we'll need */ + RequiredLength = DataBuffer->Reserved + Length + sizeof(UNICODE_NULL); + + /* Check if FileObject can already hold what we need */ + if (FileObject->FileName.MaximumLength >= RequiredLength) + { + NewBuffer = FileObject->FileName.Buffer; + } + else + { + /* Allocate otherwise */ + NewBuffer = ExAllocatePoolWithTag(PagedPool, RequiredLength, TAG_IO_NAME); + if (NewBuffer == NULL) + { + Irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; + } + } + } + } + + /* Everything went right */ + if (NT_SUCCESS(Irp->IoStatus.Status)) + { + /* Copy reserved */ + if (DataBuffer->Reserved) + { + RtlMoveMemory((PWSTR)((ULONG_PTR)NewBuffer + Length), + (PWSTR)((ULONG_PTR)FileObject->FileName.Buffer + FileObject->FileName.Length - DataBuffer->Reserved), + DataBuffer->Reserved); + } + + /* Then, buffer */ + if (Length) + { + RtlCopyMemory(NewBuffer, Buffer, Length); + } + + /* And finally replace buffer if new one was allocated */ + FileObject->FileName.Length = RequiredLength - sizeof(UNICODE_NULL); + if (NewBuffer != FileObject->FileName.Buffer) + { + if (FileObject->FileName.Buffer) + { + ExFreePoolWithTag(FileObject->FileName.Buffer, TAG_IO_NAME); + } + + FileObject->FileName.Buffer = NewBuffer; + FileObject->FileName.MaximumLength = RequiredLength; + FileObject->FileName.Buffer[RequiredLength / sizeof(WCHAR) - 1] = UNICODE_NULL; + } + } + + /* We don't need them anymore - it was allocated by the driver */ + ExFreePool(DataBuffer); +} + NTSTATUS NTAPI IopParseDevice(IN PVOID ParseObject, @@ -206,6 +307,23 @@ IopParseDevice(IN PVOID ParseObject, /* Validate the open packet */ if (!IopValidateOpenPacket(OpenPacket)) return STATUS_OBJECT_TYPE_MISMATCH; + /* Valide reparse point in case we traversed a mountpoint */ + if (OpenPacket->TraversedMountPoint) + { + /* This is a reparse point we understand */ + ASSERT(OpenPacket->Information == IO_REPARSE_TAG_MOUNT_POINT); + + /* Make sure we're dealing with correct DO */ + if (OriginalDeviceObject->DeviceType != FILE_DEVICE_DISK && + OriginalDeviceObject->DeviceType != FILE_DEVICE_CD_ROM && + OriginalDeviceObject->DeviceType != FILE_DEVICE_VIRTUAL_DISK && + OriginalDeviceObject->DeviceType != FILE_DEVICE_TAPE) + { + OpenPacket->FinalStatus = STATUS_IO_REPARSE_DATA_INVALID; + return STATUS_IO_REPARSE_DATA_INVALID; + } + } + /* Check if we have a related file object */ if (OpenPacket->RelatedFileObject) { @@ -404,6 +522,7 @@ IopParseDevice(IN PVOID ParseObject, /* Check if we can simply use a dummy file */ UseDummyFile = ((OpenPacket->QueryOnly) || (OpenPacket->DeleteOnly)); +#if 1 /* FIXME: Small hack still exists, have to check why... * This is triggered multiple times by usetup and then once per boot. */ @@ -424,6 +543,7 @@ IopParseDevice(IN PVOID ParseObject, WRITE_DAC)); DirectOpen = TRUE; } +#endif /* Check if this is a direct open */ if (!(RemainingName->Length) && @@ -484,6 +604,12 @@ IopParseDevice(IN PVOID ParseObject, } } + /* If we traversed a mount point, reset the information */ + if (OpenPacket->TraversedMountPoint) + { + OpenPacket->TraversedMountPoint = FALSE; + } + /* Check if this is a secure FSD */ if ((DeviceObject->Characteristics & FILE_DEVICE_SECURE_OPEN) && ((OpenPacket->RelatedFileObject) || (RemainingName->Length)) && @@ -740,6 +866,26 @@ IopParseDevice(IN PVOID ParseObject, ASSERT(!Irp->PendingReturned); ASSERT(!Irp->MdlAddress); + /* Handle name change if required */ + if (Status == STATUS_REPARSE) + { + /* Check this is a mount point */ + if (Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT) + { + PREPARSE_DATA_BUFFER ReparseData; + + /* Reparse point attributes were passed by the driver in the auxiliary buffer */ + ASSERT(Irp->Tail.Overlay.AuxiliaryBuffer != NULL); + ReparseData = (PREPARSE_DATA_BUFFER)Irp->Tail.Overlay.AuxiliaryBuffer; + + ASSERT(ReparseData->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT); + ASSERT(ReparseData->ReparseDataLength < MAXIMUM_REPARSE_DATA_BUFFER_SIZE); + ASSERT(ReparseData->Reserved < MAXIMUM_REPARSE_DATA_BUFFER_SIZE); + + IopDoNameTransmogrify(Irp, FileObject, ReparseData); + } + } + /* Completion happens at APC_LEVEL */ KeRaiseIrql(APC_LEVEL, &OldIrql); @@ -805,7 +951,90 @@ IopParseDevice(IN PVOID ParseObject, } else if (Status == STATUS_REPARSE) { - /* FIXME: We don't handle this at all! */ + if (OpenPacket->Information == IO_REPARSE || + OpenPacket->Information == IO_REPARSE_TAG_MOUNT_POINT) + { + /* Update CompleteName with reparse info which got updated in IopDoNameTransmogrify() */ + if (CompleteName->MaximumLength < FileObject->FileName.Length) + { + PWSTR NewCompleteName; + + /* Allocate a new buffer for the string */ + NewCompleteName = ExAllocatePoolWithTag(PagedPool, FileObject->FileName.Length, TAG_IO_NAME); + if (NewCompleteName == NULL) + { + OpenPacket->FinalStatus = STATUS_INSUFFICIENT_RESOURCES; + return STATUS_INSUFFICIENT_RESOURCES; + } + + /* Release the old one */ + if (CompleteName->Buffer != NULL) + { + ExFreePoolWithTag(CompleteName->Buffer, TAG_IO_NAME); + } + + /* And setup the new one */ + CompleteName->Buffer = NewCompleteName; + CompleteName->MaximumLength = FileObject->FileName.Length; + } + + /* Copy our new complete name */ + RtlCopyUnicodeString(CompleteName, &FileObject->FileName); + + if (OpenPacket->Information == IO_REPARSE_TAG_MOUNT_POINT) + { + OpenPacket->RelatedFileObject = NULL; + } + } + + /* Check if we have a name */ + if (FileObject->FileName.Length) + { + /* Free it */ + ExFreePoolWithTag(FileObject->FileName.Buffer, TAG_IO_NAME); + FileObject->FileName.Length = 0; + } + + /* Clear its device object */ + FileObject->DeviceObject = NULL; + + /* Clear the file object in the open packet */ + OpenPacket->FileObject = NULL; + + /* Dereference the file object */ + if (!UseDummyFile) ObDereferenceObject(FileObject); + + /* Dereference the device object */ + IopDereferenceDeviceObject(OriginalDeviceObject, FALSE); + + /* Unless the driver cancelled the open, dereference the VPB */ + if (Vpb != NULL) IopDereferenceVpbAndFree(Vpb); + + if (OpenPacket->Information != IO_REMOUNT) + { + OpenPacket->RelatedFileObject = NULL; + + /* Inform we traversed a mount point for later attempt */ + if (OpenPacket->Information == IO_REPARSE_TAG_MOUNT_POINT) + { + OpenPacket->TraversedMountPoint = 1; + } + + /* In case we override checks, but got this on volume open, fail hard */ + if (OpenPacket->Override) + { + KeBugCheckEx(DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN, + (ULONG_PTR)OriginalDeviceObject, + (ULONG_PTR)DeviceObject, + (ULONG_PTR)CompleteName, + OpenPacket->Information); + } + + /* Return to IO/OB so that information can be upgraded */ + return STATUS_REPARSE; + } + + /* FIXME: At that point, we should loop again and reattempt an opening */ ASSERT(FALSE); } diff --git a/ntoskrnl/io/iomgr/irp.c b/ntoskrnl/io/iomgr/irp.c index 940c3e3461b..894f8f4156c 100644 --- a/ntoskrnl/io/iomgr/irp.c +++ b/ntoskrnl/io/iomgr/irp.c @@ -264,9 +264,15 @@ IopCompleteRequest(IN PKAPC Apc, if ((Irp->IoStatus.Status == STATUS_REPARSE) && (Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT)) { - /* We should never get this yet */ - UNIMPLEMENTED_DBGBREAK("Reparse support not yet present!\n"); - return; + PREPARSE_DATA_BUFFER ReparseData; + + ReparseData = (PREPARSE_DATA_BUFFER)*SystemArgument2; + + ASSERT(ReparseData->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT); + ASSERT(ReparseData->ReparseDataLength < MAXIMUM_REPARSE_DATA_BUFFER_SIZE); + ASSERT(ReparseData->Reserved < MAXIMUM_REPARSE_DATA_BUFFER_SIZE); + + IopDoNameTransmogrify(Irp, FileObject, ReparseData); } } @@ -1239,6 +1245,7 @@ IofCompleteRequest(IN PIRP Irp, PIRP MasterIrp; ULONG Flags; NTSTATUS ErrorCode = STATUS_SUCCESS; + PREPARSE_DATA_BUFFER DataBuffer; IOTRACE(IO_IRP_DEBUG, "%s - Completing IRP %p\n", __FUNCTION__, @@ -1367,8 +1374,24 @@ IofCompleteRequest(IN PIRP Irp, return; } - /* We don't support this yet */ - ASSERT(Irp->IoStatus.Status != STATUS_REPARSE); + /* Check whether we have to reparse */ + if (Irp->IoStatus.Status == STATUS_REPARSE) + { + if (Irp->IoStatus.Information > IO_REMOUNT) + { + /* If that's a reparse tag we understand, save the buffer from deletion */ + if (Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT) + { + ASSERT(Irp->Tail.Overlay.AuxiliaryBuffer != NULL); + DataBuffer = (PREPARSE_DATA_BUFFER)Irp->Tail.Overlay.AuxiliaryBuffer; + Irp->Tail.Overlay.AuxiliaryBuffer = NULL; + } + else + { + Irp->IoStatus.Status = STATUS_IO_REPARSE_TAG_NOT_HANDLED; + } + } + } /* Check if we have an auxiliary buffer */ if (Irp->Tail.Overlay.AuxiliaryBuffer) @@ -1422,13 +1445,20 @@ IofCompleteRequest(IN PIRP Irp, Mdl = Irp->MdlAddress; while (Mdl) { - MmUnlockPages(Mdl); + MmUnlockPages(Mdl); Mdl = Mdl->Next; } /* Check if we should exit because of a Deferred I/O (page 168) */ if ((Irp->Flags & IRP_DEFER_IO_COMPLETION) && !(Irp->PendingReturned)) { + /* Restore the saved reparse buffer for the caller */ + if (Irp->IoStatus.Status == STATUS_REPARSE && + Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT) + { + Irp->Tail.Overlay.AuxiliaryBuffer = (PCHAR)DataBuffer; + } + /* * Return without queuing the completion APC, since the caller will * take care of doing its own optimized completion at PASSIVE_LEVEL. @@ -1456,7 +1486,7 @@ IofCompleteRequest(IN PIRP Irp, /* Queue it */ KeInsertQueueApc(&Irp->Tail.Apc, FileObject, - NULL, /* This is used for REPARSE stuff */ + DataBuffer, PriorityBoost); } else @@ -1477,7 +1507,7 @@ IofCompleteRequest(IN PIRP Irp, /* Queue it */ KeInsertQueueApc(&Irp->Tail.Apc, FileObject, - NULL, /* This is used for REPARSE stuff */ + DataBuffer, PriorityBoost); } else diff --git a/ntoskrnl/ke/amd64/trap.S b/ntoskrnl/ke/amd64/trap.S index ca2e45a1388..38ca46e4eac 100644 --- a/ntoskrnl/ke/amd64/trap.S +++ b/ntoskrnl/ke/amd64/trap.S @@ -204,7 +204,7 @@ FUNC InternalDispatchException add rsp, EXCEPTION_RECORD_LENGTH + KEXCEPTION_FRAME_LENGTH ret -ENDFUNC InternalDispatchException +ENDFUNC /* CPU EXCEPTION HANDLERS ****************************************************/ @@ -222,7 +222,7 @@ FUNC KiDivideErrorFault /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiDivideErrorFault +ENDFUNC PUBLIC KiDebugTrapOrFault @@ -245,7 +245,7 @@ KiDebugTrapOrFaultKMode: /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiDebugTrapOrFault +ENDFUNC PUBLIC KiNmiInterrupt @@ -258,7 +258,7 @@ FUNC KiNmiInterrupt /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiNmiInterrupt +ENDFUNC PUBLIC KiBreakpointTrap @@ -279,7 +279,7 @@ KiBreakpointTrapKMode: /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiBreakpointTrap +ENDFUNC PUBLIC KiOverflowTrap @@ -295,7 +295,7 @@ FUNC KiOverflowTrap /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiOverflowTrap +ENDFUNC PUBLIC KiBoundFault @@ -319,7 +319,7 @@ KiBoundFaultUserMode: /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiBoundFault +ENDFUNC PUBLIC KiInvalidOpcodeFault @@ -350,7 +350,7 @@ KiInvalidOpcodeKernel: /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiInvalidOpcodeFault +ENDFUNC PUBLIC KiNpxNotAvailableFault @@ -372,7 +372,7 @@ FUNC KiNpxNotAvailableFault KiNpxNotAvailableFaultExit: /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiNpxNotAvailableFault +ENDFUNC PUBLIC KiDoubleFaultAbort @@ -388,7 +388,7 @@ FUNC KiDoubleFaultAbort /* Bugcheck */ Fatal 8 // EXCEPTION_DOUBLE_FAULT jmp $ -ENDFUNC KiDoubleFaultAbort +ENDFUNC PUBLIC KiNpxSegmentOverrunAbort @@ -400,7 +400,7 @@ FUNC KiNpxSegmentOverrunAbort Fatal EXCEPTION_NPX_OVERRUN jmp $ -ENDFUNC KiNpxSegmentOverrunAbort +ENDFUNC PUBLIC KiInvalidTssFault @@ -411,7 +411,7 @@ FUNC KiInvalidTssFault /* Bugcheck */ Fatal EXCEPTION_INVALID_TSS jmp $ -ENDFUNC KiInvalidTssFault +ENDFUNC PUBLIC KiSegmentNotPresentFault @@ -422,7 +422,7 @@ FUNC KiSegmentNotPresentFault /* Bugcheck */ Fatal EXCEPTION_SEGMENT_NOT_PRESENT jmp $ -ENDFUNC KiSegmentNotPresentFault +ENDFUNC PUBLIC KiStackFault @@ -433,7 +433,7 @@ FUNC KiStackFault /* Bugcheck */ Fatal EXCEPTION_STACK_FAULT jmp $ -ENDFUNC KiStackFault +ENDFUNC PUBLIC KiGeneralProtectionFault @@ -472,7 +472,7 @@ KiGpfExit: /* Return */ /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiGeneralProtectionFault +ENDFUNC PUBLIC KiPageFault @@ -560,7 +560,7 @@ FUNC KiFloatingErrorFault /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiFloatingErrorFault +ENDFUNC PUBLIC KiAlignmentFault @@ -571,7 +571,7 @@ FUNC KiAlignmentFault /* Bugcheck */ Fatal EXCEPTION_ALIGNMENT_CHECK jmp $ -ENDFUNC KiAlignmentFault +ENDFUNC PUBLIC KiMcheckAbort @@ -582,7 +582,7 @@ FUNC KiMcheckAbort /* Bugcheck */ Fatal HEX(12) jmp $ -ENDFUNC KiMcheckAbort +ENDFUNC PUBLIC KiXmmException @@ -604,7 +604,7 @@ FUNC KiXmmException KiXmmExit: /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiXmmException +ENDFUNC /* SOFTWARE INTERRUPT SERVICES ***********************************************/ @@ -622,7 +622,7 @@ FUNC KiRaiseAssertion /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiRaiseAssertion +ENDFUNC PUBLIC KiDebugServiceTrap @@ -640,7 +640,7 @@ FUNC KiDebugServiceTrap /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiDebugServiceTrap +ENDFUNC PUBLIC KiApcInterrupt @@ -746,7 +746,7 @@ FUNC KiUnexpectedInterrupt #endif /* Return */ ExitTrap TF_SAVE_ALL -ENDFUNC KiUnexpectedInterrupt +ENDFUNC PUBLIC KiInterruptDispatch FUNC KiInterruptDispatch diff --git a/win32ss/user/ntuser/msgqueue.c b/win32ss/user/ntuser/msgqueue.c index 1df07359684..9622725bee8 100644 --- a/win32ss/user/ntuser/msgqueue.c +++ b/win32ss/user/ntuser/msgqueue.c @@ -1488,7 +1488,7 @@ BOOL co_IntProcessMouseMessage(MSG* msg, BOOL* RemoveMessages, UINT first, UINT if (hittest != HTCLIENT) { message += WM_NCMOUSEMOVE - WM_MOUSEMOVE; - msg->wParam = hittest; + msg->wParam = hittest; // Caution! This might break wParam check in DblClk. } else { @@ -1522,7 +1522,8 @@ BOOL co_IntProcessMouseMessage(MSG* msg, BOOL* RemoveMessages, UINT first, UINT { if ((msg->message == clk_msg.message) && (msg->hwnd == clk_msg.hwnd) && - (msg->wParam == clk_msg.wParam) && + // Only worry about XButton wParam. + (msg->message != WM_XBUTTONDOWN || GET_XBUTTON_WPARAM(msg->wParam) == GET_XBUTTON_WPARAM(clk_msg.wParam)) && ((msg->time - clk_msg.time) < (ULONG)gspv.iDblClickTime) && (abs(msg->pt.x - clk_msg.pt.x) < UserGetSystemMetrics(SM_CXDOUBLECLK)/2) && (abs(msg->pt.y - clk_msg.pt.y) < UserGetSystemMetrics(SM_CYDOUBLECLK)/2)) diff --git a/win32ss/user/user32/misc/rtlstr.c b/win32ss/user/user32/misc/rtlstr.c index b6cb95821ea..db9d43f63f1 100644 --- a/win32ss/user/user32/misc/rtlstr.c +++ b/win32ss/user/user32/misc/rtlstr.c @@ -11,10 +11,6 @@ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(user32); - /* FUNCTIONS *****************************************************************/ VOID NTAPI diff --git a/win32ss/user/user32/windows/menu.c b/win32ss/user/user32/windows/menu.c index d9ec3149a0e..74f6fa9acc6 100644 --- a/win32ss/user/user32/windows/menu.c +++ b/win32ss/user/user32/windows/menu.c @@ -668,10 +668,10 @@ static void FASTCALL MenuLoadBitmaps(VOID) { /* Load system buttons bitmaps */ - if (NULL == BmpSysMenu) - { + if (BmpSysMenu == NULL) + { BmpSysMenu = LoadBitmapW(0, MAKEINTRESOURCEW(OBM_CLOSE)); - } + } } /////////// Make gpsi OBMI via callback ////////////// /*********************************************************************** @@ -1261,7 +1261,7 @@ MENU_GetMaxPopupHeight(PROSMENUINFO lppop) //ERR("MGMaxPH cyMax %d\n",lppop->cyMax); return lppop->cyMax; } - //ERR("MGMaxPH SyMax %d\n",GetSystemMetrics(SM_CYSCREEN) - GetSystemMetrics(SM_CYBORDER)); + //ERR("MGMaxPH SyMax %d\n",GetSystemMetrics(SM_CYSCREEN) - GetSystemMetrics(SM_CYBORDER)); return GetSystemMetrics(SM_CYSCREEN) - GetSystemMetrics(SM_CYBORDER); } @@ -2191,12 +2191,14 @@ MENU_EnsureMenuItemVisible(PROSMENUINFO lppop, PROSMENUITEMINFO item, HDC hdc) lppop->iTop = item->Rect.bottom - nMaxHeight; ScrollWindow(lppop->Wnd, 0, nOldPos - lppop->iTop, &rc, &rc); MENU_DrawScrollArrows(lppop, hdc); + //ERR("Scroll Down iTop %d iMaxTop %d nMaxHeight %d\n",lppop->iTop,lppop->iMaxTop,nMaxHeight); } else if (item->Rect.top - MENU_TOP_MARGIN < lppop->iTop) { lppop->iTop = item->Rect.top - MENU_TOP_MARGIN; ScrollWindow(lppop->Wnd, 0, nOldPos - lppop->iTop, &rc, &rc); MENU_DrawScrollArrows(lppop, hdc); + //ERR("Scroll Up iTop %d iMaxTop %d nMaxHeight %d\n",lppop->iTop,lppop->iMaxTop,nMaxHeight); } MenuSetRosMenuInfo(lppop); } @@ -3015,27 +3017,27 @@ MenuHideSubPopups(HWND WndOwner, PROSMENUINFO MenuInfo, * Helper function for menu navigation routines. */ static void FASTCALL -MenuSwitchTracking(MTRACKER* Mt, PROSMENUINFO PtMenuInfo, UINT Index, UINT wFlags) +MenuSwitchTracking(MTRACKER* pmt, PROSMENUINFO PtMenuInfo, UINT Index, UINT wFlags) { ROSMENUINFO TopMenuInfo; - TRACE("%x menu=%x 0x%04x\n", Mt, PtMenuInfo->Self, Index); + TRACE("%x menu=%x 0x%04x\n", pmt, PtMenuInfo->Self, Index); - if ( MenuGetRosMenuInfo(&TopMenuInfo, Mt->TopMenu) && - Mt->TopMenu != PtMenuInfo->Self && + if ( MenuGetRosMenuInfo(&TopMenuInfo, pmt->TopMenu) && + pmt->TopMenu != PtMenuInfo->Self && !((PtMenuInfo->fFlags | TopMenuInfo.fFlags) & MNF_POPUP) ) { /* both are top level menus (system and menu-bar) */ - MenuHideSubPopups(Mt->OwnerWnd, &TopMenuInfo, FALSE, wFlags); - MenuSelectItem(Mt->OwnerWnd, &TopMenuInfo, NO_SELECTED_ITEM, FALSE, NULL); - Mt->TopMenu = PtMenuInfo->Self; + MenuHideSubPopups(pmt->OwnerWnd, &TopMenuInfo, FALSE, wFlags); + MenuSelectItem(pmt->OwnerWnd, &TopMenuInfo, NO_SELECTED_ITEM, FALSE, NULL); + pmt->TopMenu = PtMenuInfo->Self; } else { - MenuHideSubPopups(Mt->OwnerWnd, PtMenuInfo, FALSE, wFlags); + MenuHideSubPopups(pmt->OwnerWnd, PtMenuInfo, FALSE, wFlags); } - MenuSelectItem(Mt->OwnerWnd, PtMenuInfo, Index, TRUE, NULL); + MenuSelectItem(pmt->OwnerWnd, PtMenuInfo, Index, TRUE, NULL); } /*********************************************************************** @@ -3049,12 +3051,12 @@ MenuSwitchTracking(MTRACKER* Mt, PROSMENUINFO PtMenuInfo, UINT Index, UINT wFlag * */ static INT FASTCALL -MenuExecFocusedItem(MTRACKER *Mt, PROSMENUINFO MenuInfo, UINT Flags) +MenuExecFocusedItem(MTRACKER *pmt, PROSMENUINFO MenuInfo, UINT Flags) { ROSMENUITEMINFO ItemInfo; UINT wID; - TRACE("%p menu=%p\n", Mt, MenuInfo); + TRACE("%p menu=%p\n", pmt, MenuInfo); if (0 == MenuInfo->cItems || NO_SELECTED_ITEM == MenuInfo->iItem) { @@ -3081,19 +3083,19 @@ MenuExecFocusedItem(MTRACKER *Mt, PROSMENUINFO MenuInfo, UINT Flags) { if (0 != (MenuInfo->fFlags & MNF_SYSMENU)) { - PostMessageW(Mt->OwnerWnd, WM_SYSCOMMAND, ItemInfo.wID, - MAKELPARAM((SHORT) Mt->Pt.x, (SHORT) Mt->Pt.y)); + PostMessageW(pmt->OwnerWnd, WM_SYSCOMMAND, ItemInfo.wID, + MAKELPARAM((SHORT) pmt->Pt.x, (SHORT) pmt->Pt.y)); } else { ROSMENUINFO topmenuI; - BOOL ret = MenuGetRosMenuInfo(&topmenuI, Mt->TopMenu); + BOOL ret = MenuGetRosMenuInfo(&topmenuI, pmt->TopMenu); DWORD dwStyle = MenuInfo->dwStyle | (ret ? topmenuI.dwStyle : 0); if (dwStyle & MNS_NOTIFYBYPOS) - PostMessageW(Mt->OwnerWnd, WM_MENUCOMMAND, MenuInfo->iItem, (LPARAM)MenuInfo->Self); + PostMessageW(pmt->OwnerWnd, WM_MENUCOMMAND, MenuInfo->iItem, (LPARAM)MenuInfo->Self); else - PostMessageW(Mt->OwnerWnd, WM_COMMAND, ItemInfo.wID, 0); + PostMessageW(pmt->OwnerWnd, WM_COMMAND, ItemInfo.wID, 0); } } wID = ItemInfo.wID; @@ -3103,7 +3105,7 @@ MenuExecFocusedItem(MTRACKER *Mt, PROSMENUINFO MenuInfo, UINT Flags) } else { - Mt->CurrentMenu = MenuShowSubPopup(Mt->OwnerWnd, MenuInfo, TRUE, Flags); + pmt->CurrentMenu = MenuShowSubPopup(pmt->OwnerWnd, MenuInfo, TRUE, Flags); return -2; } @@ -3116,17 +3118,17 @@ MenuExecFocusedItem(MTRACKER *Mt, PROSMENUINFO MenuInfo, UINT Flags) * Return TRUE if we can go on with menu tracking. */ static BOOL FASTCALL -MENU_ButtonDown(MTRACKER* Mt, HMENU PtMenu, UINT Flags) +MENU_ButtonDown(MTRACKER* pmt, HMENU hPtMenu, UINT Flags) { int Index; ROSMENUINFO MenuInfo; ROSMENUITEMINFO Item; - TRACE("%x PtMenu=%p\n", Mt, PtMenu); + TRACE("%x PtMenu=%p\n", pmt, hPtMenu); - if (NULL != PtMenu) + if (NULL != hPtMenu) { - if (! MenuGetRosMenuInfo(&MenuInfo, PtMenu)) + if (! MenuGetRosMenuInfo(&MenuInfo, hPtMenu)) { return FALSE; } @@ -3136,10 +3138,10 @@ MENU_ButtonDown(MTRACKER* Mt, HMENU PtMenu, UINT Flags) } else { - Index = NtUserMenuItemFromPoint(Mt->OwnerWnd, PtMenu, Mt->Pt.x, Mt->Pt.y); + Index = NtUserMenuItemFromPoint(pmt->OwnerWnd, hPtMenu, pmt->Pt.x, pmt->Pt.y); } MenuInitRosMenuItemInfo(&Item); - if (NO_SELECTED_ITEM == Index || ! MenuGetRosMenuItemInfo(PtMenu, Index, &Item)) + if (NO_SELECTED_ITEM == Index || ! MenuGetRosMenuItemInfo(hPtMenu, Index, &Item)) { MenuCleanupRosMenuItemInfo(&Item); return FALSE; @@ -3150,23 +3152,21 @@ MENU_ButtonDown(MTRACKER* Mt, HMENU PtMenu, UINT Flags) { if (MenuInfo.iItem != Index) { - MenuSwitchTracking(Mt, &MenuInfo, Index, Flags); + MenuSwitchTracking(pmt, &MenuInfo, Index, Flags); } /* If the popup menu is not already "popped" */ - if (0 == (Item.fState & MF_MOUSESELECT)) + if (!(Item.fState & MF_MOUSESELECT)) { - Mt->CurrentMenu = MenuShowSubPopup(Mt->OwnerWnd, &MenuInfo, FALSE, Flags); + pmt->CurrentMenu = MenuShowSubPopup(pmt->OwnerWnd, &MenuInfo, FALSE, Flags); } + + MenuCleanupRosMenuItemInfo(&Item); + + return TRUE; } - - MenuCleanupRosMenuItemInfo(&Item); - - return TRUE; - } - - /* else the click was on the menu bar, finish the tracking */ - + /* Else the click was on the menu bar, finish the tracking */ + } return FALSE; } @@ -3179,25 +3179,25 @@ MENU_ButtonDown(MTRACKER* Mt, HMENU PtMenu, UINT Flags) * */ static INT FASTCALL -MENU_ButtonUp(MTRACKER *Mt, HMENU PtMenu, UINT Flags) +MENU_ButtonUp(MTRACKER *pmt, HMENU hPtMenu, UINT Flags) { INT Id; ROSMENUINFO MenuInfo; ROSMENUITEMINFO ItemInfo; - TRACE("%p hmenu=%x\n", Mt, PtMenu); + TRACE("%p hmenu=%x\n", pmt, hPtMenu); - if (NULL != PtMenu) + if (hPtMenu) { Id = 0; - if (! MenuGetRosMenuInfo(&MenuInfo, PtMenu)) + if (! MenuGetRosMenuInfo(&MenuInfo, hPtMenu)) { return -1; } if (! IS_SYSTEM_MENU(&MenuInfo)) { - Id = NtUserMenuItemFromPoint(Mt->OwnerWnd, MenuInfo.Self, Mt->Pt.x, Mt->Pt.y); + Id = NtUserMenuItemFromPoint(pmt->OwnerWnd, MenuInfo.Self, pmt->Pt.x, pmt->Pt.y); } MenuInitRosMenuItemInfo(&ItemInfo); if (0 <= Id && MenuGetRosMenuItemInfo(MenuInfo.Self, Id, &ItemInfo) && @@ -3205,26 +3205,29 @@ MENU_ButtonUp(MTRACKER *Mt, HMENU PtMenu, UINT Flags) { if (0 == (ItemInfo.hSubMenu)) { - INT ExecutedMenuId = MenuExecFocusedItem(Mt, &MenuInfo, Flags); + INT ExecutedMenuId = MenuExecFocusedItem( pmt, &MenuInfo, Flags); MenuCleanupRosMenuItemInfo(&ItemInfo); - return (ExecutedMenuId < 0) ? -1 : ExecutedMenuId; + if (ExecutedMenuId == -1 || ExecutedMenuId == -2) return -1; + return ExecutedMenuId; } MenuCleanupRosMenuItemInfo(&ItemInfo); - /* If we are dealing with the top-level menu */ + /* If we are dealing with the menu bar */ /* and this is a click on an already "popped" item: */ /* Stop the menu tracking and close the opened submenus */ - if (Mt->TopMenu == MenuInfo.Self && MenuInfo.TimeToHide) + if (pmt->TopMenu == MenuInfo.Self && MenuInfo.TimeToHide) { MenuCleanupRosMenuItemInfo(&ItemInfo); return 0; } } MenuCleanupRosMenuItemInfo(&ItemInfo); - MenuInfo.TimeToHide = TRUE; - MenuSetRosMenuInfo(&MenuInfo); + if( GetMenu(MenuInfo.Wnd) == hPtMenu ) + { + MenuInfo.TimeToHide = TRUE; + MenuSetRosMenuInfo(&MenuInfo); + } } - return -1; } @@ -3277,7 +3280,7 @@ MENU_PtMenu(HMENU hMenu, POINT pt) * Return TRUE if we can go on with menu tracking. */ static BOOL FASTCALL -MenuMouseMove(MTRACKER *Mt, HMENU PtMenu, UINT Flags) +MenuMouseMove(MTRACKER *pmt, HMENU PtMenu, UINT Flags) { INT Index; ROSMENUINFO MenuInfo; @@ -3295,7 +3298,7 @@ MenuMouseMove(MTRACKER *Mt, HMENU PtMenu, UINT Flags) } else { - Index = NtUserMenuItemFromPoint(Mt->OwnerWnd, PtMenu, Mt->Pt.x, Mt->Pt.y); + Index = NtUserMenuItemFromPoint(pmt->OwnerWnd, PtMenu, pmt->Pt.x, pmt->Pt.y); } } else @@ -3305,11 +3308,11 @@ MenuMouseMove(MTRACKER *Mt, HMENU PtMenu, UINT Flags) if (NO_SELECTED_ITEM == Index) { - if (Mt->CurrentMenu == MenuInfo.Self || - MenuGetRosMenuInfo(&MenuInfo, Mt->CurrentMenu)) + if (pmt->CurrentMenu == MenuInfo.Self || + MenuGetRosMenuInfo(&MenuInfo, pmt->CurrentMenu)) { - MenuSelectItem(Mt->OwnerWnd, &MenuInfo, NO_SELECTED_ITEM, - TRUE, Mt->TopMenu); + MenuSelectItem(pmt->OwnerWnd, &MenuInfo, NO_SELECTED_ITEM, + TRUE, pmt->TopMenu); } } else if (MenuInfo.iItem != Index) @@ -3318,9 +3321,9 @@ MenuMouseMove(MTRACKER *Mt, HMENU PtMenu, UINT Flags) if (MenuGetRosMenuItemInfo(MenuInfo.Self, Index, &ItemInfo) && !(ItemInfo.fType & MF_SEPARATOR)) { - MenuSwitchTracking(Mt, &MenuInfo, Index, Flags); + MenuSwitchTracking(pmt, &MenuInfo, Index, Flags); if (!(ItemInfo.fState & (MFS_DISABLED | MFS_GRAYED))) - Mt->CurrentMenu = MenuShowSubPopup(Mt->OwnerWnd, &MenuInfo, FALSE, Flags); + pmt->CurrentMenu = MenuShowSubPopup(pmt->OwnerWnd, &MenuInfo, FALSE, Flags); } MenuCleanupRosMenuItemInfo(&ItemInfo); } @@ -3360,12 +3363,12 @@ HMENU MENU_GetSubPopup( HMENU hmenu ) * NOTE: WM_NEXTMENU documented in Win32 is a bit different. */ static LRESULT FASTCALL -MenuDoNextMenu(MTRACKER* Mt, UINT Vk, UINT wFlags) +MenuDoNextMenu(MTRACKER* pmt, UINT Vk, UINT wFlags) { ROSMENUINFO TopMenuInfo; ROSMENUINFO MenuInfo; - if (! MenuGetRosMenuInfo(&TopMenuInfo, Mt->TopMenu)) + if (! MenuGetRosMenuInfo(&TopMenuInfo, pmt->TopMenu)) { return (LRESULT) FALSE; } @@ -3378,18 +3381,18 @@ MenuDoNextMenu(MTRACKER* Mt, UINT Vk, UINT wFlags) HWND NewWnd; UINT Id = 0; - NextMenu.hmenuIn = (IS_SYSTEM_MENU(&TopMenuInfo)) ? GetSubMenu(Mt->TopMenu, 0) : Mt->TopMenu; + NextMenu.hmenuIn = (IS_SYSTEM_MENU(&TopMenuInfo)) ? GetSubMenu(pmt->TopMenu, 0) : pmt->TopMenu; NextMenu.hmenuNext = NULL; NextMenu.hwndNext = NULL; - SendMessageW(Mt->OwnerWnd, WM_NEXTMENU, Vk, (LPARAM) &NextMenu); + SendMessageW(pmt->OwnerWnd, WM_NEXTMENU, Vk, (LPARAM) &NextMenu); TRACE("%p [%p] -> %p [%p]\n", - Mt->CurrentMenu, Mt->OwnerWnd, NextMenu.hmenuNext, NextMenu.hwndNext ); + pmt->CurrentMenu, pmt->OwnerWnd, NextMenu.hmenuNext, NextMenu.hwndNext ); if (NULL == NextMenu.hmenuNext || NULL == NextMenu.hwndNext) { - DWORD Style = GetWindowLongPtrW(Mt->OwnerWnd, GWL_STYLE); - NewWnd = Mt->OwnerWnd; + DWORD Style = GetWindowLongPtrW(pmt->OwnerWnd, GWL_STYLE); + NewWnd = pmt->OwnerWnd; if (IS_SYSTEM_MENU(&TopMenuInfo)) { /* switch to the menu bar */ @@ -3449,27 +3452,27 @@ MenuDoNextMenu(MTRACKER* Mt, UINT Vk, UINT wFlags) } } - if (NewMenu != Mt->TopMenu) + if (NewMenu != pmt->TopMenu) { - MenuSelectItem(Mt->OwnerWnd, &TopMenuInfo, NO_SELECTED_ITEM, + MenuSelectItem(pmt->OwnerWnd, &TopMenuInfo, NO_SELECTED_ITEM, FALSE, 0 ); - if (Mt->CurrentMenu != Mt->TopMenu) + if (pmt->CurrentMenu != pmt->TopMenu) { - MenuHideSubPopups(Mt->OwnerWnd, &TopMenuInfo, FALSE, wFlags); + MenuHideSubPopups(pmt->OwnerWnd, &TopMenuInfo, FALSE, wFlags); } } - if (NewWnd != Mt->OwnerWnd) + if (NewWnd != pmt->OwnerWnd) { - Mt->OwnerWnd = NewWnd; - NtUserxSetGUIThreadHandle(MSQ_STATE_MENUOWNER, Mt->OwnerWnd); // 1 - SetCapture(Mt->OwnerWnd); // 2 + pmt->OwnerWnd = NewWnd; + NtUserxSetGUIThreadHandle(MSQ_STATE_MENUOWNER, pmt->OwnerWnd); // 1 + SetCapture(pmt->OwnerWnd); // 2 } - Mt->TopMenu = Mt->CurrentMenu = NewMenu; /* all subpopups are hidden */ - if (MenuGetRosMenuInfo(&TopMenuInfo, Mt->TopMenu)) + pmt->TopMenu = pmt->CurrentMenu = NewMenu; /* all subpopups are hidden */ + if (MenuGetRosMenuInfo(&TopMenuInfo, pmt->TopMenu)) { - MenuSelectItem(Mt->OwnerWnd, &TopMenuInfo, Id, TRUE, 0); + MenuSelectItem(pmt->OwnerWnd, &TopMenuInfo, Id, TRUE, 0); } return TRUE; @@ -3485,14 +3488,14 @@ MenuDoNextMenu(MTRACKER* Mt, UINT Vk, UINT wFlags) * going to hide it anyway. */ static BOOL FASTCALL -MenuSuspendPopup(MTRACKER* Mt, UINT uMsg) +MenuSuspendPopup(MTRACKER* pmt, UINT uMsg) { MSG msg; - msg.hwnd = Mt->OwnerWnd; + msg.hwnd = pmt->OwnerWnd; PeekMessageW( &msg, 0, uMsg, uMsg, PM_NOYIELD | PM_REMOVE); // ported incorrectly since 8317 GvG - //Mt->TrackFlags |= TF_SKIPREMOVE; // This sends TrackMenu into a loop with arrow keys!!!! + //pmt->TrackFlags |= TF_SKIPREMOVE; // This sends TrackMenu into a loop with arrow keys!!!! switch( uMsg ) { @@ -3505,14 +3508,14 @@ MenuSuspendPopup(MTRACKER* Mt, UINT uMsg) if( msg.message == WM_KEYDOWN && (msg.wParam == VK_LEFT || msg.wParam == VK_RIGHT)) { - Mt->TrackFlags |= TF_SUSPENDPOPUP; + pmt->TrackFlags |= TF_SUSPENDPOPUP; return TRUE; } } break; } /* failures go through this */ - Mt->TrackFlags &= ~TF_SUSPENDPOPUP; + pmt->TrackFlags &= ~TF_SUSPENDPOPUP; return FALSE; } @@ -3522,21 +3525,21 @@ MenuSuspendPopup(MTRACKER* Mt, UINT uMsg) * Handle a VK_ESCAPE key event in a menu. */ static BOOL FASTCALL -MenuKeyEscape(MTRACKER *Mt, UINT Flags) +MenuKeyEscape(MTRACKER *pmt, UINT Flags) { BOOL EndMenu = TRUE; ROSMENUINFO MenuInfo; HMENU MenuTmp, MenuPrev; - if (Mt->CurrentMenu != Mt->TopMenu) + if (pmt->CurrentMenu != pmt->TopMenu) { - if (MenuGetRosMenuInfo(&MenuInfo, Mt->CurrentMenu) + if (MenuGetRosMenuInfo(&MenuInfo, pmt->CurrentMenu) && 0 != (MenuInfo.fFlags & MNF_POPUP)) { - MenuPrev = MenuTmp = Mt->TopMenu; + MenuPrev = MenuTmp = pmt->TopMenu; /* close topmost popup */ - while (MenuTmp != Mt->CurrentMenu) + while (MenuTmp != pmt->CurrentMenu) { MenuPrev = MenuTmp; MenuTmp = MENU_GetSubPopup(MenuPrev); @@ -3544,9 +3547,9 @@ MenuKeyEscape(MTRACKER *Mt, UINT Flags) if (MenuGetRosMenuInfo(&MenuInfo, MenuPrev)) { - MenuHideSubPopups(Mt->OwnerWnd, &MenuInfo, TRUE, Flags); + MenuHideSubPopups(pmt->OwnerWnd, &MenuInfo, TRUE, Flags); } - Mt->CurrentMenu = MenuPrev; + pmt->CurrentMenu = MenuPrev; EndMenu = FALSE; } } @@ -3560,7 +3563,7 @@ MenuKeyEscape(MTRACKER *Mt, UINT Flags) * Handle a VK_LEFT key event in a menu. */ static void FASTCALL -MenuKeyLeft(MTRACKER* Mt, UINT Flags) +MenuKeyLeft(MTRACKER* pmt, UINT Flags) { ROSMENUINFO MenuInfo; ROSMENUINFO TopMenuInfo; @@ -3568,20 +3571,20 @@ MenuKeyLeft(MTRACKER* Mt, UINT Flags) HMENU MenuTmp, MenuPrev; UINT PrevCol; - MenuPrev = MenuTmp = Mt->TopMenu; + MenuPrev = MenuTmp = pmt->TopMenu; /* Try to move 1 column left (if possible) */ - if ( (PrevCol = MENU_GetStartOfPrevColumn(Mt->CurrentMenu)) != NO_SELECTED_ITEM) + if ( (PrevCol = MENU_GetStartOfPrevColumn(pmt->CurrentMenu)) != NO_SELECTED_ITEM) { - if (MenuGetRosMenuInfo(&MenuInfo, Mt->CurrentMenu)) + if (MenuGetRosMenuInfo(&MenuInfo, pmt->CurrentMenu)) { - MenuSelectItem(Mt->OwnerWnd, &MenuInfo, PrevCol, TRUE, 0); + MenuSelectItem(pmt->OwnerWnd, &MenuInfo, PrevCol, TRUE, 0); } return; } /* close topmost popup */ - while (MenuTmp != Mt->CurrentMenu) + while (MenuTmp != pmt->CurrentMenu) { MenuPrev = MenuTmp; MenuTmp = MENU_GetSubPopup(MenuPrev); @@ -3591,31 +3594,31 @@ MenuKeyLeft(MTRACKER* Mt, UINT Flags) { return; } - MenuHideSubPopups(Mt->OwnerWnd, &PrevMenuInfo, TRUE, Flags); - Mt->CurrentMenu = MenuPrev; + MenuHideSubPopups(pmt->OwnerWnd, &PrevMenuInfo, TRUE, Flags); + pmt->CurrentMenu = MenuPrev; - if (! MenuGetRosMenuInfo(&TopMenuInfo, Mt->TopMenu)) + if (! MenuGetRosMenuInfo(&TopMenuInfo, pmt->TopMenu)) { return; } - if ((MenuPrev == Mt->TopMenu) && !(TopMenuInfo.fFlags & MNF_POPUP)) + if ((MenuPrev == pmt->TopMenu) && !(TopMenuInfo.fFlags & MNF_POPUP)) { /* move menu bar selection if no more popups are left */ - if (!MenuDoNextMenu(Mt, VK_LEFT, Flags)) + if (!MenuDoNextMenu(pmt, VK_LEFT, Flags)) { - MenuMoveSelection(Mt->OwnerWnd, &TopMenuInfo, ITEM_PREV); + MenuMoveSelection(pmt->OwnerWnd, &TopMenuInfo, ITEM_PREV); } - if (MenuPrev != MenuTmp || Mt->TrackFlags & TF_SUSPENDPOPUP) + if (MenuPrev != MenuTmp || pmt->TrackFlags & TF_SUSPENDPOPUP) { /* A sublevel menu was displayed - display the next one * unless there is another displacement coming up */ - if (! MenuSuspendPopup(Mt, WM_KEYDOWN) - && MenuGetRosMenuInfo(&TopMenuInfo, Mt->TopMenu)) + if (! MenuSuspendPopup(pmt, WM_KEYDOWN) + && MenuGetRosMenuInfo(&TopMenuInfo, pmt->TopMenu)) { - Mt->CurrentMenu = MenuShowSubPopup(Mt->OwnerWnd, &TopMenuInfo, + pmt->CurrentMenu = MenuShowSubPopup(pmt->OwnerWnd, &TopMenuInfo, TRUE, Flags); } } @@ -3627,7 +3630,7 @@ MenuKeyLeft(MTRACKER* Mt, UINT Flags) * * Handle a VK_RIGHT key event in a menu. */ -static void FASTCALL MenuKeyRight(MTRACKER *Mt, UINT Flags) +static void FASTCALL MenuKeyRight(MTRACKER *pmt, UINT Flags) { HMENU hmenutmp; ROSMENUINFO MenuInfo; @@ -3635,40 +3638,40 @@ static void FASTCALL MenuKeyRight(MTRACKER *Mt, UINT Flags) UINT NextCol; TRACE("MenuKeyRight called, cur %p, top %p.\n", - Mt->CurrentMenu, Mt->TopMenu); + pmt->CurrentMenu, pmt->TopMenu); - if (! MenuGetRosMenuInfo(&MenuInfo, Mt->TopMenu)) return; - if ((MenuInfo.fFlags & MNF_POPUP) || (Mt->CurrentMenu != Mt->TopMenu)) + if (! MenuGetRosMenuInfo(&MenuInfo, pmt->TopMenu)) return; + if ((MenuInfo.fFlags & MNF_POPUP) || (pmt->CurrentMenu != pmt->TopMenu)) { /* If already displaying a popup, try to display sub-popup */ - hmenutmp = Mt->CurrentMenu; - if (MenuGetRosMenuInfo(&CurrentMenuInfo, Mt->CurrentMenu)) + hmenutmp = pmt->CurrentMenu; + if (MenuGetRosMenuInfo(&CurrentMenuInfo, pmt->CurrentMenu)) { - Mt->CurrentMenu = MenuShowSubPopup(Mt->OwnerWnd, &CurrentMenuInfo, TRUE, Flags); + pmt->CurrentMenu = MenuShowSubPopup(pmt->OwnerWnd, &CurrentMenuInfo, TRUE, Flags); } /* if subpopup was displayed then we are done */ - if (hmenutmp != Mt->CurrentMenu) return; + if (hmenutmp != pmt->CurrentMenu) return; } /* Check to see if there's another column */ - if ( (NextCol = MENU_GetStartOfNextColumn(Mt->CurrentMenu)) != NO_SELECTED_ITEM) + if ( (NextCol = MENU_GetStartOfNextColumn(pmt->CurrentMenu)) != NO_SELECTED_ITEM) { TRACE("Going to %d.\n", NextCol); - if (MenuGetRosMenuInfo(&MenuInfo, Mt->CurrentMenu)) + if (MenuGetRosMenuInfo(&MenuInfo, pmt->CurrentMenu)) { - MenuSelectItem(Mt->OwnerWnd, &MenuInfo, NextCol, TRUE, 0); + MenuSelectItem(pmt->OwnerWnd, &MenuInfo, NextCol, TRUE, 0); } return; } if (!(MenuInfo.fFlags & MNF_POPUP)) /* menu bar tracking */ { - if (Mt->CurrentMenu != Mt->TopMenu) + if (pmt->CurrentMenu != pmt->TopMenu) { - MenuHideSubPopups(Mt->OwnerWnd, &MenuInfo, FALSE, Flags); - hmenutmp = Mt->CurrentMenu = Mt->TopMenu; + MenuHideSubPopups(pmt->OwnerWnd, &MenuInfo, FALSE, Flags); + hmenutmp = pmt->CurrentMenu = pmt->TopMenu; } else { @@ -3676,15 +3679,15 @@ static void FASTCALL MenuKeyRight(MTRACKER *Mt, UINT Flags) } /* try to move to the next item */ - if ( !MenuDoNextMenu(Mt, VK_RIGHT, Flags)) - MenuMoveSelection(Mt->OwnerWnd, &MenuInfo, ITEM_NEXT); + if ( !MenuDoNextMenu(pmt, VK_RIGHT, Flags)) + MenuMoveSelection(pmt->OwnerWnd, &MenuInfo, ITEM_NEXT); - if ( hmenutmp || Mt->TrackFlags & TF_SUSPENDPOPUP ) + if ( hmenutmp || pmt->TrackFlags & TF_SUSPENDPOPUP ) { - if (! MenuSuspendPopup(Mt, WM_KEYDOWN) - && MenuGetRosMenuInfo(&MenuInfo, Mt->TopMenu)) + if (! MenuSuspendPopup(pmt, WM_KEYDOWN) + && MenuGetRosMenuInfo(&MenuInfo, pmt->TopMenu)) { - Mt->CurrentMenu = MenuShowSubPopup(Mt->OwnerWnd, &MenuInfo, + pmt->CurrentMenu = MenuShowSubPopup(pmt->OwnerWnd, &MenuInfo, TRUE, Flags); } } @@ -3830,6 +3833,7 @@ static INT FASTCALL MenuTrackMenu(HMENU hmenu, UINT wFlags, INT x, INT y, /* Else, end menu tracking */ fRemove = MENU_ButtonDown(&mt, hmenu, wFlags); fEndMenu = !fRemove; + if (msg.message == WM_LBUTTONDBLCLK) fEndMenu = TRUE; // Must exit or loop forever! break; case WM_RBUTTONUP: @@ -4050,13 +4054,15 @@ static BOOL FASTCALL MenuInitTracking(HWND hWnd, HMENU hMenu, BOOL bPopup, UINT TRACE("hwnd=%p hmenu=%p\n", hWnd, hMenu); + if (!MenuGetRosMenuInfo(&MenuInfo, hMenu)) return FALSE; + HideCaret(0); /* This makes the menus of applications built with Delphi work. * It also enables menus to be displayed in more than one window, * but there are some bugs left that need to be fixed in this case. */ - if (!bPopup && (MenuGetRosMenuInfo(&MenuInfo, hMenu))) + if (!bPopup) { MenuInfo.Wnd = hWnd; MenuSetRosMenuInfo(&MenuInfo); @@ -4393,6 +4399,12 @@ static BOOL MENU_NormalizeMenuItemInfoStruct( const MENUITEMINFOW *pmii_in, to normal items */ pmii_out->fState = pmii_in->fState & MENUITEMINFO_STATE_MASK; + if (pmii_out->fMask & MIIM_SUBMENU) + { + if ((pmii_out->hSubMenu != NULL) && !IsMenu(pmii_out->hSubMenu)) + return FALSE; + } + return TRUE; }