From 2805f84806188c6fed84b0015c9b8a2a89189167 Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Sat, 6 Dec 2014 11:33:31 +0000 Subject: [PATCH 01/77] [SHUTDOWN] Remove useless check. svn path=/trunk/; revision=65571 --- reactos/base/applications/shutdown/shutdown.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/shutdown/shutdown.c b/reactos/base/applications/shutdown/shutdown.c index b162d7a78ea..58e3dec2576 100644 --- a/reactos/base/applications/shutdown/shutdown.c +++ b/reactos/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; From d833e6777ce2085ef8e6b522f06e90763ace8a82 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sat, 6 Dec 2014 13:08:48 +0000 Subject: [PATCH 02/77] [OSK] - Add german resource file. - Convert all others to UTF-8. - Add manifest file and modify DOIALOG to DIALOGEX + changing default font to MS Shell Dlg. Hello themed keyboard ^^ TBD: Sizes are WAY too small IMO... svn path=/trunk/; revision=65572 --- reactos/base/applications/osk/lang/ar-DZ.rc | 4 +- reactos/base/applications/osk/lang/de-DE.rc | 128 ++++++++++++++++++++ reactos/base/applications/osk/lang/en-GB.rc | 4 +- reactos/base/applications/osk/lang/en-US.rc | 4 +- reactos/base/applications/osk/lang/es-ES.rc | 4 +- reactos/base/applications/osk/lang/fr-CA.rc | 4 +- reactos/base/applications/osk/lang/fr-FR.rc | 4 +- reactos/base/applications/osk/lang/it-IT.rc | 14 +-- reactos/base/applications/osk/lang/pl-PL.rc | 4 +- reactos/base/applications/osk/lang/ru-RU.rc | 4 +- reactos/base/applications/osk/rsrc.rc | 4 + 11 files changed, 155 insertions(+), 23 deletions(-) create mode 100644 reactos/base/applications/osk/lang/de-DE.rc diff --git a/reactos/base/applications/osk/lang/ar-DZ.rc b/reactos/base/applications/osk/lang/ar-DZ.rc index f02779903eb..f6bee193dc8 100644 --- a/reactos/base/applications/osk/lang/ar-DZ.rc +++ b/reactos/base/applications/osk/lang/ar-DZ.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_ARABIC, SUBLANG_DEFAULT -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "On screen keyboard" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "Esc",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/de-DE.rc b/reactos/base/applications/osk/lang/de-DE.rc new file mode 100644 index 00000000000..9f2a49ed630 --- /dev/null +++ b/reactos/base/applications/osk/lang/de-DE.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 (German resources). + * PROGRAMMERS: Denis ROBERT + */ + +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 + PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 + PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 + PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 + PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 + PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 + PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 + PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 + PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 + PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 + PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 + PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 + PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 + PUSHBUTTON "Druck",SCAN_CODE_124,273,3,14,13 + PUSHBUTTON "Rollen",SCAN_CODE_125,291,3,14,13 + PUSHBUTTON "Pause",SCAN_CODE_126,309,3,14,13 + PUSHBUTTON "^",SCAN_CODE_1,3,26,14,13 + PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 + PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 + PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 + PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 + PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 + PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 + PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 + PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 + PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 + PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 + PUSHBUTTON "ß",SCAN_CODE_12,199,26,14,13 + PUSHBUTTON "´",SCAN_CODE_13,216,26,14,13 + PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON + PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON + PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 + PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 + PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 + PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 + PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 + PUSHBUTTON "Z",SCAN_CODE_22,117,43,14,13 + PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 + PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 + PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 + PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 + PUSHBUTTON "Ü",SCAN_CODE_27,206,43,14,13 + PUSHBUTTON "+",SCAN_CODE_28,224,43,14,13 + PUSHBUTTON "#",SCAN_CODE_29,242,43,20,13 + PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,60,28,13,BS_ICON + PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 + PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 + PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 + PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 + PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 + PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 + PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 + PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 + PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 + PUSHBUTTON "Ö",SCAN_CODE_40,195,60,14,13 + PUSHBUTTON "Ä",SCAN_CODE_41,213,60,14,13 + PUSHBUTTON "Ret",SCAN_CODE_43,231,60,31,13,BS_ICON + PUSHBUTTON "Shift",SCAN_CODE_44,3,77,35,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Y",SCAN_CODE_46,42,77,14,13 + PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 + PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 + PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 + PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 + PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 + PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 + PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 + PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 + PUSHBUTTON "-",SCAN_CODE_55,202,77,14,13 + PUSHBUTTON "Shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Strg",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON + PUSHBUTTON "Alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 + PUSHBUTTON "Alt Gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON + PUSHBUTTON "Menü",SCAN_CODE_129,220,94,18,13,BS_ICON + PUSHBUTTON "Strg",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "Einfg",SCAN_CODE_75,273,26,14,13 + PUSHBUTTON "Entf",SCAN_CODE_76,273,43,14,13 + PUSHBUTTON "Pos1",SCAN_CODE_80,291,26,14,13,BS_ICON + PUSHBUTTON "Ende",SCAN_CODE_81,291,43,14,13 + PUSHBUTTON "pg auf",SCAN_CODE_85,309,26,14,13,BS_ICON + PUSHBUTTON "pg ab",SCAN_CODE_86,309,43,14,13,BS_ICON + PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON + PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON + PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON + PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON + PUSHBUTTON "Num",SCAN_CODE_90,334,26,14,13 + PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 + PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 + PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 + PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 + PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 + PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 + PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 + PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 + PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 + PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 + PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 + PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 + PUSHBUTTON ",",SCAN_CODE_104,369,94,14,13 + PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 + PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 + PUSHBUTTON "Ent",SCAN_CODE_108,387,77,14,30 + CTEXT "Num",IDC_STATIC,334,4,18,8 + CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 + CTEXT "Caps",IDC_STATIC,359,4,18,8 + CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 + CTEXT "Rollen",IDC_STATIC,384,4,18,8 + CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 +END + +/* EOF */ diff --git a/reactos/base/applications/osk/lang/en-GB.rc b/reactos/base/applications/osk/lang/en-GB.rc index 4bd3c5d8c18..bf8b4f4c1bf 100644 --- a/reactos/base/applications/osk/lang/en-GB.rc +++ b/reactos/base/applications/osk/lang/en-GB.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Clavier visuel" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "Ech",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/en-US.rc b/reactos/base/applications/osk/lang/en-US.rc index 7c5a95c0598..118786a5470 100644 --- a/reactos/base/applications/osk/lang/en-US.rc +++ b/reactos/base/applications/osk/lang/en-US.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "On screen keyboard" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "Esc",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/es-ES.rc b/reactos/base/applications/osk/lang/es-ES.rc index a2d6fcf6ab6..4194edc3763 100644 --- a/reactos/base/applications/osk/lang/es-ES.rc +++ b/reactos/base/applications/osk/lang/es-ES.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Teclado visual" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "ech",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/fr-CA.rc b/reactos/base/applications/osk/lang/fr-CA.rc index d3f17622e54..4c58257fc2e 100644 --- a/reactos/base/applications/osk/lang/fr-CA.rc +++ b/reactos/base/applications/osk/lang/fr-CA.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_CANADIAN -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Clavier visuel" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "ech",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/fr-FR.rc b/reactos/base/applications/osk/lang/fr-FR.rc index ca6832a44d7..dc53536f40e 100644 --- a/reactos/base/applications/osk/lang/fr-FR.rc +++ b/reactos/base/applications/osk/lang/fr-FR.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Clavier visuel" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "ech",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/it-IT.rc b/reactos/base/applications/osk/lang/it-IT.rc index 5755e6c40e9..e5b3b3b0c61 100644 --- a/reactos/base/applications/osk/lang/it-IT.rc +++ b/reactos/base/applications/osk/lang/it-IT.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Tastiera visivo" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "Esc",SCAN_CODE_110,3,3,14,13 @@ -39,7 +39,7 @@ BEGIN PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 + PUSHBUTTON "0 ",SCAN_CODE_11,181,26,14,13 PUSHBUTTON "'",SCAN_CODE_12,199,26,14,13 PUSHBUTTON "|",SCAN_CODE_13,216,26,14,13 PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON @@ -54,7 +54,7 @@ BEGIN PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "è",SCAN_CODE_27,206,43,14,13 + PUSHBUTTON "è",SCAN_CODE_27,206,43,14,13 PUSHBUTTON "+",SCAN_CODE_28,224,43,14,13 PUSHBUTTON "Verr maj",SCAN_CODE_30,3,60,28,13,BS_ICON PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 @@ -66,9 +66,9 @@ BEGIN PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "ò",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "à",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ù",SCAN_CODE_42,231,60,14,13 + PUSHBUTTON "ò",SCAN_CODE_40,195,60,14,13 + PUSHBUTTON "à",SCAN_CODE_41,213,60,14,13 + PUSHBUTTON "ù",SCAN_CODE_42,231,60,14,13 PUSHBUTTON "ret",SCAN_CODE_43,248,43,14,30,BS_ICON PUSHBUTTON "Shift",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX PUSHBUTTON "<",SCAN_CODE_45,24,77,14,13 diff --git a/reactos/base/applications/osk/lang/pl-PL.rc b/reactos/base/applications/osk/lang/pl-PL.rc index df540bd71b1..f7bf85f1fd3 100644 --- a/reactos/base/applications/osk/lang/pl-PL.rc +++ b/reactos/base/applications/osk/lang/pl-PL.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Klawiatura Ekranowa" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "Esc",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/lang/ru-RU.rc b/reactos/base/applications/osk/lang/ru-RU.rc index bf108fc70b2..fd270ebc10a 100644 --- a/reactos/base/applications/osk/lang/ru-RU.rc +++ b/reactos/base/applications/osk/lang/ru-RU.rc @@ -8,9 +8,9 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 404, 108 +MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 CAPTION "Клавиатура визуальный" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg" EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE BEGIN PUSHBUTTON "Esc",SCAN_CODE_110,3,3,14,13 diff --git a/reactos/base/applications/osk/rsrc.rc b/reactos/base/applications/osk/rsrc.rc index 14daffcd7e6..6cd47be5c26 100644 --- a/reactos/base/applications/osk/rsrc.rc +++ b/reactos/base/applications/osk/rsrc.rc @@ -39,12 +39,16 @@ 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 From b0d6a110ef0bb45fe9e82796d09c178a4c112485 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sat, 6 Dec 2014 13:25:50 +0000 Subject: [PATCH 03/77] [OSK] - Forgot to translate some hidden text ^^ - Add a less brownish ROS icon based on our favicon file. svn path=/trunk/; revision=65573 --- reactos/base/applications/osk/lang/de-DE.rc | 4 ++-- reactos/base/applications/osk/res/reactos.ico | Bin 1406 -> 2862 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/base/applications/osk/lang/de-DE.rc b/reactos/base/applications/osk/lang/de-DE.rc index 9f2a49ed630..cb17e4d7145 100644 --- a/reactos/base/applications/osk/lang/de-DE.rc +++ b/reactos/base/applications/osk/lang/de-DE.rc @@ -94,8 +94,8 @@ BEGIN PUSHBUTTON "Entf",SCAN_CODE_76,273,43,14,13 PUSHBUTTON "Pos1",SCAN_CODE_80,291,26,14,13,BS_ICON PUSHBUTTON "Ende",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg auf",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg ab",SCAN_CODE_86,309,43,14,13,BS_ICON + PUSHBUTTON "Bild auf",SCAN_CODE_85,309,26,14,13,BS_ICON + PUSHBUTTON "Bild ab",SCAN_CODE_86,309,43,14,13,BS_ICON PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON diff --git a/reactos/base/applications/osk/res/reactos.ico b/reactos/base/applications/osk/res/reactos.ico index 8e62bf02e77f6130268dca9ff2b7023842a3eda5..24b3225f370a8318451d86799ad993ff962c5436 100644 GIT binary patch literal 2862 zcmeH}dr(wm7>9rBBI2FpqG?)Ccq>$35imsrxos@CyIcej-6|St5p0DkFxIT4*Ag*YT2?48?fAq?3QV{SIp7j4_k_(KO@PdHDAI&i8%i?0Y!h z^8zZUVQ&w%cF67w_yCOU8QWl}3iyb9_s_c^+XmQc3k+4p5Er7%>*#3OU5%fP)#CD* zYMf~-Lt|YT>TB0x*R~D#V(q*5yrLLeYgS|1=GC}xq7HYiox+`~Cvl_o8(coM9<2w9 z@x%69tbgB%b!GFgFf#}%teI%uQ;FM`4&&b4EBNi#Hr#Ie9xaEKMti-Kf8gcj9X|y(%;KWx3SknSfT9}CK)hke(?uTuw3vu;AJ=%_zqh(_ARgJ*eok{qyAszdxQ&F1Zj!&1yp?2LeY$=b$hqL{7eJ#GO2*c58 zZyc!dLe0to%#ZiN()<`SZe4<=?ep>7mzIvw{Pf(@4E+By5au-0Im~E^{^OUpB3$=s zgg!EA$iyKArPn)XLa=tMHY5~beUy0gD`Up`j|&(d2uCG^rx6zJ*@4M$b5lY^t$!&9RP)VON-;8YG8sM?o$+|4}9k<$MAJh?pX z677B7-rk)^SK>hWlYYdB^ddb-H)2OR6C0w8S3PKz?@C`Eq8vsNPbQEt#FzLG58_6Y z^_@uH2j7+0CVfg&WO8hHS$wo^1LJb?F6|yTlBw!=s^+Y{A%{bLM zE4A4e89bN%5&B2yAEAGQ{t@~|l1={i=trT0WMS$!p@)QXmHSn4VV9E@{n|21>}7gQ z=ry6&gnktIPu@!M6*^9qy%8X~(14bdxUjS4#IWm}mq?Txc1ugtC(xThZwkFBD++>y z-V}OM=uM$Fh2E4%UC@=R$q{X_hR|u8r{uK@>6@Eju+qyyFH6xBt<*dPX8ln4z?iadW=zf_J>3=UG zJn#(Xd_pqGz?>xAzC~F8tWHf{UWSig!K#Wp;~@E^p0HEGgFERba$A)$~3+A zO>?sT7U%CMoMzZ;%};KcZBA;Klb2l2dP!I>J$n6v#lm_?3eEASW@nj>&77(`xi~9W zd46+A=jrLDB(}=`yW_MJV|Z0X(E-+Ha_RI&VSOg$B^gIjC+kyq-Yp|(qW<*^!^(o} u*b2tOiSqpait;|#66L+=NqRqMl~{RJ%6p`sjOn;g{M)zozd!MCfBGHU1bq4c literal 1406 zcmeH{TTGlq6vuzWh&F9(Luy4$)!s-`T5Ao)CD;~?HlHRKDqn(yVrvjTgl=dtyU4Cf z7s>+evhJ?#x0eBy+p-rZmqsXp2{G2Rtd~Rxg<2D%Ha6ANXd7di*rX2e#h1SL;)`eU zo1F8X%$zfmlYulj)~rF!cT;&MtOK@6q{JhVW&L)xb5jPn*_q_+$YkG>8+bl<69v0B zQ}EOl3io7D_;fZeJ+qzC7aphVMFX!D=188Pq9~85;yfyg_fS)k$B_ejdA+PqvL9>3 zKI+O9sw&E;sVt?o<_)a1L_Ahvx|MkFINZ90v+V@! zl6Tr#a5|m1TuwZ07aorXZ~F=S-c};MM#8>Uy8RB`_qhrA-3a|%yk0LppAWy^kFM(k z13G~~fM764mk1CFg$Rek2oaJ9IyyS&>hhp`js84kZ~G8DVsElvBfT#zu#kK0U(N*cg+iKVV{Ff)6LhnVBAEYHEtJAH_+1 zGRc{br}^^i6m#b$SeTt)adw=qQZp=kKEoHEog+0nODdJ(oB1=$&&{!Tex9YJB`z$T z=i-G$zP-4>rKL}~^268sboqOJzVaj2u6`%E#I;{8bN#og{C@pcZru2Tn>YWwUHkp7 z|Hm&NG(}TY*~LOtr7MhzQOz|Nw%`9yiK@y#G0P=O(bnDfWl6`VYN{}K-Kw$Z(4#xw z6mp9qn%gyFYx|DO&AWu6Xxd}8S2b5S*sy;6mS;6h7_tpUS2z^Z9o1O}pOZ(d%|GOO z&)wXnTg?v|g|I%bc30Wq{EaytJwN{~A(V$#uexXDin})28{aNaWLbF`_pZAmEqz8lS2(JF&nvr$zm^Hr@#)yy)VD3L|VJVvGX R?|Vw=A11$w Date: Sat, 6 Dec 2014 13:43:55 +0000 Subject: [PATCH 04/77] Rule #1 of today: If you steal from resources... then at least steal from the most fitting one in layout matters... [OSK] Fix german layout by moving the "#" button where it should be and adding the "<" button next to "Y" svn path=/trunk/; revision=65574 --- reactos/base/applications/osk/lang/de-DE.rc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/reactos/base/applications/osk/lang/de-DE.rc b/reactos/base/applications/osk/lang/de-DE.rc index cb17e4d7145..2e1ab3718a6 100644 --- a/reactos/base/applications/osk/lang/de-DE.rc +++ b/reactos/base/applications/osk/lang/de-DE.rc @@ -56,7 +56,6 @@ BEGIN PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 PUSHBUTTON "Ü",SCAN_CODE_27,206,43,14,13 PUSHBUTTON "+",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "#",SCAN_CODE_29,242,43,20,13 PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,60,28,13,BS_ICON PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 @@ -69,8 +68,10 @@ BEGIN PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 PUSHBUTTON "Ö",SCAN_CODE_40,195,60,14,13 PUSHBUTTON "Ä",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "Ret",SCAN_CODE_43,231,60,31,13,BS_ICON - PUSHBUTTON "Shift",SCAN_CODE_44,3,77,35,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "#",SCAN_CODE_42,231,60,14,13 + PUSHBUTTON "Ent",SCAN_CODE_43,248,43,14,30,BS_ICON + PUSHBUTTON "Shift",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + PUSHBUTTON "<",SCAN_CODE_45,24,77,14,13 PUSHBUTTON "Y",SCAN_CODE_46,42,77,14,13 PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 From 132efe4c54d081d191c9b75c832474a44fe32ddf Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sat, 6 Dec 2014 19:47:03 +0000 Subject: [PATCH 05/77] [OSK] Update keyboard layout to become bigger, text fitting in the buttons and bein easier to use Part 1/2 svn path=/trunk/; revision=65575 --- reactos/base/applications/osk/lang/de-DE.rc | 226 ++++++++++---------- reactos/base/applications/osk/lang/en-GB.rc | 226 ++++++++++---------- reactos/base/applications/osk/lang/es-ES.rc | 224 +++++++++---------- reactos/base/applications/osk/lang/fr-CA.rc | 224 +++++++++---------- reactos/base/applications/osk/lang/fr-FR.rc | 224 +++++++++---------- reactos/base/applications/osk/lang/it-IT.rc | 224 +++++++++---------- 6 files changed, 674 insertions(+), 674 deletions(-) diff --git a/reactos/base/applications/osk/lang/de-DE.rc b/reactos/base/applications/osk/lang/de-DE.rc index 2e1ab3718a6..20c4f6c8f2f 100644 --- a/reactos/base/applications/osk/lang/de-DE.rc +++ b/reactos/base/applications/osk/lang/de-DE.rc @@ -1,129 +1,129 @@ /* * PROJECT: ReactOS Kernel * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/applications/osk/lang/en-US.rc + * 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, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Druck",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Rollen",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Pause",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "^",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "ß",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "´",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Z",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "Ü",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "+",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "Ö",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "Ä",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "#",SCAN_CODE_42,231,60,14,13 - PUSHBUTTON "Ent",SCAN_CODE_43,248,43,14,30,BS_ICON - PUSHBUTTON "Shift",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "<",SCAN_CODE_45,24,77,14,13 - PUSHBUTTON "Y",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "-",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "Shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "Strg",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "Alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "Alt Gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "Menü",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "Strg",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "Einfg",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "Entf",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "Pos1",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "Ende",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "Bild auf",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "Bild ab",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "Num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ",",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "Ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Rollen",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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,46,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 "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 "Ent",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 "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 "Shift",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/reactos/base/applications/osk/lang/en-GB.rc b/reactos/base/applications/osk/lang/en-GB.rc index bf8b4f4c1bf..43eb8d67e28 100644 --- a/reactos/base/applications/osk/lang/en-GB.rc +++ b/reactos/base/applications/osk/lang/en-GB.rc @@ -8,122 +8,122 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 -CAPTION "Clavier visuel" +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Prn",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Stop",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Attn",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "|",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "-",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "[",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "]",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON ";",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "'",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "#",SCAN_CODE_42,231,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,248,43,14,30,BS_ICON - PUSHBUTTON "Shift",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "\\",SCAN_CODE_45,24,77,14,13 - PUSHBUTTON "Z",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "/",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "Shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "can",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "End",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg up",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg down",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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,46,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/reactos/base/applications/osk/lang/es-ES.rc b/reactos/base/applications/osk/lang/es-ES.rc index 4194edc3763..0ebdf589f09 100644 --- a/reactos/base/applications/osk/lang/es-ES.rc +++ b/reactos/base/applications/osk/lang/es-ES.rc @@ -8,122 +8,122 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "imp",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "arr",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "att",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "°",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "'",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "¡",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "`",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "+",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Verr maj",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "Ñ",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON ",",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ç",SCAN_CODE_42,231,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,248,43,14,30,BS_ICON - PUSHBUTTON "maj",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "<",SCAN_CODE_45,24,77,14,13 - PUSHBUTTON "Z",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "-",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "maj",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "sup",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "fin",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg AR",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg AV",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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,46,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/reactos/base/applications/osk/lang/fr-CA.rc b/reactos/base/applications/osk/lang/fr-CA.rc index 4c58257fc2e..17e9e055fda 100644 --- a/reactos/base/applications/osk/lang/fr-CA.rc +++ b/reactos/base/applications/osk/lang/fr-CA.rc @@ -8,122 +8,122 @@ LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_CANADIAN -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "imp",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "arr",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "att",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "#",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "-",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "^",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "¨",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Verr maj",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON ";",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "`",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "<",SCAN_CODE_42,231,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,248,43,14,30,BS_ICON - PUSHBUTTON "maj",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "«",SCAN_CODE_45,24,77,14,13 - PUSHBUTTON "Z",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "/",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "maj",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "sup",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "fin",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg AR",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg AV",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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,46,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/reactos/base/applications/osk/lang/fr-FR.rc b/reactos/base/applications/osk/lang/fr-FR.rc index dc53536f40e..eead6ccc7e9 100644 --- a/reactos/base/applications/osk/lang/fr-FR.rc +++ b/reactos/base/applications/osk/lang/fr-FR.rc @@ -8,122 +8,122 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "imp",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "arr",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "att",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "²",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "&&",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "é",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON """",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "'",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "(",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "-",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "è",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "_",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "ç",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "à",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON ")",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "Z",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "^",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "$",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Verr maj",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "M",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "ù",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "*",SCAN_CODE_42,231,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,248,43,14,30,BS_ICON - PUSHBUTTON "maj",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "<",SCAN_CODE_45,24,77,14,13 - PUSHBUTTON "W",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON ",",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ";",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ":",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "!",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "maj",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "sup",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "fin",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg AR",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg AV",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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,46,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/reactos/base/applications/osk/lang/it-IT.rc b/reactos/base/applications/osk/lang/it-IT.rc index e5b3b3b0c61..01fc7d3bbce 100644 --- a/reactos/base/applications/osk/lang/it-IT.rc +++ b/reactos/base/applications/osk/lang/it-IT.rc @@ -8,122 +8,122 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Imp",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Arr",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Attn",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "\\",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0 ",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "'",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "|",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "è",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "+",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Verr maj",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "ò",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "à",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ù",SCAN_CODE_42,231,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,248,43,14,30,BS_ICON - PUSHBUTTON "Shift",SCAN_CODE_44,3,77,18,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "<",SCAN_CODE_45,24,77,14,13 - PUSHBUTTON "Z",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "-",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "Shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "del",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "fin",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg up",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg down",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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,46,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 */ From a177c8455722d9b696aac751ccabfa19522293f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 6 Dec 2014 19:58:28 +0000 Subject: [PATCH 06/77] [OSK]: Add a better keyboard icon, copied from cpl/main/resources/keyboard.ico (it's keyboard tango icon). Pointed by swyter. svn path=/trunk/; revision=65576 --- reactos/base/applications/osk/res/osk.ico | Bin 1582 -> 40070 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/base/applications/osk/res/osk.ico b/reactos/base/applications/osk/res/osk.ico index bfffd10e421f89b2fe960a8205b9189daf7f863d..29a655acbbe8848139da5981cbfd1fd8d298db47 100644 GIT binary patch literal 40070 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 Ww)!i@`bGT@tIJD+oMC_8nEwY|1AxW= literal 1582 zcmd5*K@P$o5S&sIk77?flAb)8Hu3DqXZRML##21{i#iL%kj9p3jCIM-Y}kP^>;MHy zXs!9(;7|Z30CgSmJM$}H%#bVKQUV9oXu=S}n+t0#oO9^=ey;4JHP!fl+E+55+DZmg z*UG@s^{K<>Y8es>id)WMHiSTlHMD` zvhTBx`QpKaH{MI$*$`)9O+WDXbt7pYwh-7v!I_+CPv&jo9m-B>eBK48a;9CmF0B;9 l^S!adCY~SZ{7U|$i`~D^=a&Bz?7M8-fSm)j??QOF%^#X5y<`9Y From aa00cb3f4c387c9224fc7ffe8baa739c7407a39a Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sun, 7 Dec 2014 01:33:46 +0000 Subject: [PATCH 07/77] [OSK] Update keyboard layout to become bigger, text fitting in the buttons and bein easier to use Part 2/2 + small fixes. svn path=/trunk/; revision=65577 --- reactos/base/applications/osk/lang/ar-DZ.rc | 222 ++++++++++---------- reactos/base/applications/osk/lang/de-DE.rc | 8 +- reactos/base/applications/osk/lang/en-GB.rc | 2 +- reactos/base/applications/osk/lang/en-US.rc | 222 ++++++++++---------- reactos/base/applications/osk/lang/es-ES.rc | 2 +- reactos/base/applications/osk/lang/fr-CA.rc | 2 +- reactos/base/applications/osk/lang/fr-FR.rc | 2 +- reactos/base/applications/osk/lang/it-IT.rc | 2 +- reactos/base/applications/osk/lang/pl-PL.rc | 222 ++++++++++---------- reactos/base/applications/osk/lang/ru-RU.rc | 222 ++++++++++---------- 10 files changed, 453 insertions(+), 453 deletions(-) diff --git a/reactos/base/applications/osk/lang/ar-DZ.rc b/reactos/base/applications/osk/lang/ar-DZ.rc index f6bee193dc8..fa99defaaad 100644 --- a/reactos/base/applications/osk/lang/ar-DZ.rc +++ b/reactos/base/applications/osk/lang/ar-DZ.rc @@ -8,121 +8,121 @@ LANGUAGE LANG_ARABIC, SUBLANG_DEFAULT -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Prn",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Stop",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Attn",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "ذ",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "-",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "ض",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "ص",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "ث",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "ق",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "ف",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "غ",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "ع",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "ه",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "خ",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "ح",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "ج",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "د",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "\\",SCAN_CODE_29,242,43,20,13 - PUSHBUTTON "Verr maj",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "ش",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "س",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "ي",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "ب",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "ل",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "ا",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "ت",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "ن",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "م",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "ك",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "ط",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,231,60,31,13,BS_ICON - PUSHBUTTON "shift",SCAN_CODE_44,3,77,35,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ئ",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "ء",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "ؤ",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "ر",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "ﻻ",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "ﻯ",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "ﺓ",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON "و",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON "ز",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "ظ",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "del",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "end",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg AR",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg AV",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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/reactos/base/applications/osk/lang/de-DE.rc b/reactos/base/applications/osk/lang/de-DE.rc index 20c4f6c8f2f..704dfedabf3 100644 --- a/reactos/base/applications/osk/lang/de-DE.rc +++ b/reactos/base/applications/osk/lang/de-DE.rc @@ -42,7 +42,7 @@ BEGIN 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,46,22,BS_ICON + 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 @@ -56,7 +56,7 @@ BEGIN 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 "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 @@ -70,7 +70,7 @@ BEGIN 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 "Shift",SCAN_CODE_44,3,113,30,22,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX + 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 @@ -82,7 +82,7 @@ BEGIN 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 "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 diff --git a/reactos/base/applications/osk/lang/en-GB.rc b/reactos/base/applications/osk/lang/en-GB.rc index 43eb8d67e28..e3e541ba722 100644 --- a/reactos/base/applications/osk/lang/en-GB.rc +++ b/reactos/base/applications/osk/lang/en-GB.rc @@ -42,7 +42,7 @@ BEGIN 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,46,22,BS_ICON + 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 diff --git a/reactos/base/applications/osk/lang/en-US.rc b/reactos/base/applications/osk/lang/en-US.rc index 118786a5470..9fd4035a053 100644 --- a/reactos/base/applications/osk/lang/en-US.rc +++ b/reactos/base/applications/osk/lang/en-US.rc @@ -8,121 +8,121 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Prn",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Stop",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Attn",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "`",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "-",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "[",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "]",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "\\",SCAN_CODE_29,242,43,20,13 - PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON ";",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "'",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,231,60,31,13,BS_ICON - PUSHBUTTON "shift",SCAN_CODE_44,3,77,35,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "Z",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "/",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "del",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "end",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg up",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg down",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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/reactos/base/applications/osk/lang/es-ES.rc b/reactos/base/applications/osk/lang/es-ES.rc index 0ebdf589f09..52bf432891b 100644 --- a/reactos/base/applications/osk/lang/es-ES.rc +++ b/reactos/base/applications/osk/lang/es-ES.rc @@ -42,7 +42,7 @@ BEGIN 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,46,22,BS_ICON + 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 diff --git a/reactos/base/applications/osk/lang/fr-CA.rc b/reactos/base/applications/osk/lang/fr-CA.rc index 17e9e055fda..0cbbf7abb10 100644 --- a/reactos/base/applications/osk/lang/fr-CA.rc +++ b/reactos/base/applications/osk/lang/fr-CA.rc @@ -42,7 +42,7 @@ BEGIN 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,46,22,BS_ICON + 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 diff --git a/reactos/base/applications/osk/lang/fr-FR.rc b/reactos/base/applications/osk/lang/fr-FR.rc index eead6ccc7e9..5e126341fc2 100644 --- a/reactos/base/applications/osk/lang/fr-FR.rc +++ b/reactos/base/applications/osk/lang/fr-FR.rc @@ -42,7 +42,7 @@ BEGIN 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,46,22,BS_ICON + 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 diff --git a/reactos/base/applications/osk/lang/it-IT.rc b/reactos/base/applications/osk/lang/it-IT.rc index 01fc7d3bbce..db2b4882759 100644 --- a/reactos/base/applications/osk/lang/it-IT.rc +++ b/reactos/base/applications/osk/lang/it-IT.rc @@ -42,7 +42,7 @@ BEGIN 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,46,22,BS_ICON + 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 diff --git a/reactos/base/applications/osk/lang/pl-PL.rc b/reactos/base/applications/osk/lang/pl-PL.rc index f7bf85f1fd3..4c89b54e312 100644 --- a/reactos/base/applications/osk/lang/pl-PL.rc +++ b/reactos/base/applications/osk/lang/pl-PL.rc @@ -8,121 +8,121 @@ LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Prn",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Stop",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Attn",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "`",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,181,26,14,13 - PUSHBUTTON "-",SCAN_CODE_12,199,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,216,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,234,26,28,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Q",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "W",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "E",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "R",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "T",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Y",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "U",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "I",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "O",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "P",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "[",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "]",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "\\",SCAN_CODE_29,242,43,20,13 - PUSHBUTTON "Caps Lock",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "A",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "S",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "D",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "F",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "G",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "H",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "J",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "K",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "L",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON ";",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "'",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,231,60,31,13,BS_ICON - PUSHBUTTON "shift",SCAN_CODE_44,3,77,35,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "Z",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "X",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "V",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "B",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "N",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "M",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON ",",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON ".",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON "/",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "del",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "end",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg AR",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg AV",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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/reactos/base/applications/osk/lang/ru-RU.rc b/reactos/base/applications/osk/lang/ru-RU.rc index fd270ebc10a..a6a0a52e2f4 100644 --- a/reactos/base/applications/osk/lang/ru-RU.rc +++ b/reactos/base/applications/osk/lang/ru-RU.rc @@ -8,121 +8,121 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL -MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 404, 108 +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,14,13 - PUSHBUTTON "F1",SCAN_CODE_112,39,3,14,13 - PUSHBUTTON "F2",SCAN_CODE_113,56,3,14,13 - PUSHBUTTON "F3",SCAN_CODE_114,74,3,14,13 - PUSHBUTTON "F4",SCAN_CODE_115,92,3,14,13 - PUSHBUTTON "F5",SCAN_CODE_116,117,3,14,13 - PUSHBUTTON "F6",SCAN_CODE_117,135,3,14,13 - PUSHBUTTON "F7",SCAN_CODE_118,152,3,14,13 - PUSHBUTTON "F8",SCAN_CODE_119,170,3,14,13 - PUSHBUTTON "F9",SCAN_CODE_120,195,3,14,13 - PUSHBUTTON "F10",SCAN_CODE_121,213,3,14,13 - PUSHBUTTON "F11",SCAN_CODE_122,231,3,14,13 - PUSHBUTTON "F12",SCAN_CODE_123,248,3,14,13 - PUSHBUTTON "Prn",SCAN_CODE_124,273,3,14,13 - PUSHBUTTON "Stop",SCAN_CODE_125,291,3,14,13 - PUSHBUTTON "Attn",SCAN_CODE_126,309,3,14,13 - PUSHBUTTON "Ë",SCAN_CODE_1,3,26,14,13 - PUSHBUTTON "1",SCAN_CODE_2,21,26,14,13 - PUSHBUTTON "2",SCAN_CODE_3,39,26,14,13 - PUSHBUTTON "3",SCAN_CODE_4,56,26,14,13 - PUSHBUTTON "4",SCAN_CODE_5,74,26,14,13 - PUSHBUTTON "5",SCAN_CODE_6,92,26,14,13 - PUSHBUTTON "6",SCAN_CODE_7,110,26,14,13 - PUSHBUTTON "7",SCAN_CODE_8,128,26,14,13 - PUSHBUTTON "8",SCAN_CODE_9,145,26,14,13 - PUSHBUTTON "9",SCAN_CODE_10,163,26,14,13 - PUSHBUTTON "0",SCAN_CODE_11,180,26,14,13 - PUSHBUTTON "-",SCAN_CODE_12,197,26,14,13 - PUSHBUTTON "=",SCAN_CODE_13,214,26,14,13 - PUSHBUTTON "\\",SCAN_CODE_42,231,26,14,13 - PUSHBUTTON "<--",SCAN_CODE_15,248,26,14,13,BS_ICON - PUSHBUTTON "Tab",SCAN_CODE_16,3,43,21,13,BS_ICON - PUSHBUTTON "Й",SCAN_CODE_17,28,43,14,13 - PUSHBUTTON "Ц",SCAN_CODE_18,46,43,14,13 - PUSHBUTTON "У",SCAN_CODE_19,64,43,14,13 - PUSHBUTTON "К",SCAN_CODE_20,81,43,14,13 - PUSHBUTTON "E",SCAN_CODE_21,99,43,14,13 - PUSHBUTTON "Н",SCAN_CODE_22,117,43,14,13 - PUSHBUTTON "Г",SCAN_CODE_23,135,43,14,13 - PUSHBUTTON "Ш",SCAN_CODE_24,152,43,14,13 - PUSHBUTTON "Щ",SCAN_CODE_25,170,43,14,13 - PUSHBUTTON "З",SCAN_CODE_26,188,43,14,13 - PUSHBUTTON "X",SCAN_CODE_27,206,43,14,13 - PUSHBUTTON "Ъ",SCAN_CODE_28,224,43,14,13 - PUSHBUTTON "Caps lock",SCAN_CODE_30,3,60,28,13,BS_ICON - PUSHBUTTON "Ф",SCAN_CODE_31,35,60,14,13 - PUSHBUTTON "Ы",SCAN_CODE_32,53,60,14,13 - PUSHBUTTON "В",SCAN_CODE_33,71,60,14,13 - PUSHBUTTON "A",SCAN_CODE_34,88,60,14,13 - PUSHBUTTON "П",SCAN_CODE_35,106,60,14,13 - PUSHBUTTON "P",SCAN_CODE_36,124,60,14,13 - PUSHBUTTON "O",SCAN_CODE_37,142,60,14,13 - PUSHBUTTON "Л",SCAN_CODE_38,160,60,14,13 - PUSHBUTTON "Д",SCAN_CODE_39,177,60,14,13 - PUSHBUTTON "Ж",SCAN_CODE_40,195,60,14,13 - PUSHBUTTON "Э",SCAN_CODE_41,213,60,14,13 - PUSHBUTTON "ret",SCAN_CODE_43,242,43,20,30,BS_ICON - PUSHBUTTON "shift",SCAN_CODE_44,3,77,35,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "Я",SCAN_CODE_46,42,77,14,13 - PUSHBUTTON "Ч",SCAN_CODE_47,60,77,14,13 - PUSHBUTTON "C",SCAN_CODE_48,78,77,14,13 - PUSHBUTTON "M",SCAN_CODE_49,96,77,14,13 - PUSHBUTTON "И",SCAN_CODE_50,113,77,14,13 - PUSHBUTTON "T",SCAN_CODE_51,131,77,14,13 - PUSHBUTTON "b",SCAN_CODE_52,149,77,14,13 - PUSHBUTTON "Б",SCAN_CODE_53,167,77,14,13 - PUSHBUTTON "Ю",SCAN_CODE_54,184,77,14,13 - PUSHBUTTON ".",SCAN_CODE_55,202,77,14,13 - PUSHBUTTON "shift",SCAN_CODE_57,220,77,43,13,BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ctrl",SCAN_CODE_58,3,94,25,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_127,32,94,18,13,BS_ICON - PUSHBUTTON "alt",SCAN_CODE_60,53,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "",SCAN_CODE_61,74,94,100,13 - PUSHBUTTON "alt gr",SCAN_CODE_62,177,94,18,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ROS",SCAN_CODE_128,199,94,18,13,BS_ICON - PUSHBUTTON "menu",SCAN_CODE_129,220,94,18,13,BS_ICON - PUSHBUTTON "ctrl",SCAN_CODE_64,241,94,21,13,BS_PUSHLIKE|BS_AUTOCHECKBOX - PUSHBUTTON "ins",SCAN_CODE_75,273,26,14,13 - PUSHBUTTON "del",SCAN_CODE_76,273,43,14,13 - PUSHBUTTON "home",SCAN_CODE_80,291,26,14,13,BS_ICON - PUSHBUTTON "end",SCAN_CODE_81,291,43,14,13 - PUSHBUTTON "pg AR",SCAN_CODE_85,309,26,14,13,BS_ICON - PUSHBUTTON "pg AV",SCAN_CODE_86,309,43,14,13,BS_ICON - PUSHBUTTON "<-",SCAN_CODE_79,273,94,14,13,BS_ICON - PUSHBUTTON "^",SCAN_CODE_83,291,77,14,13,BS_ICON - PUSHBUTTON "v",SCAN_CODE_84,291,94,14,13,BS_ICON - PUSHBUTTON "->",SCAN_CODE_89,309,94,14,13,BS_ICON - PUSHBUTTON "num",SCAN_CODE_90,334,26,14,13 - PUSHBUTTON "7",SCAN_CODE_91,334,43,14,13 - PUSHBUTTON "4",SCAN_CODE_92,334,60,14,13 - PUSHBUTTON "1",SCAN_CODE_93,334,77,14,13 - PUSHBUTTON "/",SCAN_CODE_95,352,26,14,13 - PUSHBUTTON "8",SCAN_CODE_96,352,43,14,13 - PUSHBUTTON "5",SCAN_CODE_97,352,60,14,13 - PUSHBUTTON "2",SCAN_CODE_98,352,77,14,13 - PUSHBUTTON "0",SCAN_CODE_99,334,94,32,13 - PUSHBUTTON "*",SCAN_CODE_100,369,26,14,13 - PUSHBUTTON "9",SCAN_CODE_101,369,43,14,13 - PUSHBUTTON "6",SCAN_CODE_102,369,60,14,13 - PUSHBUTTON "3",SCAN_CODE_103,369,77,14,13 - PUSHBUTTON ".",SCAN_CODE_104,369,94,14,13 - PUSHBUTTON "-",SCAN_CODE_105,387,26,14,13 - PUSHBUTTON "+",SCAN_CODE_106,387,43,14,30 - PUSHBUTTON "ent",SCAN_CODE_108,387,77,14,30 - CTEXT "Num",IDC_STATIC,334,4,18,8 - CONTROL "",IDC_LED_NUM,"Static",SS_CENTER|SS_NOTIFY,341,16,4,3 - CTEXT "Caps",IDC_STATIC,359,4,18,8 - CONTROL "",IDC_LED_CAPS,"Static",SS_CENTER|SS_NOTIFY,366,16,4,3 - CTEXT "Scroll",IDC_STATIC,384,4,18,8 - CONTROL "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,391,16,4,3 + 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 */ From c3c85103f2f19cfb442328227f7097cb09f44a78 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Sun, 7 Dec 2014 11:07:51 +0000 Subject: [PATCH 08/77] [EXPLORER] - Add accelerator table for the taskbar. It is unused for now. svn path=/trunk/; revision=65578 --- reactos/base/shell/explorer/explorer.rc | 15 +++++++++++++++ reactos/base/shell/explorer/resource.h | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/reactos/base/shell/explorer/explorer.rc b/reactos/base/shell/explorer/explorer.rc index a7f9c6afd9b..2cfc04be332 100644 --- a/reactos/base/shell/explorer/explorer.rc +++ b/reactos/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/reactos/base/shell/explorer/resource.h b/reactos/base/shell/explorer/resource.h index 08ac0614b62..4fa2ba298b1 100644 --- a/reactos/base/shell/explorer/resource.h +++ b/reactos/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) From ce76daabd95e7948b8f2ff5d47f36aa7afbf00ec Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 7 Dec 2014 13:30:13 +0000 Subject: [PATCH 09/77] [NTFS] Implement NtfsFCBIsReparsePoint() which returns true in case current FCB is a reparse point svn path=/trunk/; revision=65579 --- reactos/drivers/filesystems/ntfs/fcb.c | 7 +++++++ reactos/drivers/filesystems/ntfs/ntfs.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/fcb.c b/reactos/drivers/filesystems/ntfs/fcb.c index 57ff1987b53..a0b95c9e0bb 100644 --- a/reactos/drivers/filesystems/ntfs/fcb.c +++ b/reactos/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) { diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index bb72e0113ff..a847cef49d6 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -564,6 +564,9 @@ NtfsDestroyFCB(PNTFS_FCB Fcb); BOOLEAN NtfsFCBIsDirectory(PNTFS_FCB Fcb); +BOOLEAN +NtfsFCBIsReparsePoint(PNTFS_FCB Fcb); + BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb); From 14863b54d64b577bd847b5b8422ba6c2b5417ef1 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 7 Dec 2014 14:05:47 +0000 Subject: [PATCH 10/77] [NTFS] Allow direct opening of a reparse point, but don't handle yet reparse itself svn path=/trunk/; revision=65580 --- reactos/drivers/filesystems/ntfs/create.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/create.c b/reactos/drivers/filesystems/ntfs/create.c index 08ceb39b805..5db919bd0c8 100644 --- a/reactos/drivers/filesystems/ntfs/create.c +++ b/reactos/drivers/filesystems/ntfs/create.c @@ -245,6 +245,23 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, return STATUS_NOT_A_DIRECTORY; } + /* Properly handle reparse points: + * - likely overwrite FO name + * - return STATUS_REPARSE to IO manager + * - Do we have to attach reparse data to Irp->Tail.Overlay.AuxiliaryBuffer? + * See: http://www.osronline.com/showThread.cfm?link=6623 + * + * If it is a reparse point & FILE_OPEN_REPARSE_POINT, then allow opening it + * as a normal file. + */ + if (NtfsFCBIsReparsePoint(Fcb) && + ((RequestedOptions & FILE_OPEN_REPARSE_POINT) != FILE_OPEN_REPARSE_POINT)) + { + DPRINT1("Reparse point not handled!\n"); + NtfsCloseFile(DeviceExt, FileObject); + return STATUS_NOT_IMPLEMENTED; + } + /* HUGLY HACK: remain RO so far... */ if (RequestedDisposition == FILE_OVERWRITE || RequestedDisposition == FILE_OVERWRITE_IF || From 5296d6287707691260319d31672c37d367e332de Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 7 Dec 2014 14:16:13 +0000 Subject: [PATCH 11/77] [NTFS] Implement NtfsFsdDeviceControl() svn path=/trunk/; revision=65581 --- .../drivers/filesystems/ntfs/CMakeLists.txt | 1 + reactos/drivers/filesystems/ntfs/devctl.c | 46 +++++++++++++++++++ reactos/drivers/filesystems/ntfs/ntfs.c | 1 + reactos/drivers/filesystems/ntfs/ntfs.h | 8 ++++ 4 files changed, 56 insertions(+) create mode 100644 reactos/drivers/filesystems/ntfs/devctl.c diff --git a/reactos/drivers/filesystems/ntfs/CMakeLists.txt b/reactos/drivers/filesystems/ntfs/CMakeLists.txt index 707f99d3023..cccce857eea 100644 --- a/reactos/drivers/filesystems/ntfs/CMakeLists.txt +++ b/reactos/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 diff --git a/reactos/drivers/filesystems/ntfs/devctl.c b/reactos/drivers/filesystems/ntfs/devctl.c new file mode 100644 index 00000000000..115ef9273f9 --- /dev/null +++ b/reactos/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/reactos/drivers/filesystems/ntfs/ntfs.c b/reactos/drivers/filesystems/ntfs/ntfs.c index dff05051774..090ee68c22f 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.c +++ b/reactos/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/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index a847cef49d6..0fa95016787 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -519,6 +519,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; From 8d0ae10798311108eafbd52674f9f15d77294a3a Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 7 Dec 2014 16:54:27 +0000 Subject: [PATCH 12/77] [BUGCODES] Add bug check code 0xF9 DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN Ref: http://msdn.microsoft.com/en-us/library/windows/hardware/ff560396%28v=vs.85%29.aspx svn path=/trunk/; revision=65582 --- reactos/include/reactos/mc/bugcodes.mc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/reactos/include/reactos/mc/bugcodes.mc b/reactos/include/reactos/mc/bugcodes.mc index 3afd246aab6..1a1d59cf810 100644 --- a/reactos/include/reactos/mc/bugcodes.mc +++ b/reactos/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 From 0dca6fd8ed32bb37e6424e9962b18e113c5c2a92 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Sun, 7 Dec 2014 17:53:08 +0000 Subject: [PATCH 13/77] [SHELL32:ICONS] Replace the old "My Computer" icon with a new one. New icon by: Ismael Ferreras Morezuelas. CORE-8890 #resolve #comment Committed in revision r65583. Thanks! svn path=/trunk/; revision=65583 --- reactos/dll/win32/shell32/res/icons/16.ico | Bin 40070 -> 40070 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/dll/win32/shell32/res/icons/16.ico b/reactos/dll/win32/shell32/res/icons/16.ico index 56edfcbb2af172e924f1fc4aec31ab71134d2087..31aea68c0ffb6ecfb0a6a97364a34a658779b1fa 100644 GIT binary patch literal 40070 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 literal 40070 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%0AO7-d`THOXlM)s&!u}j&q4s|VC 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 Date: Sun, 7 Dec 2014 17:59:58 +0000 Subject: [PATCH 14/77] [NTOSKRNL] Implement support for (some) reparse points in Io manager. Ob should be already fine. - Implement the IopDoNameTransmogrify() function. This one is responsible for checking the correct data for the reparse point and to update the path name in the file object. It will also free the memory buffer allocated by the driver to communicate the reparse information. - Fix the support for reparse points in IopCompleteRequest(). If we receive reparse status + reparse tag we know, we call IopDoNameTransmogrify() to update file objet. - Fix the support for reparse points in IopParseDevice() (oh! you again? :-)). When we complete the IRP ourselves, act as in IopCompleteRequest(). Then, we properly update objects manipulated by Io for the create request and we return STATUS_REPARSE so that Ob can update and recall us afterwards so that we complete. Some parts are left unimplemented when it comes to reparse tags which are not IO_REPARSE_TAG_MOUNT_POINT. But still less than previously ;-). svn path=/trunk/; revision=65584 --- reactos/ntoskrnl/io/iomgr/file.c | 231 ++++++++++++++++++++++++++++++- reactos/ntoskrnl/io/iomgr/irp.c | 12 +- 2 files changed, 239 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/io/iomgr/file.c b/reactos/ntoskrnl/io/iomgr/file.c index 74ce63fd36d..7b367b51994 100644 --- a/reactos/ntoskrnl/io/iomgr/file.c +++ b/reactos/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 (OpenPacket->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/reactos/ntoskrnl/io/iomgr/irp.c b/reactos/ntoskrnl/io/iomgr/irp.c index 940c3e3461b..4422eab2e1d 100644 --- a/reactos/ntoskrnl/io/iomgr/irp.c +++ b/reactos/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); } } From 0ee87ef80ad9e1c84ccfb111a7db9755e54e96e7 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 7 Dec 2014 18:02:04 +0000 Subject: [PATCH 15/77] [NTOSKRNL] Addendum to r65584: don't forget to commit the header~ svn path=/trunk/; revision=65585 --- reactos/ntoskrnl/include/internal/io.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/reactos/ntoskrnl/include/internal/io.h b/reactos/ntoskrnl/include/internal/io.h index 778bf6d8073..835e8d3b607 100644 --- a/reactos/ntoskrnl/include/internal/io.h +++ b/reactos/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 // From ebf69b050b735d411de23d72c6e8f30007e04d0d Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 7 Dec 2014 20:59:45 +0000 Subject: [PATCH 16/77] [NTFS] - Implement NtfsReadFCBAttribute() which is responsible for reading an attribute from a file which is referenced by its FCB. It will first read the file record in the MFT and then read the attribute, if found. - Use NtfsReadFCBAttribute() to implement support for reparse point in NtfsCreateFile(). Once a reparse point is found, we attempt to open its data. Given their layout, we directly hand them to the Io manager. Just make sure that we return something consistent on disk. Only handle IO_REPARSE_TAG_MOUNT_POINT so far. Next question to answer is: what to do when a reparse point is encountered during path traversal? svn path=/trunk/; revision=65586 --- reactos/drivers/filesystems/ntfs/create.c | 38 ++++++++++++---- reactos/drivers/filesystems/ntfs/fcb.c | 53 +++++++++++++++++++++++ reactos/drivers/filesystems/ntfs/ntfs.h | 8 ++++ 3 files changed, 91 insertions(+), 8 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/create.c b/reactos/drivers/filesystems/ntfs/create.c index 5db919bd0c8..2ceab693081 100644 --- a/reactos/drivers/filesystems/ntfs/create.c +++ b/reactos/drivers/filesystems/ntfs/create.c @@ -245,21 +245,43 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, return STATUS_NOT_A_DIRECTORY; } - /* Properly handle reparse points: - * - likely overwrite FO name - * - return STATUS_REPARSE to IO manager - * - Do we have to attach reparse data to Irp->Tail.Overlay.AuxiliaryBuffer? - * See: http://www.osronline.com/showThread.cfm?link=6623 - * + /* * 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)) { - DPRINT1("Reparse point not handled!\n"); + if (Fcb->Entry.Extended.ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) + { + Status = NtfsReadFCBAttribute(DeviceExt, Fcb, + AttributeReparsePoint, L"", 0, + (PVOID *)&Irp->Tail.Overlay.AuxiliaryBuffer); + if (NT_SUCCESS(Status)) + { + PREPARSE_DATA_BUFFER ReparseData; + + ReparseData = (PREPARSE_DATA_BUFFER)Irp->Tail.Overlay.AuxiliaryBuffer; + if (ReparseData->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) + { + Status = STATUS_REPARSE; + } + else + { + Status = STATUS_FILE_CORRUPT_ERROR; + ExFreePoolWithTag(ReparseData, TAG_NTFS); + } + } + } + else + { + Status = STATUS_NOT_IMPLEMENTED; + } + NtfsCloseFile(DeviceExt, FileObject); - return STATUS_NOT_IMPLEMENTED; + return Status; } /* HUGLY HACK: remain RO so far... */ diff --git a/reactos/drivers/filesystems/ntfs/fcb.c b/reactos/drivers/filesystems/ntfs/fcb.c index a0b95c9e0bb..7b74dcc8b31 100644 --- a/reactos/drivers/filesystems/ntfs/fcb.c +++ b/reactos/drivers/filesystems/ntfs/fcb.c @@ -646,4 +646,57 @@ NtfsGetFCBForFile(PNTFS_VCB Vcb, return STATUS_SUCCESS; } + +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, NTFS_FILE_BITMAP, 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/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 0fa95016787..dbe6551e305 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -615,6 +615,14 @@ NtfsGetFCBForFile(PNTFS_VCB Vcb, PNTFS_FCB *pFCB, const PWSTR pFileName); +NTSTATUS +NtfsReadFCBAttribute(PNTFS_VCB Vcb, + PNTFS_FCB pFCB, + ULONG Type, + PCWSTR Name, + ULONG NameLength, + PVOID * Data); + /* finfo.c */ From ce3e70b7171860da5a61c7bd0f8426142510499e Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 7 Dec 2014 22:28:12 +0000 Subject: [PATCH 17/77] [USETUP] Show an indicator for active partitons in the partition list. svn path=/trunk/; revision=65587 --- reactos/base/setup/usetup/lang/bg-BG.h | 2 +- reactos/base/setup/usetup/lang/bn-BD.h | 2 +- reactos/base/setup/usetup/lang/cs-CZ.h | 2 +- reactos/base/setup/usetup/lang/de-DE.h | 2 +- reactos/base/setup/usetup/lang/el-GR.h | 2 +- reactos/base/setup/usetup/lang/en-US.h | 2 +- reactos/base/setup/usetup/lang/es-ES.h | 2 +- reactos/base/setup/usetup/lang/et-EE.h | 2 +- reactos/base/setup/usetup/lang/fr-FR.h | 2 +- reactos/base/setup/usetup/lang/he-IL.h | 2 +- reactos/base/setup/usetup/lang/it-IT.h | 2 +- reactos/base/setup/usetup/lang/ja-JP.h | 2 +- reactos/base/setup/usetup/lang/lt-LT.h | 2 +- reactos/base/setup/usetup/lang/nl-NL.h | 2 +- reactos/base/setup/usetup/lang/pl-PL.h | 2 +- reactos/base/setup/usetup/lang/pt-BR.h | 2 +- reactos/base/setup/usetup/lang/ro-RO.h | 2 +- reactos/base/setup/usetup/lang/ru-RU.h | 2 +- reactos/base/setup/usetup/lang/sk-SK.h | 2 +- reactos/base/setup/usetup/lang/sq-AL.h | 2 +- reactos/base/setup/usetup/lang/sv-SE.h | 2 +- reactos/base/setup/usetup/lang/tr-TR.h | 2 +- reactos/base/setup/usetup/lang/uk-UA.h | 2 +- reactos/base/setup/usetup/partlist.c | 12 +++++++----- 24 files changed, 30 insertions(+), 28 deletions(-) diff --git a/reactos/base/setup/usetup/lang/bg-BG.h b/reactos/base/setup/usetup/lang/bg-BG.h index 1bf0e213a8d..7118904c6ee 100644 --- a/reactos/base/setup/usetup/lang/bg-BG.h +++ b/reactos/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/reactos/base/setup/usetup/lang/bn-BD.h b/reactos/base/setup/usetup/lang/bn-BD.h index e2e2ff1ae78..8a6b39b90fb 100644 --- a/reactos/base/setup/usetup/lang/bn-BD.h +++ b/reactos/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/reactos/base/setup/usetup/lang/cs-CZ.h b/reactos/base/setup/usetup/lang/cs-CZ.h index 74555d0eeb2..7574918e241 100644 --- a/reactos/base/setup/usetup/lang/cs-CZ.h +++ b/reactos/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/reactos/base/setup/usetup/lang/de-DE.h b/reactos/base/setup/usetup/lang/de-DE.h index f1d422f540b..abab18f05e3 100644 --- a/reactos/base/setup/usetup/lang/de-DE.h +++ b/reactos/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/reactos/base/setup/usetup/lang/el-GR.h b/reactos/base/setup/usetup/lang/el-GR.h index 4c7b79e1e56..52f6c3fb0d0 100644 --- a/reactos/base/setup/usetup/lang/el-GR.h +++ b/reactos/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/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index d4e7d5f802f..5cf7020283c 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/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/reactos/base/setup/usetup/lang/es-ES.h b/reactos/base/setup/usetup/lang/es-ES.h index b96a269a86d..fca24eefe71 100644 --- a/reactos/base/setup/usetup/lang/es-ES.h +++ b/reactos/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/reactos/base/setup/usetup/lang/et-EE.h b/reactos/base/setup/usetup/lang/et-EE.h index fe7463322ac..984af2219cf 100644 --- a/reactos/base/setup/usetup/lang/et-EE.h +++ b/reactos/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/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 50220c3fe94..8a2b46156c7 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/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/reactos/base/setup/usetup/lang/he-IL.h b/reactos/base/setup/usetup/lang/he-IL.h index 74f14761a15..de05585cce7 100644 --- a/reactos/base/setup/usetup/lang/he-IL.h +++ b/reactos/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/reactos/base/setup/usetup/lang/it-IT.h b/reactos/base/setup/usetup/lang/it-IT.h index 2c7fc543cdb..d229bef2921 100644 --- a/reactos/base/setup/usetup/lang/it-IT.h +++ b/reactos/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/reactos/base/setup/usetup/lang/ja-JP.h b/reactos/base/setup/usetup/lang/ja-JP.h index f4aa3cb6dc9..1d0b4913315 100644 --- a/reactos/base/setup/usetup/lang/ja-JP.h +++ b/reactos/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/reactos/base/setup/usetup/lang/lt-LT.h b/reactos/base/setup/usetup/lang/lt-LT.h index ef7e9640dca..bf3241c6224 100644 --- a/reactos/base/setup/usetup/lang/lt-LT.h +++ b/reactos/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/reactos/base/setup/usetup/lang/nl-NL.h b/reactos/base/setup/usetup/lang/nl-NL.h index cc775851d37..336d3978163 100644 --- a/reactos/base/setup/usetup/lang/nl-NL.h +++ b/reactos/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/reactos/base/setup/usetup/lang/pl-PL.h b/reactos/base/setup/usetup/lang/pl-PL.h index cb83abb1b62..77d3c06bacc 100644 --- a/reactos/base/setup/usetup/lang/pl-PL.h +++ b/reactos/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/reactos/base/setup/usetup/lang/pt-BR.h b/reactos/base/setup/usetup/lang/pt-BR.h index e1b0c113d60..6e70b9a25b2 100644 --- a/reactos/base/setup/usetup/lang/pt-BR.h +++ b/reactos/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/reactos/base/setup/usetup/lang/ro-RO.h b/reactos/base/setup/usetup/lang/ro-RO.h index dcac8972059..f98db122c23 100644 --- a/reactos/base/setup/usetup/lang/ro-RO.h +++ b/reactos/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/reactos/base/setup/usetup/lang/ru-RU.h b/reactos/base/setup/usetup/lang/ru-RU.h index 87d976e2e8e..692489bf02b 100644 --- a/reactos/base/setup/usetup/lang/ru-RU.h +++ b/reactos/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/reactos/base/setup/usetup/lang/sk-SK.h b/reactos/base/setup/usetup/lang/sk-SK.h index f2213cbd1b0..ebd7a9354a8 100644 --- a/reactos/base/setup/usetup/lang/sk-SK.h +++ b/reactos/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/reactos/base/setup/usetup/lang/sq-AL.h b/reactos/base/setup/usetup/lang/sq-AL.h index 4dbd396218a..e8f0366a38d 100644 --- a/reactos/base/setup/usetup/lang/sq-AL.h +++ b/reactos/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/reactos/base/setup/usetup/lang/sv-SE.h b/reactos/base/setup/usetup/lang/sv-SE.h index d763b603f27..33f7eca25d6 100644 --- a/reactos/base/setup/usetup/lang/sv-SE.h +++ b/reactos/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/reactos/base/setup/usetup/lang/tr-TR.h b/reactos/base/setup/usetup/lang/tr-TR.h index 0c6fb8d1173..c18a33a9eae 100644 --- a/reactos/base/setup/usetup/lang/tr-TR.h +++ b/reactos/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/reactos/base/setup/usetup/lang/uk-UA.h b/reactos/base/setup/usetup/lang/uk-UA.h index 517736faeb4..7293763e204 100644 --- a/reactos/base/setup/usetup/lang/uk-UA.h +++ b/reactos/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/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index 6f8cd09c53e..deb5196a0eb 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/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) { From f9e8e07d3245bacd2f559d31219680cf164ef7e0 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 07:35:45 +0000 Subject: [PATCH 18/77] [NTFS] Do not forget to set IRP status block information in case of reparse point. svn path=/trunk/; revision=65588 --- reactos/drivers/filesystems/ntfs/create.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/create.c b/reactos/drivers/filesystems/ntfs/create.c index 2ceab693081..7b293fc88b0 100644 --- a/reactos/drivers/filesystems/ntfs/create.c +++ b/reactos/drivers/filesystems/ntfs/create.c @@ -280,6 +280,8 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, Status = STATUS_NOT_IMPLEMENTED; } + Irp->IoStatus.Information = ((Status == STATUS_REPARSE) ? Fcb->Entry.Extended.ReparseTag : 0); + NtfsCloseFile(DeviceExt, FileObject); return Status; } From a4c82de831fcd928e5b91cbf1f3bc51bf27e5ae9 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 8 Dec 2014 17:10:02 +0000 Subject: [PATCH 19/77] [Shell32] - Use a timeout to send WM_COPYDATA. - Recall reading, while being sent to a thread that is hung indefinitely or blocked, it will not return properly. This seems to be the case for CORE-8779. Play it safe and use a timeout. svn path=/trunk/; revision=65589 --- reactos/dll/win32/shell32/systray.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/shell32/systray.cpp b/reactos/dll/win32/shell32/systray.cpp index 6fc578f0e58..ddf569fb8d9 100644 --- a/reactos/dll/win32/shell32/systray.cpp +++ b/reactos/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; } From 229c947271a10112b87a1c7c95ac35b84d7018ad Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 18:44:29 +0000 Subject: [PATCH 20/77] [NTFS] Complete a bit more the information dumped from attributes svn path=/trunk/; revision=65590 --- reactos/drivers/filesystems/ntfs/attrib.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/attrib.c b/reactos/drivers/filesystems/ntfs/attrib.c index 675a2d8d8af..c5fcf18166b 100644 --- a/reactos/drivers/filesystems/ntfs/attrib.c +++ b/reactos/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: From a91d0a5297cb0251a807fb3d6bcdc1edebfc3a79 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 19:19:30 +0000 Subject: [PATCH 21/77] [NTFS] Implement GetStandardInformationFromRecord() which will return $STANDARD_INFORMATION attribute from a file record svn path=/trunk/; revision=65591 --- reactos/drivers/filesystems/ntfs/attrib.c | 22 ++++++++++++++++++++++ reactos/drivers/filesystems/ntfs/ntfs.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/attrib.c b/reactos/drivers/filesystems/ntfs/attrib.c index c5fcf18166b..793ca291a5f 100644 --- a/reactos/drivers/filesystems/ntfs/attrib.c +++ b/reactos/drivers/filesystems/ntfs/attrib.c @@ -330,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/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index dbe6551e305..8af68849c84 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -465,6 +465,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); From f94ebb610d98f1bcadd609f727be7c2d5f6cc834 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 19:36:40 +0000 Subject: [PATCH 22/77] [NTFS] On FCB creation, merge file attributes from $FILE_NAME and from $STANDARD_INFORMATION Not sure it's fully legal, but it allows us to catch them all! svn path=/trunk/; revision=65592 --- reactos/drivers/filesystems/ntfs/fcb.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/fcb.c b/reactos/drivers/filesystems/ntfs/fcb.c index 7b74dcc8b31..7ec6490bb03 100644 --- a/reactos/drivers/filesystems/ntfs/fcb.c +++ b/reactos/drivers/filesystems/ntfs/fcb.c @@ -399,6 +399,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); @@ -434,6 +435,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; From 62f2a171cdbfb6f3d17feca16d650a9b896c0070 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 19:51:55 +0000 Subject: [PATCH 23/77] [NTFS] Fix a stupid copy paste error! svn path=/trunk/; revision=65593 --- reactos/drivers/filesystems/ntfs/fcb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/drivers/filesystems/ntfs/fcb.c b/reactos/drivers/filesystems/ntfs/fcb.c index 7ec6490bb03..93c400da30f 100644 --- a/reactos/drivers/filesystems/ntfs/fcb.c +++ b/reactos/drivers/filesystems/ntfs/fcb.c @@ -675,7 +675,7 @@ NtfsReadFCBAttribute(PNTFS_VCB Vcb, return STATUS_INSUFFICIENT_RESOURCES; } - Status = ReadFileRecord(Vcb, NTFS_FILE_BITMAP, FileRecord); + Status = ReadFileRecord(Vcb, pFCB->MFTIndex, FileRecord); if (!NT_SUCCESS(Status)) { ExFreePoolWithTag(FileRecord, TAG_NTFS); From 447fca27dc77e612d226f72fd861c3a37fe2221e Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 19:55:56 +0000 Subject: [PATCH 24/77] [NTFS] Fix the implementation of the reparse point handling. This takes into account our $FILE_NAME attribute not being aware it's a reparse point... We now fully get into Io and fail miserably as it seems I forgot one place where reparse points support has to be added. D'oh! svn path=/trunk/; revision=65594 --- reactos/drivers/filesystems/ntfs/create.c | 39 ++++++++++------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/create.c b/reactos/drivers/filesystems/ntfs/create.c index 7b293fc88b0..9e1574b227d 100644 --- a/reactos/drivers/filesystems/ntfs/create.c +++ b/reactos/drivers/filesystems/ntfs/create.c @@ -254,33 +254,26 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject, if (NtfsFCBIsReparsePoint(Fcb) && ((RequestedOptions & FILE_OPEN_REPARSE_POINT) != FILE_OPEN_REPARSE_POINT)) { - if (Fcb->Entry.Extended.ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) - { - Status = NtfsReadFCBAttribute(DeviceExt, Fcb, - AttributeReparsePoint, L"", 0, - (PVOID *)&Irp->Tail.Overlay.AuxiliaryBuffer); - if (NT_SUCCESS(Status)) - { - PREPARSE_DATA_BUFFER ReparseData; + PREPARSE_DATA_BUFFER ReparseData = NULL; - ReparseData = (PREPARSE_DATA_BUFFER)Irp->Tail.Overlay.AuxiliaryBuffer; - if (ReparseData->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) - { - Status = STATUS_REPARSE; - } - else - { - Status = STATUS_FILE_CORRUPT_ERROR; - ExFreePoolWithTag(ReparseData, TAG_NTFS); - } + 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); } } - else - { - Status = STATUS_NOT_IMPLEMENTED; - } - Irp->IoStatus.Information = ((Status == STATUS_REPARSE) ? Fcb->Entry.Extended.ReparseTag : 0); + Irp->IoStatus.Information = ((Status == STATUS_REPARSE) ? ReparseData->ReparseTag : 0); NtfsCloseFile(DeviceExt, FileObject); return Status; From a98c9c121930e8b371222a68cf33fe0fecd520f8 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 20:44:19 +0000 Subject: [PATCH 25/77] [NTOSKRNL] Implement support reparse points in IofCompleteRequest() svn path=/trunk/; revision=65595 --- reactos/ntoskrnl/io/iomgr/irp.c | 34 ++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/reactos/ntoskrnl/io/iomgr/irp.c b/reactos/ntoskrnl/io/iomgr/irp.c index 4422eab2e1d..894f8f4156c 100644 --- a/reactos/ntoskrnl/io/iomgr/irp.c +++ b/reactos/ntoskrnl/io/iomgr/irp.c @@ -1245,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__, @@ -1373,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) @@ -1428,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. @@ -1462,7 +1486,7 @@ IofCompleteRequest(IN PIRP Irp, /* Queue it */ KeInsertQueueApc(&Irp->Tail.Apc, FileObject, - NULL, /* This is used for REPARSE stuff */ + DataBuffer, PriorityBoost); } else @@ -1483,7 +1507,7 @@ IofCompleteRequest(IN PIRP Irp, /* Queue it */ KeInsertQueueApc(&Irp->Tail.Apc, FileObject, - NULL, /* This is used for REPARSE stuff */ + DataBuffer, PriorityBoost); } else From 5503ce60e6ae73184e073533419491b914d13228 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Tue, 9 Dec 2014 21:33:38 +0000 Subject: [PATCH 26/77] [NTOSKRNL] THE oneliner.... Properly read the information from the IRP to get the reparse tag. This fixes the handling of reparse mount points in ReactOS. To make it short and crystal clear: reparse points from NTFS now work in ReactOS. Demonstration with a Windows 7 volume read inside ReactOS with our NTFS driver and the "Documents and Settings" directory pointing to Users. IopDoNameTransmogrify() properly gets the reparse data and extracts the mount point: (../../ntoskrnl/io/iomgr/file.c:178) IopDoNameTransmogrify(B074DB98, B022BC28, B0226068) (../../ntoskrnl/io/iomgr/file.c:232) Old name: '\Documents and Settings\' (../../ntoskrnl/io/iomgr/file.c:266) Reparsed name: '\??\C:\Users' Then.... http://www.heisspiter.net/~Pierre/rostests/NTFS_Reparse.png First, I attempt to open "Documents and Settings" on my NTFS volume, it fails as "C:\" drive is hardcoded in the reparse point. So, I create the Users directory on C:\ and a dummy file in it. Then, I cd again which works now. And dir properly shows the dummy created file :-). svn path=/trunk/; revision=65596 --- reactos/ntoskrnl/io/iomgr/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/io/iomgr/file.c b/reactos/ntoskrnl/io/iomgr/file.c index 7b367b51994..1f8a76bfbba 100644 --- a/reactos/ntoskrnl/io/iomgr/file.c +++ b/reactos/ntoskrnl/io/iomgr/file.c @@ -870,7 +870,7 @@ IopParseDevice(IN PVOID ParseObject, if (Status == STATUS_REPARSE) { /* Check this is a mount point */ - if (OpenPacket->Information == IO_REPARSE_TAG_MOUNT_POINT) + if (Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT) { PREPARSE_DATA_BUFFER ReparseData; From 8264611855acb84466d1844f0e2dd45fdab3db03 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Tue, 9 Dec 2014 21:37:59 +0000 Subject: [PATCH 27/77] [EXPLORER] * Import some undocumented functions directly instead of using GetProcAddress svn path=/trunk/; revision=65597 --- reactos/base/shell/explorer/explorer.cpp | 10 +------ reactos/base/shell/explorer/precomp.h | 20 +------------ reactos/base/shell/explorer/startmnusite.cpp | 17 +---------- reactos/base/shell/explorer/taskswnd.cpp | 30 ++------------------ reactos/base/shell/explorer/traywnd.cpp | 22 +++++--------- 5 files changed, 12 insertions(+), 87 deletions(-) diff --git a/reactos/base/shell/explorer/explorer.cpp b/reactos/base/shell/explorer/explorer.cpp index 187201a70dc..e96f632f17e 100644 --- a/reactos/base/shell/explorer/explorer.cpp +++ b/reactos/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/reactos/base/shell/explorer/precomp.h b/reactos/base/shell/explorer/precomp.h index 15171ec0fc7..4c84118fd70 100644 --- a/reactos/base/shell/explorer/precomp.h +++ b/reactos/base/shell/explorer/precomp.h @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -42,33 +43,14 @@ 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 diff --git a/reactos/base/shell/explorer/startmnusite.cpp b/reactos/base/shell/explorer/startmnusite.cpp index e7dc2ed3add..18198dbc0a7 100644 --- a/reactos/base/shell/explorer/startmnusite.cpp +++ b/reactos/base/shell/explorer/startmnusite.cpp @@ -83,26 +83,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(Tray->GetHWND(), pShellFolder, pidl); return ret; } diff --git a/reactos/base/shell/explorer/taskswnd.cpp b/reactos/base/shell/explorer/taskswnd.cpp index 9701ab8510b..3eb55a229f2 100644 --- a/reactos/base/shell/explorer/taskswnd.cpp +++ b/reactos/base/shell/explorer/taskswnd.cpp @@ -1312,18 +1312,7 @@ public: TRACE("ShellHookMsg got assigned number %d\n", 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,25 +1327,10 @@ public: LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - HMODULE hShell32; - IsDestroying = TRUE; /* Unregister the shell hook */ - hShell32 = GetModuleHandle(TEXT("SHELL32.DLL")); - if (hShell32 != NULL) - { - REGSHELLHOOK RegShellHook; - - /* RegisterShellHook */ - RegShellHook = (REGSHELLHOOK) GetProcAddress(hShell32, - (LPCSTR) ((LONG) 181)); - if (RegShellHook != NULL) - { - RegShellHook(m_hWnd, - FALSE); - } - } + RegisterShellHook(m_hWnd, FALSE); CloseThemeData(TaskBandTheme); DeleteAllTasks(); diff --git a/reactos/base/shell/explorer/traywnd.cpp b/reactos/base/shell/explorer/traywnd.cpp index 74a90680bbb..378c4de4953 100644 --- a/reactos/base/shell/explorer/traywnd.cpp +++ b/reactos/base/shell/explorer/traywnd.cpp @@ -1364,16 +1364,13 @@ DefSize: if (hIconStart != NULL) Flags |= DC_ICON; - if (DrawCapTemp != NULL) - { - Ret = DrawCapTemp(NULL, - hDC, - &rcButton, - hStartBtnFont, - hIconStart, - szStartCaption, - Flags); - } + DrawCaptionTemp(NULL, + hDC, + &rcButton, + hStartBtnFont, + hIconStart, + szStartCaption, + Flags); SelectObject(hDC, hbmpOld); @@ -1926,8 +1923,6 @@ SetStartBtnImage: DWORD WINAPI RunFileDlgThread() { - HINSTANCE hShell32; - RUNFILEDLG RunFileDlg; HWND hwnd; RECT posRect; @@ -1948,9 +1943,6 @@ SetStartBtnImage: hwndRunFileDlgOwner = hwnd; - hShell32 = GetModuleHandle(TEXT("SHELL32.DLL")); - RunFileDlg = (RUNFILEDLG) GetProcAddress(hShell32, (LPCSTR) 61); - RunFileDlg(hwnd, NULL, NULL, NULL, NULL, RFF_CALCDIRECTORY); hwndRunFileDlgOwner = NULL; From f8a69bddfb71762be71960016eb7837738f12adb Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Tue, 9 Dec 2014 21:55:56 +0000 Subject: [PATCH 28/77] [EXPLORER] * Remove dragdrop.cpp. It was never used. svn path=/trunk/; revision=65598 --- reactos/base/shell/explorer/CMakeLists.txt | 1 - reactos/base/shell/explorer/dragdrop.cpp | 314 --------------------- reactos/base/shell/explorer/precomp.h | 34 --- 3 files changed, 349 deletions(-) delete mode 100644 reactos/base/shell/explorer/dragdrop.cpp diff --git a/reactos/base/shell/explorer/CMakeLists.txt b/reactos/base/shell/explorer/CMakeLists.txt index 5b4ec0836bb..138d90a8fdb 100644 --- a/reactos/base/shell/explorer/CMakeLists.txt +++ b/reactos/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/reactos/base/shell/explorer/dragdrop.cpp b/reactos/base/shell/explorer/dragdrop.cpp deleted file mode 100644 index d9c21e6f42a..00000000000 --- a/reactos/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/reactos/base/shell/explorer/precomp.h b/reactos/base/shell/explorer/precomp.h index 4c84118fd70..de88514231b 100644 --- a/reactos/base/shell/explorer/precomp.h +++ b/reactos/base/shell/explorer/precomp.h @@ -52,40 +52,6 @@ extern HINSTANCE hExplorerInstance; extern HANDLE hProcessHeap; extern HKEY hkExplorer; -/* - * 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 */ From 50d056ca736414ded1dcfece8f28d49b32660644 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Tue, 9 Dec 2014 22:01:46 +0000 Subject: [PATCH 29/77] [EXPLORER] * Make SetWindowStyle and SetWindowExStyle simple wrappers around SHSetWindowBits. There is no reason to reinvent the wheel. svn path=/trunk/; revision=65599 --- reactos/base/shell/explorer/precomp.h | 12 ++++++-- reactos/base/shell/explorer/util.cpp | 44 --------------------------- 2 files changed, 10 insertions(+), 46 deletions(-) diff --git a/reactos/base/shell/explorer/precomp.h b/reactos/base/shell/explorer/precomp.h index de88514231b..7ed7549b6b2 100644 --- a/reactos/base/shell/explorer/precomp.h +++ b/reactos/base/shell/explorer/precomp.h @@ -56,15 +56,23 @@ extern HKEY hkExplorer; * 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/reactos/base/shell/explorer/util.cpp b/reactos/base/shell/explorer/util.cpp index 6bdea90833c..543df9f678f 100644 --- a/reactos/base/shell/explorer/util.cpp +++ b/reactos/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) From 7427f826d0f98bdcd5967e1bdbe77bb43b9893ff Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Tue, 9 Dec 2014 22:49:54 +0000 Subject: [PATCH 30/77] [EXPLORER] * Simplify CreateStartMenu. Use CComPtr and IUnknown_SetSite. svn path=/trunk/; revision=65600 --- reactos/base/shell/explorer/startmnu.cpp | 81 +++++------------------- 1 file changed, 16 insertions(+), 65 deletions(-) diff --git a/reactos/base/shell/explorer/startmnu.cpp b/reactos/base/shell/explorer/startmnu.cpp index fde919cd913..ca6c6b86c05 100644 --- a/reactos/base/shell/explorer/startmnu.cpp +++ b/reactos/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(); } From 5e1a81a59636614dc1145e72e9a3339d3d5238cb Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Wed, 10 Dec 2014 20:45:04 +0000 Subject: [PATCH 31/77] [NTFS] Implement the downward fashion of FSCTL_GET_NTFS_FILE_RECORD and always return a file record which is in use CORE-8725 svn path=/trunk/; revision=65601 --- reactos/drivers/filesystems/ntfs/fsctl.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index 71f884c492c..31cabb45996 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -626,14 +626,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; From e6979b9c26b75c34f96880be4fcfd63ed2ac2ef5 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Wed, 10 Dec 2014 21:27:18 +0000 Subject: [PATCH 32/77] [SHIMGVW] Dynamically allocate the string for the file-type box. Patch by Ricardo Hanke. CORE-7702 #resolve svn path=/trunk/; revision=65602 --- reactos/dll/win32/shimgvw/shimgvw.c | 45 ++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/reactos/dll/win32/shimgvw/shimgvw.c b/reactos/dll/win32/shimgvw/shimgvw.c index 1c1ea76b014..e9124bffc25 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.c +++ b/reactos/dll/win32/shimgvw/shimgvw.c @@ -76,7 +76,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 +84,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 +95,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,6 +155,7 @@ static void pSaveImageAs(HWND hwnd) } } + free(szFilterMask); free(codecInfo); } From 4afe020ac6254b86578820e1d3f1ae47cc87aeaf Mon Sep 17 00:00:00 2001 From: David Quintana Date: Thu, 11 Dec 2014 16:32:07 +0000 Subject: [PATCH 33/77] [EXPLORER] * Cleanup variable names and fix a few typos along the way. * Refactor the start button code into a CStartButton class. NOTE: There is a known regression with start button themeing, which I'm working on. The missing notification icons are not caused by this. CORE-8898 svn path=/trunk/; revision=65603 --- reactos/base/shell/explorer/desktop.cpp | 33 +- reactos/base/shell/explorer/precomp.h | 2 +- reactos/base/shell/explorer/startctxmnu.cpp | 48 +- reactos/base/shell/explorer/startmnusite.cpp | 9 +- reactos/base/shell/explorer/taskband.cpp | 66 +- reactos/base/shell/explorer/taskswnd.cpp | 389 +++--- reactos/base/shell/explorer/tbsite.cpp | 175 +-- reactos/base/shell/explorer/trayntfy.cpp | 26 +- reactos/base/shell/explorer/traywnd.cpp | 1240 +++++++++--------- 9 files changed, 953 insertions(+), 1035 deletions(-) diff --git a/reactos/base/shell/explorer/desktop.cpp b/reactos/base/shell/explorer/desktop.cpp index e15a632cba2..31ecbed6164 100644 --- a/reactos/base/shell/explorer/desktop.cpp +++ b/reactos/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/reactos/base/shell/explorer/precomp.h b/reactos/base/shell/explorer/precomp.h index 7ed7549b6b2..544a4f6ebc0 100644 --- a/reactos/base/shell/explorer/precomp.h +++ b/reactos/base/shell/explorer/precomp.h @@ -1,7 +1,7 @@ #ifndef _EXPLORER_PRECOMP__H_ #define _EXPLORER_PRECOMP__H_ -#define WIN7_COMPAT_MODE 0 +#define WIN7_COMPAT_MODE 1 #include #include diff --git a/reactos/base/shell/explorer/startctxmnu.cpp b/reactos/base/shell/explorer/startctxmnu.cpp index 4e625f1d190..071fc541d9f 100644 --- a/reactos/base/shell/explorer/startctxmnu.cpp +++ b/reactos/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/reactos/base/shell/explorer/startmnusite.cpp b/reactos/base/shell/explorer/startmnusite.cpp index 18198dbc0a7..6d7f6a70eac 100644 --- a/reactos/base/shell/explorer/startmnusite.cpp +++ b/reactos/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; @@ -87,7 +86,7 @@ public: TRACE("ITrayPriv::Execute\n"); - ret = SHInvokeDefaultCommand(Tray->GetHWND(), pShellFolder, pidl); + ret = SHInvokeDefaultCommand(m_Tray->GetHWND(), pShellFolder, pidl); return ret; } @@ -375,7 +374,7 @@ public: HRESULT Initialize(IN ITrayWindow *tray) { - Tray = tray; + m_Tray = tray; return S_OK; } diff --git a/reactos/base/shell/explorer/taskband.cpp b/reactos/base/shell/explorer/taskband.cpp index 91228b244bb..b5100e74b5a 100644 --- a/reactos/base/shell/explorer/taskband.cpp +++ b/reactos/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, @@ -277,17 +277,17 @@ public: TRACE("ITaskBand::SetSite(0x%p)\n", pUnkSite); /* Release the current site */ - if (punkSite != NULL) + if (m_Site != NULL) { - punkSite->Release(); + m_Site->Release(); } - punkSite = NULL; - hWnd = NULL; + m_Site = NULL; + m_hWnd = NULL; if (pUnkSite != NULL) { - IOleWindow *OleWindow; + CComPtr OleWindow; /* Check if the site supports IOleWindow */ hRet = pUnkSite->QueryInterface(IID_PPV_ARG(IOleWindow, &OleWindow)); @@ -295,31 +295,29 @@ public: { HWND hWndParent = NULL; - hRet = OleWindow->GetWindow( - &hWndParent); + 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) + m_hWnd = CreateTaskSwitchWnd(hWndParent, m_Tray); + if (m_hWnd != NULL) { - punkSite = pUnkSite; + m_Site = 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); + } } return hRet; @@ -331,9 +329,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 +354,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 +372,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/reactos/base/shell/explorer/taskswnd.cpp b/reactos/base/shell/explorer/taskswnd.cpp index 3eb55a229f2..9af02e3a94b 100644 --- a/reactos/base/shell/explorer/taskswnd.cpp +++ b/reactos/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,28 +1283,28 @@ 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); RegisterShellHook(m_hWnd, 3); /* 1 if no NT! We're targeting NT so we don't care! */ @@ -1327,12 +1321,12 @@ public: LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - IsDestroying = TRUE; + m_IsDestroying = TRUE; /* Unregister the shell hook */ RegisterShellHook(m_hWnd, FALSE); - CloseThemeData(TaskBandTheme); + CloseThemeData(m_Theme); DeleteAllTasks(); return TRUE; } @@ -1408,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: @@ -1446,7 +1440,7 @@ public: VOID EnableGrouping(IN BOOL bEnable) { - IsGroupingEnabled = bEnable; + m_IsGroupingEnabled = bEnable; /* Collapse or expand groups if neccessary */ UpdateButtonsSize(FALSE); @@ -1460,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"); @@ -1504,7 +1498,7 @@ public: PTASK_ITEM TaskItem; PTASK_GROUP TaskGroup; - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { TaskGroup = FindTaskGroupByIndex((INT) wIndex); if (TaskGroup != NULL && TaskGroup->IsCollapsed) @@ -1535,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 @@ -1553,7 +1547,7 @@ public: { PTASK_ITEM TaskItem; PTASK_GROUP TaskGroup; - if (IsGroupingEnabled) + if (m_IsGroupingEnabled) { TaskGroup = FindTaskGroupByIndex((INT) wIndex); if (TaskGroup != NULL && TaskGroup->IsCollapsed) @@ -1593,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, @@ -1604,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; @@ -1679,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); } @@ -1697,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 */ @@ -1722,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)); } @@ -1734,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); } @@ -1743,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); } @@ -1754,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; @@ -1769,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); @@ -1783,7 +1777,7 @@ public: { ForwardContextMenuMsg: /* Forward message */ - Ret = SendMessage(Tray->GetHWND(), uMsg, wParam, lParam); + Ret = SendMessage(m_Tray->GetHWND(), uMsg, wParam, lParam); } return Ret; } @@ -1795,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); @@ -1834,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/reactos/base/shell/explorer/tbsite.cpp b/reactos/base/shell/explorer/tbsite.cpp index c5924564a63..41574db90dd 100644 --- a/reactos/base/shell/explorer/tbsite.cpp +++ b/reactos/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,8 +348,7 @@ public: /*******************************************************************/ - virtual HRESULT STDMETHODCALLTYPE AddBand( - IN IUnknown *punk) + virtual HRESULT STDMETHODCALLTYPE AddBand(IN IUnknown *punk) { IOleCommandTarget *pOct; HRESULT hRet; @@ -372,17 +368,14 @@ public: 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 +388,7 @@ public: HRESULT hRet; IDeskBand *pstb = NULL; - hRet = BandSite->QueryBand( + hRet = m_BandSite->QueryBand( dwBandID, &pstb, pdwState, @@ -404,7 +397,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 +424,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 +438,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 +482,7 @@ public: #else if (!HasTaskBand()) { - return BandSite->AddBand(TaskBand); + return m_BandSite->AddBand(m_TaskBand); } return S_OK; @@ -499,27 +491,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 +510,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 +532,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 +553,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 +593,7 @@ public: return Stream; } - virtual IStream * - GetDefaultBandsStream(IN DWORD grfMode) + virtual IStream * GetDefaultBandsStream(IN DWORD grfMode) { HKEY hkStreams; IStream *Stream = NULL; @@ -679,46 +652,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 +703,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 +722,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 +739,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 +759,7 @@ public: TRUE); } - *phWndRebar = hWndRebar; + *phWndRebar = m_Rebar; return S_OK; } diff --git a/reactos/base/shell/explorer/trayntfy.cpp b/reactos/base/shell/explorer/trayntfy.cpp index bd53da0dda9..a46a8279ff1 100644 --- a/reactos/base/shell/explorer/trayntfy.cpp +++ b/reactos/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/reactos/base/shell/explorer/traywnd.cpp b/reactos/base/shell/explorer/traywnd.cpp index 378c4de4953..0969fcabe8a 100644 --- a/reactos/base/shell/explorer/traywnd.cpp +++ b/reactos/base/shell/explorer/traywnd.cpp @@ -63,6 +63,295 @@ 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; + HBITMAP m_Bitmap; + +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); + + if (m_Bitmap != NULL) + DeleteObject(m_Bitmap); + } + + HFONT GetFont() + { + return m_Font; + } + + SIZE GetSize() + { + return m_Size; + } + + VOID UpdateSize() + { + SIZE Size = { 0, 0 }; + + if (m_ImageList == NULL || + !SendMessage(BCM_GETIDEALSIZE, 0, (LPARAM) &Size)) + { + Size.cx = GetSystemMetrics(SM_CXEDGE); + Size.cy = GetSystemMetrics(SM_CYEDGE); + + if (m_Bitmap == NULL) + { + m_Bitmap = (HBITMAP) SendMessage(BM_GETIMAGE, IMAGE_BITMAP, 0); + } + + if (m_Bitmap != NULL) + { + BITMAP bmp; + + if (GetObject(m_Bitmap, 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) + { + m_ImageList = ImageList_Create(IconSize.cx, + IconSize.cy, + ILC_COLOR32 | ILC_MASK, + 1, + 1); + if (m_ImageList != NULL) + { + int s = ImageList_ReplaceIcon(m_ImageList, -1, hIconStart); + if (s >= 0) + { + return TRUE; + } + + /* Failed to add the icon! */ + ImageList_Destroy(m_ImageList); + m_ImageList = NULL; + } + } + + return FALSE; + } + + 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); + + 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 (SendMessage(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); + } + else + { + /* 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 hbmOld; + + m_Bitmap = CreateBitmap(); + if (m_Bitmap != NULL) + { + hbmOld = (HBITMAP) SendMessage(BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) m_Bitmap); + + if (hbmOld != NULL) + DeleteObject(hbmOld); + } + } + + UpdateSize(); + } +}; + class CTrayWindow : public CComCoClass, public CComObjectRootEx, @@ -70,48 +359,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 +415,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 +476,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 +492,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 +626,7 @@ GetPrimaryRect: OUT RECT *pRect) { if (pTraySize == NULL) - pTraySize = &TraySize; + pTraySize = &m_TraySize; *pRect = *pScreen; @@ -381,14 +638,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 +701,7 @@ GetPrimaryRect: #endif - DWORD - GetDraggingRectFromPt( + DWORD GetDraggingRectFromPt( IN POINT pt, OUT RECT *pRect, OUT HMONITOR *phMonitor) @@ -525,28 +779,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 +805,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 +820,7 @@ GetPrimaryScreenRect: return Pos; } - DWORD - GetDraggingRectFromRect( + DWORD GetDraggingRectFromRect( IN OUT RECT *pRect, OUT HMONITOR *phMonitor) { @@ -588,9 +838,7 @@ GetPrimaryScreenRect: phMonitor); } - VOID - ChangingWinPos( - IN OUT LPWINDOWPOS pwp) + VOID ChangingWinPos(IN OUT LPWINDOWPOS pwp) { RECT rcTray; @@ -602,33 +850,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 +895,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 +904,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 +959,7 @@ ChangePos: { rcClip = rcWindow; - GetScreenRect(Monitor, &rcClip); + GetScreenRect(m_Monitor, &rcClip); if (!IntersectRect(&rcClip, &rcClip, &rcWindow)) { @@ -742,29 +987,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 +1033,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 +1066,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 +1096,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 +1115,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 +1160,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 +1172,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 +1300,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 +1308,7 @@ DefSize: BOOL Horizontal; HDWP dwp; - UpdateStartButton(NULL); + m_StartButton.UpdateSize(); if (prcClient != NULL) { rcClient = *prcClient; @@ -1140,15 +1330,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 +1361,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 +1374,7 @@ DefSize: ptTrayNotify.y = rcClient.bottom - TraySize.cy; dwp = DeferWindowPos(dwp, - hwndTrayNotify, + m_TrayNotify, NULL, ptTrayNotify.x, ptTrayNotify.y, @@ -1196,12 +1386,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 +1407,7 @@ DefSize: } dwp = DeferWindowPos(dwp, - hwndRebar, + m_Rebar, NULL, ptRebar.x, ptRebar.y, @@ -1229,186 +1419,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; - - DrawCaptionTemp(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); } @@ -1444,34 +1472,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, @@ -1485,75 +1504,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,11 +1541,11 @@ SetStartBtnImage: AlignControls( NULL); - InitShellServices(&(hdpaShellServices)); + InitShellServices(&(m_ShellServices)); if (AutoHide) { - AutoHideState = AUTOHIDE_HIDING; + m_AutoHideState = AUTOHIDE_HIDING; SetTimer(TIMER_ID_AUTOHIDE, AUTOHIDE_DELAY_HIDE, NULL); } @@ -1617,8 +1591,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; @@ -1647,7 +1621,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 @@ -1659,9 +1633,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() @@ -1669,7 +1643,7 @@ SetStartBtnImage: HWND hwnd; RECT posRect; - GetWindowRect(StartButton.m_hWnd, &posRect); + GetWindowRect(m_StartButton.m_hWnd, &posRect); hwnd = CreateWindowEx(0, WC_STATIC, NULL, @@ -1683,11 +1657,11 @@ SetStartBtnImage: NULL, NULL); - hwndTrayPropertiesOwner = hwnd; + m_TrayPropertiesOwner = hwnd; DisplayTrayProperties(hwnd); - hwndTrayPropertiesOwner = NULL; + m_TrayPropertiesOwner = NULL; DestroyWindow(); return 0; @@ -1704,11 +1678,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; @@ -1822,10 +1796,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; @@ -1844,10 +1817,10 @@ SetStartBtnImage: GetClientRect(&rect); - if (TaskbarTheme) + if (m_Theme) { GetClientRect(&rect); - switch (Position) + switch (m_Position) { case ABE_LEFT: partId = TBP_BACKGROUNDLEFT; @@ -1864,7 +1837,7 @@ SetStartBtnImage: break; } - DrawThemeBackground(TaskbarTheme, hdc, partId, 0, &rect, 0); + DrawThemeBackground(m_Theme, hdc, partId, 0, &rect, 0); } return TRUE; @@ -1874,7 +1847,7 @@ SetStartBtnImage: { HDC hdc = (HDC) wParam; - if (!TaskbarTheme) + if (!m_Theme) { bHandled = FALSE; return 0; @@ -1894,7 +1867,7 @@ SetStartBtnImage: hdc = GetDCEx(m_hWnd, hRgn, DCX_WINDOW | DCX_INTERSECTRGN | DCX_PARENTCLIP); - switch (Position) + switch (m_Position) { case ABE_LEFT: backoundPart = TBP_SIZINGBARLEFT; @@ -1915,7 +1888,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,7 +1899,7 @@ SetStartBtnImage: HWND hwnd; RECT posRect; - GetWindowRect(StartButton.m_hWnd, &posRect); + GetWindowRect(m_StartButton.m_hWnd, &posRect); hwnd = CreateWindowEx(0, WC_STATIC, @@ -1941,11 +1914,11 @@ SetStartBtnImage: NULL, NULL); - hwndRunFileDlgOwner = hwnd; + m_RunFileDlgOwner = hwnd; RunFileDlg(hwnd, NULL, NULL, NULL, NULL, RFF_CALCDIRECTORY); - hwndRunFileDlgOwner = NULL; + m_RunFileDlgOwner = NULL; ::DestroyWindow(hwnd); return 0; @@ -1960,11 +1933,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; @@ -1976,15 +1949,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; @@ -2004,12 +1977,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); } } } @@ -2019,13 +1989,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; } @@ -2035,13 +2005,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); } } @@ -2050,13 +2020,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); } @@ -2066,44 +2036,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; @@ -2112,58 +2082,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; @@ -2173,16 +2143,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); } @@ -2202,7 +2172,7 @@ SetStartBtnImage: LRESULT OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - if (hwndTrayNotify) + if (m_TrayNotify) { TrayNotify_NotifyMsg(wParam, lParam); } @@ -2211,7 +2181,7 @@ SetStartBtnImage: LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - if (!TaskbarTheme) + if (!m_Theme) { bHandled = FALSE; return 0; @@ -2255,7 +2225,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) @@ -2293,21 +2263,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; @@ -2319,18 +2286,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; @@ -2436,15 +2403,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); } } @@ -2485,23 +2449,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; @@ -2511,19 +2475,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; @@ -2549,18 +2512,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) { @@ -2605,13 +2568,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 { @@ -2715,13 +2678,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)) { @@ -2808,7 +2771,7 @@ HandleTrayContextMenu: szWindow.cy - szTarget.cx, }; - switch (Position) + switch (m_Position) { case ABE_LEFT: szWindow.cx = szActual.cx + borders.cx; @@ -2836,7 +2799,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; @@ -2846,7 +2809,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; } @@ -2895,18 +2858,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); @@ -2921,15 +2879,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); @@ -2965,7 +2923,7 @@ HandleTrayContextMenu: { TRACE("IShellDesktopTray::RegisterDesktopWindow(0x%p)\n", hWndDesktop); - this->hWndDesktop = hWndDesktop; + m_DesktopWnd = hWndDesktop; return S_OK; } @@ -2977,13 +2935,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) @@ -3058,9 +3016,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, From 71a780a54cdc6cba450a861a1af5d4f5bec65731 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Thu, 11 Dec 2014 16:33:43 +0000 Subject: [PATCH 34/77] Oops. That didn't happen. svn path=/trunk/; revision=65604 --- reactos/base/shell/explorer/precomp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/shell/explorer/precomp.h b/reactos/base/shell/explorer/precomp.h index 544a4f6ebc0..7ed7549b6b2 100644 --- a/reactos/base/shell/explorer/precomp.h +++ b/reactos/base/shell/explorer/precomp.h @@ -1,7 +1,7 @@ #ifndef _EXPLORER_PRECOMP__H_ #define _EXPLORER_PRECOMP__H_ -#define WIN7_COMPAT_MODE 1 +#define WIN7_COMPAT_MODE 0 #include #include From 502f155b91f94f2713e75eecfb7bbd70bf429113 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Thu, 11 Dec 2014 17:42:56 +0000 Subject: [PATCH 35/77] [EXPLORER] - Simplify some code by using the IUnknown_ exports of shlwapi and using CComPtr. svn path=/trunk/; revision=65605 --- reactos/base/shell/explorer/taskband.cpp | 54 +++++++----------------- reactos/base/shell/explorer/tbsite.cpp | 20 ++------- 2 files changed, 18 insertions(+), 56 deletions(-) diff --git a/reactos/base/shell/explorer/taskband.cpp b/reactos/base/shell/explorer/taskband.cpp index b5100e74b5a..d925c58049c 100644 --- a/reactos/base/shell/explorer/taskband.cpp +++ b/reactos/base/shell/explorer/taskband.cpp @@ -272,55 +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 (m_Site != NULL) + hRet = IUnknown_GetWindow(pUnkSite, &hwndSite); + if (FAILED(hRet)) { - m_Site->Release(); + TRACE("Querying site window failed: 0x%x\n", hRet); + return hRet; } - m_Site = NULL; - m_hWnd = NULL; + TRACE("CreateTaskSwitchWnd(Parent: 0x%p)\n", hwndSite); - if (pUnkSite != NULL) + HWND hwndTaskSwitch = CreateTaskSwitchWnd(hwndSite, m_Tray); + if (!hwndTaskSwitch) { - CComPtr 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); - m_hWnd = CreateTaskSwitchWnd(hWndParent, m_Tray); - if (m_hWnd != NULL) - { - m_Site = pUnkSite; - hRet = S_OK; - } - else - { - TRACE("CreateTaskSwitchWnd() failed!\n"); - hRet = E_FAIL; - } - } - } - 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( diff --git a/reactos/base/shell/explorer/tbsite.cpp b/reactos/base/shell/explorer/tbsite.cpp index 41574db90dd..93e38a7085a 100644 --- a/reactos/base/shell/explorer/tbsite.cpp +++ b/reactos/base/shell/explorer/tbsite.cpp @@ -350,23 +350,9 @@ public: virtual HRESULT STDMETHODCALLTYPE AddBand(IN IUnknown *punk) { - IOleCommandTarget *pOct; - HRESULT hRet; - - 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(); - } + /* 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); return m_BandSite->AddBand(punk); } From 16c3dc3016fd83474860759b235101b8f0a9fe9a Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Thu, 11 Dec 2014 18:00:21 +0000 Subject: [PATCH 36/77] test svn path=/trunk/; revision=65606 --- reactos/hello | 1 + 1 file changed, 1 insertion(+) create mode 100644 reactos/hello diff --git a/reactos/hello b/reactos/hello new file mode 100644 index 00000000000..ce013625030 --- /dev/null +++ b/reactos/hello @@ -0,0 +1 @@ +hello From f758aece6fe319769ad2b49185f67832d95f438f Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Thu, 11 Dec 2014 18:11:08 +0000 Subject: [PATCH 37/77] [SHIMGVW] Fix tooltips for image viewer at least on Windows. Patch by Richardo Hanke. CORE-7740 #resolve svn path=/trunk/; revision=65607 --- reactos/dll/win32/shimgvw/shimgvw.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/dll/win32/shimgvw/shimgvw.c b/reactos/dll/win32/shimgvw/shimgvw.c index e9124bffc25..65f48c34204 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.c +++ b/reactos/dll/win32/shimgvw/shimgvw.c @@ -451,6 +451,7 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) lpttt = (LPTOOLTIPTEXT)lParam; idButton = (UINT)lpttt->hdr.idFrom; + lpttt->hinst = hInstance; switch (idButton) { From cbc7920dbe25ae0e3d206431059fe1f6dc9da73a Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Thu, 11 Dec 2014 19:52:47 +0000 Subject: [PATCH 38/77] [CORE-7737] Implement browsing with the shell image viewer. Patch by Ricardo Hanke. svn path=/trunk/; revision=65608 --- reactos/dll/win32/shimgvw/CMakeLists.txt | 2 +- reactos/dll/win32/shimgvw/shimgvw.c | 183 +++++++++++++++++++++++ reactos/dll/win32/shimgvw/shimgvw.h | 7 + 3 files changed, 191 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/shimgvw/CMakeLists.txt b/reactos/dll/win32/shimgvw/CMakeLists.txt index c923f33bc80..be17accfd3c 100644 --- a/reactos/dll/win32/shimgvw/CMakeLists.txt +++ b/reactos/dll/win32/shimgvw/CMakeLists.txt @@ -10,5 +10,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/reactos/dll/win32/shimgvw/shimgvw.c b/reactos/dll/win32/shimgvw/shimgvw.c index 65f48c34204..b6e10d3f09f 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.c +++ b/reactos/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; @@ -159,6 +161,166 @@ static void pSaveImageAs(HWND hwnd) 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_DrawImage(HWND hwnd) { @@ -410,9 +572,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: @@ -522,6 +692,7 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName) ULONG_PTR gdiplusToken; WNDCLASS WndClass = {0}; TCHAR szBuf[512]; + WCHAR szInitialFile[MAX_PATH]; HWND hMainWnd; MSG msg; @@ -560,6 +731,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); @@ -571,6 +752,8 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName) DispatchMessageW(&msg); } + pFreeFileList(currentFile); + if (image) GdipDisposeImage(image); GdiplusShutdown(gdiplusToken); diff --git a/reactos/dll/win32/shimgvw/shimgvw.h b/reactos/dll/win32/shimgvw/shimgvw.h index 47135ead049..9bce39c6cbf 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.h +++ b/reactos/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; From 0188f94d85c2cec20b033cdda474213b9c2e816f Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Thu, 11 Dec 2014 19:57:03 +0000 Subject: [PATCH 39/77] [CORE-8302] Fix aspect ratio calculation in shell image viewer. Patch by Ricardo Hanke. svn path=/trunk/; revision=65609 --- reactos/dll/win32/shimgvw/shimgvw.c | 56 +++++------------------------ 1 file changed, 9 insertions(+), 47 deletions(-) diff --git a/reactos/dll/win32/shimgvw/shimgvw.c b/reactos/dll/win32/shimgvw/shimgvw.c index b6e10d3f09f..2aab4809a89 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.c +++ b/reactos/dll/win32/shimgvw/shimgvw.c @@ -352,65 +352,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); From c960788a1d5fec49b3f417f241566af4cb11d366 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Thu, 11 Dec 2014 20:01:52 +0000 Subject: [PATCH 40/77] [SHIMGVW] Implement rotation of images, but does not save changes or warn of quality loss. CORE-7567 svn path=/trunk/; revision=65610 --- reactos/dll/win32/shimgvw/shimgvw.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/reactos/dll/win32/shimgvw/shimgvw.c b/reactos/dll/win32/shimgvw/shimgvw.c index 2aab4809a89..6a20ac28732 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.c +++ b/reactos/dll/win32/shimgvw/shimgvw.c @@ -321,6 +321,13 @@ pFreeFileList(SHIMGVW_FILENODE *root) } } +static VOID +ImageView_UpdateWindow(HWND hwnd) +{ + InvalidateRect(hwnd, NULL, FALSE); + UpdateWindow(hwnd); +} + static VOID ImageView_DrawImage(HWND hwnd) { @@ -561,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; } From 4b301b04e1843cd04f1b51bc7fe97f2895504278 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Thu, 11 Dec 2014 21:18:36 +0000 Subject: [PATCH 41/77] [EXPLORER] * Use LoadLibrary instead of GetModuleHandle in the wrapper of WinList_Init. * Shdocvw was never loaded till that point so WinList_Init was not called. * Should fix Opening link location in windows. svn path=/trunk/; revision=65611 --- reactos/base/shell/explorer/rshell.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/shell/explorer/rshell.cpp b/reactos/base/shell/explorer/rshell.cpp index 49e2352153c..9e35490cb3c 100644 --- a/reactos/base/shell/explorer/rshell.cpp +++ b/reactos/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) { From 00abdbc36f46f1b900fda30052be0840a7734791 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Thu, 11 Dec 2014 21:58:45 +0000 Subject: [PATCH 42/77] [NTFS] My dear Pierre, in FSCTL_GET_NTFS_FILE_RECORD, you have METHOD_BUFFERED (yes, read well ;-)). So if you want it to work, you HAVE to return the size of the data you wrote to the output buffer... This makes FSCTL_GET_NTFS_FILE_RECORD finally working in ReactOS... nfi.exe finally goes a bit farther, displays some files names and dies. Definitely still needs love. CORE-8725 svn path=/trunk/; revision=65612 --- reactos/drivers/filesystems/ntfs/fsctl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index 31cabb45996..a9f645b894a 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -650,6 +650,8 @@ 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; } @@ -699,6 +701,8 @@ NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, Stack = IoGetCurrentIrpStackLocation(Irp); + Irp->IoStatus.Information = 0; + switch (Stack->MinorFunction) { case IRP_MN_KERNEL_CALL: @@ -727,7 +731,6 @@ NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, } Irp->IoStatus.Status = Status; - Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); From 5bf209a1aae7eff77765d14e7bbee5bbcd8070ad Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Thu, 11 Dec 2014 22:15:49 +0000 Subject: [PATCH 43/77] =?UTF-8?q?[NTFS]=20Ach!=20Wir=20k=C3=B6nnen=20noch?= =?UTF-8?q?=20nicht=20mit=20dem=20ID=20=C3=B6ffnen!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit So far, bail out when we are requested to open a file with its MFT index instead of its name. nfi triggers this a lot. Likely to be implemented ;-) CORE-8725 svn path=/trunk/; revision=65613 --- reactos/drivers/filesystems/ntfs/create.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/create.c b/reactos/drivers/filesystems/ntfs/create.c index 9e1574b227d..5ed31964e01 100644 --- a/reactos/drivers/filesystems/ntfs/create.c +++ b/reactos/drivers/filesystems/ntfs/create.c @@ -186,6 +186,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 || From 51fa01cea7b1cb000555a982369eeeb7c8db8c23 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 12 Dec 2014 13:08:59 +0000 Subject: [PATCH 44/77] [SHIMGVW] Fix DLL stubs, intended to fix a crash on Windows. Patch by Ricardo Hanke. CORE-8073 #resolve #comment Committed in r65614. Thanks! svn path=/trunk/; revision=65614 --- reactos/dll/win32/shimgvw/CMakeLists.txt | 1 + reactos/dll/win32/shimgvw/comsup.c | 58 ++++++++++++++++++++++++ reactos/dll/win32/shimgvw/comsup.h | 4 ++ reactos/dll/win32/shimgvw/shimgvw.spec | 8 ++-- 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 reactos/dll/win32/shimgvw/comsup.c create mode 100644 reactos/dll/win32/shimgvw/comsup.h diff --git a/reactos/dll/win32/shimgvw/CMakeLists.txt b/reactos/dll/win32/shimgvw/CMakeLists.txt index be17accfd3c..8895a0b654d 100644 --- a/reactos/dll/win32/shimgvw/CMakeLists.txt +++ b/reactos/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) diff --git a/reactos/dll/win32/shimgvw/comsup.c b/reactos/dll/win32/shimgvw/comsup.c new file mode 100644 index 00000000000..473d634cb15 --- /dev/null +++ b/reactos/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/reactos/dll/win32/shimgvw/comsup.h b/reactos/dll/win32/shimgvw/comsup.h new file mode 100644 index 00000000000..9ac6d856c5c --- /dev/null +++ b/reactos/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/reactos/dll/win32/shimgvw/shimgvw.spec b/reactos/dll/win32/shimgvw/shimgvw.spec index 427eaa4ca7c..fd06419ee2c 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.spec +++ b/reactos/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() From 395dc9ef1f1090507338331aa998ec9433ce6b23 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 12 Dec 2014 13:17:16 +0000 Subject: [PATCH 45/77] [W32KDLL_APITESTS] Properly handle ASM files. Also use set_module_type() instead of manually setting the entry point. svn path=/trunk/; revision=65615 --- rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt | 3 ++- rostests/apitests/w32kdll/w32kdll_2ksp4/CMakeLists.txt | 5 +++-- rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt | 3 ++- rostests/apitests/w32kdll/w32kdll_vista/CMakeLists.txt | 7 ++++--- rostests/apitests/w32kdll/w32kdll_xpsp2/CMakeLists.txt | 3 ++- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt index d31f3ddc800..6ca670f5bc3 100644 --- a/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt @@ -1,9 +1,10 @@ spec2def(w32kdll_2k3sp2.dll w32kdll_2k3sp2.spec ADD_IMPORTLIB) +add_asm_files(w32kdll_2k3sp2_asm sys-stubs.S) add_library(w32kdll_2k3sp2 SHARED main.c - sys-stubs.S + ${w32kdll_2k3sp2_asm} ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_2k3sp2.def) set_module_type(w32kdll_2k3sp2 module) diff --git a/rostests/apitests/w32kdll/w32kdll_2ksp4/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_2ksp4/CMakeLists.txt index e5cd02dc7c7..468261da257 100644 --- a/rostests/apitests/w32kdll/w32kdll_2ksp4/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_2ksp4/CMakeLists.txt @@ -1,10 +1,11 @@ spec2def(w32kdll_2ksp4.dll w32kdll_2ksp4.spec) +add_asm_files(w32kdll_2ksp4_asm w32kdll_2ksp4.S) add_library(w32kdll_2ksp4 SHARED main.c - w32kdll_2ksp4.S + ${w32kdll_2ksp4_asm} ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_2ksp4.def) -set_entrypoint(w32kdll_2ksp4 0) +set_module_type(w32kdll_2ksp4 module) add_dependencies(w32kdll_2ksp4 psdk) diff --git a/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt index 4bd16afbf43..9048fe8266f 100644 --- a/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt @@ -1,9 +1,10 @@ spec2def(w32kdll_ros.dll w32kdll_ros.spec ADD_IMPORTLIB) +add_asm_files(w32kdll_ros_asm sys-stubs.S) add_library(w32kdll_ros SHARED main.c - sys-stubs.S + ${w32kdll_ros_asm} ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_ros.def) set_module_type(w32kdll_ros module) diff --git a/rostests/apitests/w32kdll/w32kdll_vista/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_vista/CMakeLists.txt index c0e5c85c53b..54553bb1b58 100644 --- a/rostests/apitests/w32kdll/w32kdll_vista/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_vista/CMakeLists.txt @@ -1,10 +1,11 @@ spec2def(w32kdll_vista.spec w32kdll_vista.spec ADD_IMPORTLIB) +add_asm_files(w32kdll_vista_asm w32kdll_vista.S) add_library(w32kdll_vista SHARED main.c - w32kdll_vista.S + ${w32kdll_vista_asm} ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_vista.def) -set_entrypoint(w32kdll_vista 0) -add_dependencies(w32kdll_vista psdk ) +set_module_type(w32kdll_vista module) +add_dependencies(w32kdll_vista psdk) diff --git a/rostests/apitests/w32kdll/w32kdll_xpsp2/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_xpsp2/CMakeLists.txt index 515c31ff333..a59ef59f6e4 100644 --- a/rostests/apitests/w32kdll/w32kdll_xpsp2/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_xpsp2/CMakeLists.txt @@ -1,9 +1,10 @@ spec2def(w32kdll_xpsp2.dll w32kdll_xpsp2.spec ADD_IMPORTLIB) +add_asm_files(w32kdll_xpsp2_asm sys-stubs.S) add_library(w32kdll_xpsp2 SHARED main.c - sys-stubs.S + ${w32kdll_xpsp2_asm} ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_xpsp2.def) set_module_type(w32kdll_xpsp2 module) From db0d247c82a1c58773343401fbc3d6d45c8a0199 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 12 Dec 2014 13:20:14 +0000 Subject: [PATCH 46/77] [CRT] Explicitly mark strncpy and wcsncpy as __cdecl. svn path=/trunk/; revision=65616 --- reactos/include/crt/string.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reactos/include/crt/string.h b/reactos/include/crt/string.h index 219bf0e4031..ef659029c84 100644 --- a/reactos/include/crt/string.h +++ b/reactos/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, From fd0186b855a9fc2aaf53de2c353a7834d387a227 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 12 Dec 2014 13:23:45 +0000 Subject: [PATCH 47/77] [USER32] We're not using any debugging routines here. svn path=/trunk/; revision=65617 --- reactos/win32ss/user/user32/misc/rtlstr.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/reactos/win32ss/user/user32/misc/rtlstr.c b/reactos/win32ss/user/user32/misc/rtlstr.c index b6cb95821ea..db9d43f63f1 100644 --- a/reactos/win32ss/user/user32/misc/rtlstr.c +++ b/reactos/win32ss/user/user32/misc/rtlstr.c @@ -11,10 +11,6 @@ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(user32); - /* FUNCTIONS *****************************************************************/ VOID NTAPI From 5e63339a90f258399c0008832b5d25898439e543 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Fri, 12 Dec 2014 16:28:46 +0000 Subject: [PATCH 48/77] [EXPLORER] * Followup to t65603. Fixes the start menu themeing regression (when running explorer in windows 2003). CORE-8898 #resolve svn path=/trunk/; revision=65618 --- reactos/base/shell/explorer/traywnd.cpp | 114 ++++++++++++------------ 1 file changed, 55 insertions(+), 59 deletions(-) diff --git a/reactos/base/shell/explorer/traywnd.cpp b/reactos/base/shell/explorer/traywnd.cpp index 0969fcabe8a..0d8605eef5a 100644 --- a/reactos/base/shell/explorer/traywnd.cpp +++ b/reactos/base/shell/explorer/traywnd.cpp @@ -69,7 +69,6 @@ class CStartButton HIMAGELIST m_ImageList; SIZE m_Size; HFONT m_Font; - HBITMAP m_Bitmap; public: CStartButton(CMessageMap *pObject, DWORD dwMsgMapID) @@ -84,9 +83,6 @@ public: if (m_Font != NULL) DeleteObject(m_Font); - - if (m_Bitmap != NULL) - DeleteObject(m_Bitmap); } HFONT GetFont() @@ -99,26 +95,26 @@ public: return m_Size; } - VOID UpdateSize() + VOID UpdateSize(IN HBITMAP hbmStart = NULL) { SIZE Size = { 0, 0 }; if (m_ImageList == NULL || - !SendMessage(BCM_GETIDEALSIZE, 0, (LPARAM) &Size)) + !SendMessageW(BCM_GETIDEALSIZE, 0, (LPARAM) &Size)) { Size.cx = GetSystemMetrics(SM_CXEDGE); Size.cy = GetSystemMetrics(SM_CYEDGE); - if (m_Bitmap == NULL) + if (hbmStart == NULL) { - m_Bitmap = (HBITMAP) SendMessage(BM_GETIMAGE, IMAGE_BITMAP, 0); + hbmStart = (HBITMAP) SendMessageW(BM_GETIMAGE, IMAGE_BITMAP, 0); } - if (m_Bitmap != NULL) + if (hbmStart != NULL) { BITMAP bmp; - if (GetObject(m_Bitmap, sizeof(bmp), &bmp) != 0) + if (GetObject(hbmStart, sizeof(bmp), &bmp) != 0) { Size.cx += bmp.bmWidth; Size.cy += max(bmp.bmHeight, GetSystemMetrics(SM_CYCAPTION)); @@ -160,28 +156,27 @@ DefSize: IconSize.cy, LR_SHARED | LR_DEFAULTCOLOR); - if (hIconStart != NULL) - { - m_ImageList = ImageList_Create(IconSize.cx, - IconSize.cy, - ILC_COLOR32 | ILC_MASK, - 1, - 1); - if (m_ImageList != NULL) - { - int s = ImageList_ReplaceIcon(m_ImageList, -1, hIconStart); - if (s >= 0) - { - return TRUE; - } + if (hIconStart == NULL) + return FALSE; - /* Failed to add the icon! */ - ImageList_Destroy(m_ImageList); - m_ImageList = NULL; - } + 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 FALSE; + return TRUE; } HBITMAP CreateBitmap() @@ -314,41 +309,43 @@ Cleanup: SendMessage(WM_SETFONT, (WPARAM) m_Font, FALSE); - 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 (SendMessage(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); - } - else + 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 hbmOld; - - m_Bitmap = CreateBitmap(); - if (m_Bitmap != NULL) - { - hbmOld = (HBITMAP) SendMessage(BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) m_Bitmap); - - if (hbmOld != NULL) - DeleteObject(hbmOld); - } } - UpdateSize(); + HBITMAP hbmStart = CreateBitmap(); + if (hbmStart != NULL) + { + UpdateSize(hbmStart); + + HBITMAP hbmOld = (HBITMAP) SendMessageW(BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmStart); + + if (hbmOld != NULL) + DeleteObject(hbmOld); + } } }; @@ -1538,8 +1535,7 @@ ChangePos: CheckTrayWndPosition(); /* Align all controls on the tray window */ - AlignControls( - NULL); + AlignControls(NULL); InitShellServices(&(m_ShellServices)); From 57fd9b8882fa05620900187f44439a335d41ef53 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 12 Dec 2014 20:28:20 +0000 Subject: [PATCH 49/77] [Win32k] - Fix double click on application icons. See CORE-3269. svn path=/trunk/; revision=65619 --- reactos/win32ss/user/ntuser/msgqueue.c | 5 +++-- reactos/win32ss/user/user32/windows/menu.c | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/user/ntuser/msgqueue.c b/reactos/win32ss/user/ntuser/msgqueue.c index 1df07359684..9622725bee8 100644 --- a/reactos/win32ss/user/ntuser/msgqueue.c +++ b/reactos/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/reactos/win32ss/user/user32/windows/menu.c b/reactos/win32ss/user/user32/windows/menu.c index d9ec3149a0e..06ce51adff8 100644 --- a/reactos/win32ss/user/user32/windows/menu.c +++ b/reactos/win32ss/user/user32/windows/menu.c @@ -3830,6 +3830,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: From 34dee12ec2e2881be09b42ab009812c86d58391c Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Fri, 12 Dec 2014 21:15:17 +0000 Subject: [PATCH 50/77] [SHIMGV] Fix display window calculation. Patch by Ricardo Hanke. CORE-7656 svn path=/trunk/; revision=65620 --- reactos/dll/win32/shimgvw/shimgvw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/shimgvw/shimgvw.c b/reactos/dll/win32/shimgvw/shimgvw.c index 6a20ac28732..557c925fb30 100644 --- a/reactos/dll/win32/shimgvw/shimgvw.c +++ b/reactos/dll/win32/shimgvw/shimgvw.c @@ -646,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: From aa7bd0b1b7c81c61dad0fdc22f25a613eec7df5a Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Fri, 12 Dec 2014 22:07:29 +0000 Subject: [PATCH 51/77] [DESK.CPL] Modify font enumeration code to deal with failure to read the registry key. Also change the registry key being queried to match the one used on Windows. Patch by Ricardo Hanke. CORE-8203 svn path=/trunk/; revision=65621 --- reactos/dll/cpl/desk/general.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/reactos/dll/cpl/desk/general.c b/reactos/dll/cpl/desk/general.c index 7ec2a9620c2..0858c16f974 100644 --- a/reactos/dll/cpl/desk/general.c +++ b/reactos/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; } } From 7edb9e1657c5d77f852bf87f3d6741837a2fad7b Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sat, 13 Dec 2014 01:18:35 +0000 Subject: [PATCH 52/77] [User32] - Patch by Vincent Povirk : Allow EndMenu() calls from WM_ENTERMENULOOP. - Patch by Akihiro Sagawa : Don't close a popup menu when clicking a sub-menu parent item twice. - Move code to match wines. See CORE-8299. svn path=/trunk/; revision=65622 --- reactos/win32ss/user/user32/windows/menu.c | 261 +++++++++++---------- 1 file changed, 136 insertions(+), 125 deletions(-) diff --git a/reactos/win32ss/user/user32/windows/menu.c b/reactos/win32ss/user/user32/windows/menu.c index 06ce51adff8..74f6fa9acc6 100644 --- a/reactos/win32ss/user/user32/windows/menu.c +++ b/reactos/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); } } @@ -4051,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); @@ -4394,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; } From 8c112bc3e720d7dab6442e5335787688d9158354 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sat, 13 Dec 2014 05:07:58 +0000 Subject: [PATCH 53/77] [EVENTVWR] Display seconds for event time in event viewer. Patch by Lee Schroeder. CORE-8612 svn path=/trunk/; revision=65623 --- reactos/base/applications/mscutils/eventvwr/eventvwr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/mscutils/eventvwr/eventvwr.c b/reactos/base/applications/mscutils/eventvwr/eventvwr.c index ab5709fca75..d6ad6937f38 100644 --- a/reactos/base/applications/mscutils/eventvwr/eventvwr.c +++ b/reactos/base/applications/mscutils/eventvwr/eventvwr.c @@ -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); From e3228a4c6476040240d0272d18b3708b5d9afe08 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sat, 13 Dec 2014 06:35:56 +0000 Subject: [PATCH 54/77] [TASKMGR] Prevent task manager from killing critical processes. Patch by Ismael Ferreras Morezuelas. CORE-3716 svn path=/trunk/; revision=65624 --- reactos/base/applications/taskmgr/endproc.c | 69 ++++++++++++++++--- reactos/base/applications/taskmgr/endproc.h | 1 + .../base/applications/taskmgr/lang/bg-BG.rc | 1 + .../base/applications/taskmgr/lang/cs-CZ.rc | 1 + .../base/applications/taskmgr/lang/da-DK.rc | 1 + .../base/applications/taskmgr/lang/de-DE.rc | 1 + .../base/applications/taskmgr/lang/el-GR.rc | 1 + .../base/applications/taskmgr/lang/en-US.rc | 1 + .../base/applications/taskmgr/lang/es-ES.rc | 1 + .../base/applications/taskmgr/lang/fr-FR.rc | 1 + .../base/applications/taskmgr/lang/he-IL.rc | 1 + .../base/applications/taskmgr/lang/hu-HU.rc | 1 + .../base/applications/taskmgr/lang/id-ID.rc | 1 + .../base/applications/taskmgr/lang/it-IT.rc | 1 + .../base/applications/taskmgr/lang/ja-JP.rc | 1 + .../base/applications/taskmgr/lang/ko-KR.rc | 1 + .../base/applications/taskmgr/lang/nl-NL.rc | 1 + .../base/applications/taskmgr/lang/no-NO.rc | 1 + .../base/applications/taskmgr/lang/pl-PL.rc | 1 + .../base/applications/taskmgr/lang/pt-BR.rc | 1 + .../base/applications/taskmgr/lang/ro-RO.rc | 1 + .../base/applications/taskmgr/lang/ru-RU.rc | 1 + .../base/applications/taskmgr/lang/sk-SK.rc | 1 + .../base/applications/taskmgr/lang/sq-AL.rc | 1 + .../base/applications/taskmgr/lang/sv-SE.rc | 1 + .../base/applications/taskmgr/lang/tr-TR.rc | 1 + .../base/applications/taskmgr/lang/uk-UA.rc | 1 + .../base/applications/taskmgr/lang/zh-CN.rc | 1 + .../base/applications/taskmgr/lang/zh-TW.rc | 1 + reactos/base/applications/taskmgr/resource.h | 1 + 30 files changed, 89 insertions(+), 9 deletions(-) diff --git a/reactos/base/applications/taskmgr/endproc.c b/reactos/base/applications/taskmgr/endproc.c index a26fd764c62..a57290d6e25 100644 --- a/reactos/base/applications/taskmgr/endproc.c +++ b/reactos/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,70 @@ 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); + 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) 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,13 +114,22 @@ 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); + 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) return; - hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); - if (!hProcess) { GetLastErrorText(strErrorText, 260); diff --git a/reactos/base/applications/taskmgr/endproc.h b/reactos/base/applications/taskmgr/endproc.h index 934a4c122be..2351e85967d 100644 --- a/reactos/base/applications/taskmgr/endproc.h +++ b/reactos/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/reactos/base/applications/taskmgr/lang/bg-BG.rc b/reactos/base/applications/taskmgr/lang/bg-BG.rc index 9a381020513..df398ba4575 100644 --- a/reactos/base/applications/taskmgr/lang/bg-BG.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/cs-CZ.rc b/reactos/base/applications/taskmgr/lang/cs-CZ.rc index ac024b8a1f0..5cc62556d72 100644 --- a/reactos/base/applications/taskmgr/lang/cs-CZ.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/da-DK.rc b/reactos/base/applications/taskmgr/lang/da-DK.rc index 26dbe41e104..ca50cf7281f 100644 --- a/reactos/base/applications/taskmgr/lang/da-DK.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/de-DE.rc b/reactos/base/applications/taskmgr/lang/de-DE.rc index bc4cd00169b..a3ae4f57fc8 100644 --- a/reactos/base/applications/taskmgr/lang/de-DE.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/el-GR.rc b/reactos/base/applications/taskmgr/lang/el-GR.rc index 7a65c88db56..e856db030c1 100644 --- a/reactos/base/applications/taskmgr/lang/el-GR.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/en-US.rc b/reactos/base/applications/taskmgr/lang/en-US.rc index d25de52cf73..462a3efe5f0 100644 --- a/reactos/base/applications/taskmgr/lang/en-US.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/es-ES.rc b/reactos/base/applications/taskmgr/lang/es-ES.rc index 768703c8f20..6ee0a360726 100644 --- a/reactos/base/applications/taskmgr/lang/es-ES.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/fr-FR.rc b/reactos/base/applications/taskmgr/lang/fr-FR.rc index 94d3c584a92..8e6e8af8638 100644 --- a/reactos/base/applications/taskmgr/lang/fr-FR.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/he-IL.rc b/reactos/base/applications/taskmgr/lang/he-IL.rc index 518e0b8f9f3..8ff5a137549 100644 --- a/reactos/base/applications/taskmgr/lang/he-IL.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/hu-HU.rc b/reactos/base/applications/taskmgr/lang/hu-HU.rc index 9a429414256..fdc802d7bb0 100644 --- a/reactos/base/applications/taskmgr/lang/hu-HU.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/id-ID.rc b/reactos/base/applications/taskmgr/lang/id-ID.rc index ff67ec3d092..e36f8d8367e 100644 --- a/reactos/base/applications/taskmgr/lang/id-ID.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/it-IT.rc b/reactos/base/applications/taskmgr/lang/it-IT.rc index a3197c4f0ca..c7c983aad7a 100644 --- a/reactos/base/applications/taskmgr/lang/it-IT.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/ja-JP.rc b/reactos/base/applications/taskmgr/lang/ja-JP.rc index 38be0860eab..2bb99667efd 100644 --- a/reactos/base/applications/taskmgr/lang/ja-JP.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/ko-KR.rc b/reactos/base/applications/taskmgr/lang/ko-KR.rc index b54eda8a81a..cb778e0d8af 100644 --- a/reactos/base/applications/taskmgr/lang/ko-KR.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/nl-NL.rc b/reactos/base/applications/taskmgr/lang/nl-NL.rc index ddeb52a0616..4b1ee9d6e3e 100644 --- a/reactos/base/applications/taskmgr/lang/nl-NL.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/no-NO.rc b/reactos/base/applications/taskmgr/lang/no-NO.rc index 1e538c93f6a..ef4f43eab4f 100644 --- a/reactos/base/applications/taskmgr/lang/no-NO.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/pl-PL.rc b/reactos/base/applications/taskmgr/lang/pl-PL.rc index a3643c8d086..2b52a31e0c1 100644 --- a/reactos/base/applications/taskmgr/lang/pl-PL.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/pt-BR.rc b/reactos/base/applications/taskmgr/lang/pt-BR.rc index fe940cf563f..d38d501c332 100644 --- a/reactos/base/applications/taskmgr/lang/pt-BR.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/ro-RO.rc b/reactos/base/applications/taskmgr/lang/ro-RO.rc index 60deced0e79..2637dcb1c5e 100644 --- a/reactos/base/applications/taskmgr/lang/ro-RO.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/ru-RU.rc b/reactos/base/applications/taskmgr/lang/ru-RU.rc index f0018964379..cdbb10a5400 100644 --- a/reactos/base/applications/taskmgr/lang/ru-RU.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/sk-SK.rc b/reactos/base/applications/taskmgr/lang/sk-SK.rc index 0598c835aa1..0f426569a17 100644 --- a/reactos/base/applications/taskmgr/lang/sk-SK.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/sq-AL.rc b/reactos/base/applications/taskmgr/lang/sq-AL.rc index 5d6196e67d2..c98385a2847 100644 --- a/reactos/base/applications/taskmgr/lang/sq-AL.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/sv-SE.rc b/reactos/base/applications/taskmgr/lang/sv-SE.rc index 4f854368f1c..0f5cd8f3fc6 100644 --- a/reactos/base/applications/taskmgr/lang/sv-SE.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/tr-TR.rc b/reactos/base/applications/taskmgr/lang/tr-TR.rc index 41deacebe76..a227f835f22 100644 --- a/reactos/base/applications/taskmgr/lang/tr-TR.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/uk-UA.rc b/reactos/base/applications/taskmgr/lang/uk-UA.rc index 370b382a0aa..752c8746b3c 100644 --- a/reactos/base/applications/taskmgr/lang/uk-UA.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/zh-CN.rc b/reactos/base/applications/taskmgr/lang/zh-CN.rc index d42e0dd0361..a13fc22eecc 100644 --- a/reactos/base/applications/taskmgr/lang/zh-CN.rc +++ b/reactos/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/reactos/base/applications/taskmgr/lang/zh-TW.rc b/reactos/base/applications/taskmgr/lang/zh-TW.rc index eb6ee185bff..1d626dd2d2b 100644 --- a/reactos/base/applications/taskmgr/lang/zh-TW.rc +++ b/reactos/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/reactos/base/applications/taskmgr/resource.h b/reactos/base/applications/taskmgr/resource.h index 8aca1bde315..6f77c9c0a91 100644 --- a/reactos/base/applications/taskmgr/resource.h +++ b/reactos/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 From 065dd42b53c9641fbe3f3053da76833ccb8a66f0 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sat, 13 Dec 2014 08:18:09 +0000 Subject: [PATCH 55/77] [TASKMGR] Don't leak process handle CORE-3716 svn path=/trunk/; revision=65625 --- reactos/base/applications/taskmgr/endproc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/reactos/base/applications/taskmgr/endproc.c b/reactos/base/applications/taskmgr/endproc.c index a57290d6e25..b831d3a94d9 100644 --- a/reactos/base/applications/taskmgr/endproc.c +++ b/reactos/base/applications/taskmgr/endproc.c @@ -46,6 +46,7 @@ void ProcessPage_OnEndProcess(void) 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; } @@ -53,7 +54,10 @@ void ProcessPage_OnEndProcess(void) LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256); LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256); if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING|MB_TOPMOST) != IDYES) + { + if (hProcess) CloseHandle(hProcess); return; + } /* no such process or not enough privileges to open its token */ if (!hProcess) @@ -82,7 +86,7 @@ BOOL IsCriticalProcess(HANDLE hProcess) /* return early if the process handle does not exist */ if (!hProcess) - return FALSE; + 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. @@ -97,8 +101,8 @@ BOOL IsCriticalProcess(HANDLE hProcess) NULL); if (NT_SUCCESS(status) && BreakOnTermination) - return TRUE; - + return TRUE; + return FALSE; } @@ -122,13 +126,17 @@ void ProcessPage_OnEndProcessTree(void) 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; + } if (!hProcess) { From 65836ff301f4d0c1a7a5295466e9653bd8e30bc0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 13 Dec 2014 11:01:57 +0000 Subject: [PATCH 56/77] [NTOSKRNL] Fix x64 build svn path=/trunk/; revision=65626 --- reactos/ntoskrnl/ke/amd64/trap.S | 44 ++++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/reactos/ntoskrnl/ke/amd64/trap.S b/reactos/ntoskrnl/ke/amd64/trap.S index ca2e45a1388..38ca46e4eac 100644 --- a/reactos/ntoskrnl/ke/amd64/trap.S +++ b/reactos/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 From d4579fbe00a110a801baf7a78975eddf4f627c81 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 13 Dec 2014 14:37:34 +0000 Subject: [PATCH 57/77] [DDK] ExInitializePushLock is NTAPI! svn path=/trunk/; revision=65627 --- reactos/include/ddk/ntifs.h | 1 + reactos/include/xdk/exfuncs.h | 1 + 2 files changed, 2 insertions(+) diff --git a/reactos/include/ddk/ntifs.h b/reactos/include/ddk/ntifs.h index 3c35399d69e..982bef28de4 100644 --- a/reactos/include/ddk/ntifs.h +++ b/reactos/include/ddk/ntifs.h @@ -5213,6 +5213,7 @@ KeRemoveQueueEx( #define ExDisableResourceBoost ExDisableResourceBoostLite VOID +NTAPI ExInitializePushLock( _Out_ PEX_PUSH_LOCK PushLock); diff --git a/reactos/include/xdk/exfuncs.h b/reactos/include/xdk/exfuncs.h index a60908fbe76..503c07a7145 100644 --- a/reactos/include/xdk/exfuncs.h +++ b/reactos/include/xdk/exfuncs.h @@ -379,6 +379,7 @@ $if (_NTIFS_) #define ExDisableResourceBoost ExDisableResourceBoostLite VOID +NTAPI ExInitializePushLock( _Out_ PEX_PUSH_LOCK PushLock); $endif (_NTIFS_) From 75e5e3462ad09dfb7f8d7ecbaac14dac2fd7a203 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 13 Dec 2014 20:53:06 +0000 Subject: [PATCH 58/77] [EVENTVWR] Update the Event Detail Dialog to better match XP/2K3 Patch by Lee Schroeder. I updated the remaining dialogs. Translators: Please check the dialogs! CORE_8904 #resolve svn path=/trunk/; revision=65628 --- .../applications/mscutils/eventvwr/eventvwr.c | 68 ++++++++++++++++ .../mscutils/eventvwr/eventvwr.rc | 5 ++ .../mscutils/eventvwr/lang/bg-BG.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/cs-CZ.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/de-DE.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/el-GR.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/en-US.rc | 74 +++++++++++------- .../mscutils/eventvwr/lang/es-ES.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/fr-FR.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/he-IL.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/it-IT.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/ja-JP.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/ko-KR.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/no-NO.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/pl-PL.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/pt-BR.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/ro-RO.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/ru-RU.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/sk-SK.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/sq-AL.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/sv-SE.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/tr-TR.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/uk-UA.rc | 72 ++++++++++------- .../mscutils/eventvwr/lang/zh-CN.rc | 72 ++++++++++------- .../mscutils/eventvwr/res/copy.ico | Bin 0 -> 2862 bytes .../mscutils/eventvwr/res/next_event.ico | Bin 0 -> 2862 bytes .../mscutils/eventvwr/res/prev_event.ico | Bin 0 -> 2862 bytes .../applications/mscutils/eventvwr/resource.h | 7 ++ 28 files changed, 1071 insertions(+), 595 deletions(-) create mode 100644 reactos/base/applications/mscutils/eventvwr/res/copy.ico create mode 100644 reactos/base/applications/mscutils/eventvwr/res/next_event.ico create mode 100644 reactos/base/applications/mscutils/eventvwr/res/prev_event.ico diff --git a/reactos/base/applications/mscutils/eventvwr/eventvwr.c b/reactos/base/applications/mscutils/eventvwr/eventvwr.c index d6ad6937f38..2c203e76e24 100644 --- a/reactos/base/applications/mscutils/eventvwr/eventvwr.c +++ b/reactos/base/applications/mscutils/eventvwr/eventvwr.c @@ -1438,6 +1438,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 +1508,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, IDNEXT), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)nextIcon); + SendMessage(GetDlgItem(hDlg, IDPREVIOUS), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)prevIcon); + SendMessage(GetDlgItem(hDlg, IDCOPY), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)copyIcon); +} // Message handler for event details box. INT_PTR CALLBACK @@ -1468,6 +1530,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; @@ -1494,6 +1558,10 @@ EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) DisplayEvent(hDlg); return (INT_PTR)TRUE; + case IDCOPY: + CopyEventEntry(hDlg); + return (INT_PTR)TRUE; + case IDC_BYTESRADIO: return (INT_PTR)TRUE; diff --git a/reactos/base/applications/mscutils/eventvwr/eventvwr.rc b/reactos/base/applications/mscutils/eventvwr/eventvwr.rc index d2c9a69cac5..c0578f7317e 100644 --- a/reactos/base/applications/mscutils/eventvwr/eventvwr.rc +++ b/reactos/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/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc b/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc index db30ca55b80..39637f2fba0 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc @@ -48,38 +48,43 @@ BEGIN CTEXT "Зареждане на събитията. Почакайте...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc b/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc index ef28104cc03..b177abdd8ae 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc b/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc index 00b2fdf2510..dc0bb1b0e9c 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc b/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc index c40203aa0b6..983099810e2 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "Γίνεται φόρτωση των Logs συμβάντων. Παρακαλώ περιμένετε ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc b/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc index 7cda9ee606f..cbc0d3eb393 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc b/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc index f3e1f70325e..e3b062d0d4b 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc b/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc index 83ff4a1176d..60706ea00f8 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc b/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc index 6b46f4ace85..16dfe7f4b39 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "טוען יומני אירועים, נא להמתין...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc b/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc index 90462eb1d13..222638d15d6 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc b/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc index 9ccff1e78b0..88cd23089a4 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "イベント ログを読み込んでいます。 お待ちください ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc b/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc index d48971915d6..5ef80a45a91 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "이벤트 로그 로딩중. 기다려주세요...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc b/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc index ff2bf2f824a..697cf882a9d 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc index d139ed1969c..c2bb3ca6235 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc b/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc index ceb727e0d9d..b9e8785ba16 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc b/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc index ebb1f6182e8..93da3f9223b 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc b/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc index 61438fbd7a3..4a775bb73b7 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "Идет загрузка. Подождите...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc b/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc index 12e3b00a094..e57c6d52a39 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc b/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc index 7dc078369c3..e4b104758a3 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc b/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc index 8b8e01e6a87..2e0d50bf6c2 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc b/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc index 615c45ff529..c63e4ad42b2 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc @@ -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_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc b/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc index c6c6353c3e4..a308f8570d8 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "Завантаження Звіту подій. Будь ласка, зачекайте ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc b/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc index 7ec7f850e55..8fad3778849 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc @@ -50,38 +50,43 @@ BEGIN CTEXT "正在载入日志。请稍候...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282 +IDD_EVENTDETAILDIALOG 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON + PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON + PUSHBUTTON "", IDCOPY, 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/reactos/base/applications/mscutils/eventvwr/res/copy.ico b/reactos/base/applications/mscutils/eventvwr/res/copy.ico new file mode 100644 index 0000000000000000000000000000000000000000..7bb1635dd85b84e19804014150f285e6bdedfbac GIT binary patch literal 2862 zcmeHJ%W@J?5IqbeLE{*RsJH`G`2v4KtK=i{6V_e%fW$->J}OqZap_0603iz(F8G4P z74HIs@VuTL=8gk`P?e1fy6SMNyYK1Sw`aN;Ab=nu5pYf5Fa$gVTs@4#E#MPv5pD<| zgo6OEeG@p4Jw$>K-nx=GIsW|oD5IZcUoOK}`qZ*`{wF_&%d%Z+7GFb@caF~s#GefTrSV>3&oUCAE)mENwV#pm${=%;}8tPl2u-5q! zW1df&6T@G>`MVo^8NYabey#H*2XnrY;EEsr{e>&%zyEmlL+tAyd;02&JUAW~ zeu!Nldl>Vtci!;DzY2@^%;AyP*FomZ$&>lMZSDZgAVJ5v&>Aq9oipM2@Se{6z`KIa z2kap*Z?K=inE>_z_-=qR0_<&YMu2?+)(w2m!FdAC5^$z~y$j9&z|>F5?HRvq$7lUh-Q$Os`g!P79KLV5h1^`2PTZ30B|ldj zUGjG&B!2&#UHbv;ai@#fIm-{ee@Hr=#)xzAdSazgi3CH)nlfv`N{KF3D;bTZ5>}Er gEsOPizkj+f$xxIj>(4s1@;}J;e`IVcS6`ie11nrj7XSbN literal 0 HcmV?d00001 diff --git a/reactos/base/applications/mscutils/eventvwr/res/next_event.ico b/reactos/base/applications/mscutils/eventvwr/res/next_event.ico new file mode 100644 index 0000000000000000000000000000000000000000..b826dec50b6b5df7113ca7b4be71df5a77ef357d GIT binary patch literal 2862 zcmeHJZETZO6n@IyjWO1>9f*j!O+gr+0#2subg+S-Yy$@SD0D2*G!BCrq+9CHVde)` zSOSCu!6*ipfew@b;VT=^w@L?YgeE_?h^Jo1DJA=bm$O z?>W!&yf0ut49sTmnTARYm<0sp@u-XizM;>|00T6n8-Tb3AYH}K(r79#+7J;$Gp#!N zYh}^aALQ58W;w=fEV-*p{eMtw_!{G%JC)B4^Sr6oUYVN;%{aZ;svr0x@ct=*>X^@ z8bf2l|8sxG_)VpEw{;(v86EG7rR_~g_P!;l=hup>d!MAZi=x&--OuQn-Mjf}lQ=GZ zDc1H6#dPv@F*Q5H+~Sa#-gUC(@-9hm<@})*`kkFwJyoqcd>?o1m!fvJ6m)Emlw+&J zc(lTAM^;Lq*Db}zKk@O7gKD8Utp^r0)bxFI{e+aCu9vd5FJwvE2FY!%mBhy7GQ80y z2_Bmy?k|(d&h3)1)6vHqy%y@u6Wk@ep6+(};nrC>_>)&WH`}G8<#Q=GRVS&QHza=d zQdxhwL257UmD-DY#nrh>M%OLWYr(U4xrYR;+ImmzVQY5F;uCd}aqwM<+gT{JKkgCs z^`r&O>G#iu@#Ifq^UApcx2 zKlA%Fe>-2Dzwu^=e0QT&wp?k_@2=nfubkhR_4A+_sXFx=*TV1XTMsDvEeGgJ1%5I4 z?aol3Ee80AdZJ8?{cm{C~@*U(khzpP>Af`a= z0Qm&=AH)!dI}n2)7C}sc*aYzfaudcQD?to{cn2{9)*a+A$RUsiAdkRaf?NVI0df=M zH^@&AXCN;?yn~npaRc@qtZ{0Tga#zFJ=S6>?z;?Q24Gxz0zjF>0$ zpP9b+(V!!#XzIA}GZzgHWDG6LotBdJ^mFs#bcf-kh1RUpF=Iw&r^nDSa03q^r1BVUkro#Zsaig&(B}op?`p?k4d!@ m@EQEmU@UVi7QkZh2kUwL`G5MiEQX!bj9Ie|g| literal 0 HcmV?d00001 diff --git a/reactos/base/applications/mscutils/eventvwr/res/prev_event.ico b/reactos/base/applications/mscutils/eventvwr/res/prev_event.ico new file mode 100644 index 0000000000000000000000000000000000000000..1e3417b0387441aa937ce59a63d768812b072a0b GIT binary patch literal 2862 zcmeHJZBSHI7=D&rjKFnwAx$j;`>?H~veJwt(A2UNO-&Fr*TRJ>VKXWv(UgFz4$&Wf z1T#bp*;r#hZtP->fl0W7ER!{rULK#K?7}m}you=YqH4#CinaVQH zn|5T%m{#UEAGvm{v5Gr*wo9r`eN9XbOgVV&w{7K8|;(9uj*ymQB5ozn^^;w?Ed+%RR8pGxSp?m_km1xFT23KT&i}a zGDl0^p#mhlPmv_G6i8BYf#i1Wku^Sdh_U@DMvo7F!;Z`h zbNT#%#_vCsiryw!cdS-ccI=gTzA{O8f3?gyTq-Yi*GuBg>;cARM8@i4m5=?6{DG!3 zpNq5eP02k{DT}-nGX1~?*><8qQr#=d8y>_bNZjD+>np1wNG5dk)AXj@7g1 zbyxDa-es@Jzc8~V?>}>nwGYqf9c8iR)$>0s_?IcIsHBc4J8lHdT{p7kQX24g4iMTk zXrpx|A(qU5`4Fed9N;&>RGtN50mKZ*3$R9D%|Kj(=M3fz<`3clCEV%t5SzI0x|#;tkXgkQbnifH(lT1ab<*B*;yWSF|D!W1v=md!6l`cn0+p)Kgk3$WxGOptgd#0O|wC8&D@ftpW88 z)GSboL0tef71S6|8$o>oH3rlvP;WrpiFt0XNe zqrWLNZRV_XBmVRE*k?bqVZ<+-bJv58XTv^a2_{$0?e{&fp6UdnW_hl-X!Db|&bVW3 z{;K7PnihA9bLkU{AHMOX=~I^3jC_UR@n;^JpEYgr4Uc3fSJNh}c`9@6ZPuF?#D`r? zn^Z9G-aC^QCJnh-+|;M)3AHgTJl6MzzSf{-)%_C7)P1B| KMmC;bES#-WJ- literal 0 HcmV?d00001 diff --git a/reactos/base/applications/mscutils/eventvwr/resource.h b/reactos/base/applications/mscutils/eventvwr/resource.h index f5cd0cb49fd..e96afdddfc0 100644 --- a/reactos/base/applications/mscutils/eventvwr/resource.h +++ b/reactos/base/applications/mscutils/eventvwr/resource.h @@ -4,6 +4,11 @@ #define IDC_MYICON 2 #define IDNEXT 3 +#define IDCOPY 4 + +#define IDI_NEXT 11 +#define IDI_PREV 12 +#define IDI_COPY 13 #define IDD_EVENTVWR_DIALOG 102 #define IDD_PROGRESSBOX 150 @@ -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 From bf0ce0bccc87e2f95a64fca385c2ec44d554b7ef Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sat, 13 Dec 2014 21:17:59 +0000 Subject: [PATCH 59/77] [COMP] Incorporate fixes provided by a patch from over three years ago that adds support for the additional compare options. Patch provided by kruntuid. Slight cleanup and reshuffling of some code to make it cleaner. CORE-8484 svn path=/trunk/; revision=65629 --- .../base/applications/cmdutils/comp/comp.c | 231 +++++++++++------- 1 file changed, 147 insertions(+), 84 deletions(-) diff --git a/reactos/base/applications/cmdutils/comp/comp.c b/reactos/base/applications/cmdutils/comp/comp.c index 15a0db4ffdf..cabfbd3dd4c 100644 --- a/reactos/base/applications/cmdutils/comp/comp.c +++ b/reactos/base/applications/cmdutils/comp/comp.c @@ -33,52 +33,70 @@ #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); +} + +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 + // 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 */ + NumberOfOptions++; break; case 'L': bLineNos = TRUE; - _tprintf(_T("/l not supported\n")); (void)bLineNos; /*FIXME: needs adding */ + NumberOfOptions++; break; case '?': Usage(); return EXIT_SUCCESS; @@ -90,92 +108,137 @@ int _tmain (int argc, TCHAR *argv[]) } } - 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 */ From 38b680f392668c9bc96310dcce521cf1f06d0eee Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 13 Dec 2014 22:35:48 +0000 Subject: [PATCH 60/77] [EVENTVWR] Clean up the resource IDs. Fix small icon loading. svn path=/trunk/; revision=65630 --- .../applications/mscutils/eventvwr/eventvwr.c | 69 ++++++++------- .../mscutils/eventvwr/lang/bg-BG.rc | 18 ++-- .../mscutils/eventvwr/lang/cs-CZ.rc | 18 ++-- .../mscutils/eventvwr/lang/de-DE.rc | 18 ++-- .../mscutils/eventvwr/lang/el-GR.rc | 18 ++-- .../mscutils/eventvwr/lang/en-US.rc | 18 ++-- .../mscutils/eventvwr/lang/es-ES.rc | 18 ++-- .../mscutils/eventvwr/lang/fr-FR.rc | 18 ++-- .../mscutils/eventvwr/lang/he-IL.rc | 18 ++-- .../mscutils/eventvwr/lang/it-IT.rc | 18 ++-- .../mscutils/eventvwr/lang/ja-JP.rc | 18 ++-- .../mscutils/eventvwr/lang/ko-KR.rc | 18 ++-- .../mscutils/eventvwr/lang/no-NO.rc | 18 ++-- .../mscutils/eventvwr/lang/pl-PL.rc | 18 ++-- .../mscutils/eventvwr/lang/pt-BR.rc | 18 ++-- .../mscutils/eventvwr/lang/ro-RO.rc | 18 ++-- .../mscutils/eventvwr/lang/ru-RU.rc | 18 ++-- .../mscutils/eventvwr/lang/sk-SK.rc | 18 ++-- .../mscutils/eventvwr/lang/sq-AL.rc | 18 ++-- .../mscutils/eventvwr/lang/sv-SE.rc | 18 ++-- .../mscutils/eventvwr/lang/tr-TR.rc | 18 ++-- .../mscutils/eventvwr/lang/uk-UA.rc | 18 ++-- .../mscutils/eventvwr/lang/zh-CN.rc | 18 ++-- .../applications/mscutils/eventvwr/resource.h | 88 +++++++++---------- 24 files changed, 278 insertions(+), 275 deletions(-) diff --git a/reactos/base/applications/mscutils/eventvwr/eventvwr.c b/reactos/base/applications/mscutils/eventvwr/eventvwr.c index 2c203e76e24..22c4671895b 100644 --- a/reactos/base/applications/mscutils/eventvwr/eventvwr.c +++ b/reactos/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)); @@ -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(); @@ -1516,9 +1519,9 @@ InitDetailsDlg(HWND hDlg) 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, IDNEXT), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)nextIcon); - SendMessage(GetDlgItem(hDlg, IDPREVIOUS), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)prevIcon); - SendMessage(GetDlgItem(hDlg, IDCOPY), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)copyIcon); + 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. @@ -1544,21 +1547,21 @@ 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 IDCOPY: + case IDC_COPY: CopyEventEntry(hDlg); return (INT_PTR)TRUE; diff --git a/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc b/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc index 39637f2fba0..db034f8c5a9 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc +++ b/reactos/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,7 +48,7 @@ BEGIN CTEXT "Зареждане на събитията. Почакайте...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "Подробно за събитието" @@ -71,9 +71,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc b/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc index b177abdd8ae..1267d9fde51 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc +++ b/reactos/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,7 +48,7 @@ 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, 266, 251 +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" @@ -71,9 +71,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc b/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc index dc0bb1b0e9c..791e8748b61 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Ereignis-Protokolle werden geladen. Bitte warten...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc b/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc index 983099810e2..a60ee3eb185 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Γίνεται φόρτωση των Logs συμβάντων. Παρακαλώ περιμένετε ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "Λεπτομέρειες συμβάντος" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc b/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc index cbc0d3eb393..95ef4fc8b66 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc +++ b/reactos/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,7 +56,7 @@ BEGIN CTEXT "Loading Event Logs. Please wait ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 Properties" @@ -79,9 +79,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc b/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc index e3b062d0d4b..67d07e5dc2b 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Recuperando eventos. Espere un momento...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc b/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc index 60706ea00f8..f41b80b4586 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Chargement des journaux d'événements. Veuillez patienter...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc b/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc index 16dfe7f4b39..535302368f3 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "טוען יומני אירועים, נא להמתין...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "מאפייני אירוע" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc b/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc index 222638d15d6..abec4ab59c1 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Caricamento eventi in corso. Attendere...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc b/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc index 88cd23089a4..d36370cfe70 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "イベント ログを読み込んでいます。 お待ちください ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "イベントの詳細情報" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc b/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc index 5ef80a45a91..12109eef462 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "이벤트 로그 로딩중. 기다려주세요...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc b/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc index 697cf882a9d..a8f16040028 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc +++ b/reactos/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,7 +48,7 @@ BEGIN CTEXT "Laster Hendelseliste. Venligst vent ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -71,9 +71,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc index c2bb3ca6235..1131a6918d2 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc +++ b/reactos/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,7 +52,7 @@ BEGIN CTEXT "Ładowanie logów zdarzeń. Proszę czekać ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -75,9 +75,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc b/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc index b9e8785ba16..1f00302e223 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Carregando Registros de Eventos. Por favor aguarde ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc b/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc index 93da3f9223b..2429d6eb0d5 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Se încarcă jurnalul de evenimentele…", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc b/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc index 4a775bb73b7..40fd9425078 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Идет загрузка. Подождите...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "Свойства события" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc b/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc index e57c6d52a39..cef3a39efcf 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc +++ b/reactos/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,7 +53,7 @@ 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, 266, 251 +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" @@ -76,9 +76,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc b/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc index e4b104758a3..2cbf6647875 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc +++ b/reactos/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,7 +56,7 @@ BEGIN CTEXT "Ngarkim loget e ngjarjeve. Ju lutem prisniPlease wait ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -79,9 +79,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc b/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc index 2e0d50bf6c2..a849460b7d3 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Laddar in Händelseloggen. Vänligen vänta...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc b/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc index c63e4ad42b2..8d157cf2806 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc +++ b/reactos/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,7 +56,7 @@ BEGIN CTEXT "Olay kayıtları yükleniyor. Lütfen bekleyiniz.", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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ı" @@ -79,9 +79,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc b/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc index a308f8570d8..e13baa75f70 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "Завантаження Звіту подій. Будь ласка, зачекайте ...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "Деталі події" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc b/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc index 8fad3778849..77b4596c094 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc +++ b/reactos/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,7 +50,7 @@ BEGIN CTEXT "正在载入日志。请稍候...", IDC_STATIC, 0, 15, 230, 8, SS_NOPREFIX END -IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 266, 251 +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 "事件详细信息" @@ -73,9 +73,9 @@ BEGIN 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 "", IDPREVIOUS, 225, 5, 28, 14, BS_ICON - PUSHBUTTON "", IDNEXT, 225, 21, 28, 14, BS_ICON - PUSHBUTTON "", IDCOPY, 225, 37, 28, 14, BS_ICON + 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 diff --git a/reactos/base/applications/mscutils/eventvwr/resource.h b/reactos/base/applications/mscutils/eventvwr/resource.h index e96afdddfc0..f9511267403 100644 --- a/reactos/base/applications/mscutils/eventvwr/resource.h +++ b/reactos/base/applications/mscutils/eventvwr/resource.h @@ -1,58 +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 IDCOPY 4 -#define IDI_NEXT 11 -#define IDI_PREV 12 -#define IDI_COPY 13 +/* Accelerator IDs */ +#define IDA_EVENTVWR 50 -#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 -#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 From 85260e1fa75d49ac10e70fa64b1fedbfdc835a28 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sun, 14 Dec 2014 00:00:54 +0000 Subject: [PATCH 61/77] [TREE] Implement directory tree commandline utility. Code by Asif Bahrainwala. Cleanup by Ziliang Guo. CORE-8529 svn path=/trunk/; revision=65631 --- .../base/applications/cmdutils/CMakeLists.txt | 1 + .../applications/cmdutils/tree/CMakeLists.txt | 5 + .../base/applications/cmdutils/tree/tree.c | 332 ++++++++++++++++++ 3 files changed, 338 insertions(+) create mode 100644 reactos/base/applications/cmdutils/tree/CMakeLists.txt create mode 100644 reactos/base/applications/cmdutils/tree/tree.c diff --git a/reactos/base/applications/cmdutils/CMakeLists.txt b/reactos/base/applications/cmdutils/CMakeLists.txt index 15f4f240997..f0214905aca 100644 --- a/reactos/base/applications/cmdutils/CMakeLists.txt +++ b/reactos/base/applications/cmdutils/CMakeLists.txt @@ -11,6 +11,7 @@ add_subdirectory(more) add_subdirectory(reg) add_subdirectory(sort) add_subdirectory(taskkill) +add_subdirectory(tree) add_subdirectory(wmic) add_subdirectory(wscript) add_subdirectory(xcopy) diff --git a/reactos/base/applications/cmdutils/tree/CMakeLists.txt b/reactos/base/applications/cmdutils/tree/CMakeLists.txt new file mode 100644 index 00000000000..78f33c34d0d --- /dev/null +++ b/reactos/base/applications/cmdutils/tree/CMakeLists.txt @@ -0,0 +1,5 @@ + +add_executable(tree tree.c) +set_module_type(tree win32cui UNICODE) +add_importlibs(tree msvcrt kernel32 user32) +add_cd_file(TARGET tree DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/applications/cmdutils/tree/tree.c b/reactos/base/applications/cmdutils/tree/tree.c new file mode 100644 index 00000000000..a422a9ed310 --- /dev/null +++ b/reactos/base/applications/cmdutils/tree/tree.c @@ -0,0 +1,332 @@ +/* + * 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 + +#define STR_MAX 2048 + +const wchar_t *HELP = L"\nGraphically displays the folder structure of a drive or path. \n\nTREE [drive:][path] [/F] [/A]\n\n /F Display the names of the files in each folder.\n\n\n"; +const wchar_t *INVALID = L"No subfolders exist"; + +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 + +/** +* @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; +} From b9312f9bb615ad3274d93408cf4a5e1de1eb1959 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sun, 14 Dec 2014 00:09:51 +0000 Subject: [PATCH 62/77] [TREE] Fix build. svn path=/trunk/; revision=65632 --- reactos/base/applications/cmdutils/tree/tree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/cmdutils/tree/tree.c b/reactos/base/applications/cmdutils/tree/tree.c index a422a9ed310..220318a4176 100644 --- a/reactos/base/applications/cmdutils/tree/tree.c +++ b/reactos/base/applications/cmdutils/tree/tree.c @@ -7,7 +7,7 @@ // Tree.cpp : Defines the entry point for the console application. // -#include +#include #include #define STR_MAX 2048 From f15a2f92556a29194e70bac4fdfda66897622f7e Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sun, 14 Dec 2014 05:48:05 +0000 Subject: [PATCH 63/77] [CALC] Switch calc to using the registry for storing configuration values. Remove 9x codepath. Patch by Lee Schroeder. Cleaning up Ziliang Guo. CORE-7746 svn path=/trunk/; revision=65633 --- reactos/base/applications/calc/lang/en-US.rc | 12 +- reactos/base/applications/calc/winmain.c | 117 ++++++++++++++----- reactos/boot/bootdata/hivedef.inf | 5 + 3 files changed, 97 insertions(+), 37 deletions(-) diff --git a/reactos/base/applications/calc/lang/en-US.rc b/reactos/base/applications/calc/lang/en-US.rc index b7c04a6dc6d..dc04ceb653f 100644 --- a/reactos/base/applications/calc/lang/en-US.rc +++ b/reactos/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/reactos/base/applications/calc/winmain.c b/reactos/base/applications/calc/winmain.c index 589a453a6ae..ca72f2ace2c 100644 --- a/reactos/base/applications/calc/winmain.c +++ b/reactos/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 Date: Sun, 14 Dec 2014 09:18:47 +0000 Subject: [PATCH 64/77] [CALC] Apply r65633 to all the language files. CORE-7746 svn path=/trunk/; revision=65634 --- reactos/base/applications/calc/lang/bg-BG.rc | 12 ++++++------ reactos/base/applications/calc/lang/cs-CZ.rc | 12 ++++++------ reactos/base/applications/calc/lang/de-DE.rc | 12 ++++++------ reactos/base/applications/calc/lang/el-GR.rc | 12 ++++++------ reactos/base/applications/calc/lang/es-ES.rc | 12 ++++++------ reactos/base/applications/calc/lang/fr-FR.rc | 12 ++++++------ reactos/base/applications/calc/lang/he-IL.rc | 12 ++++++------ reactos/base/applications/calc/lang/hu-HU.rc | 12 ++++++------ reactos/base/applications/calc/lang/it-IT.rc | 12 ++++++------ reactos/base/applications/calc/lang/ja-JP.rc | 12 ++++++------ reactos/base/applications/calc/lang/ko-KR.rc | 12 ++++++------ reactos/base/applications/calc/lang/nl-NL.rc | 12 ++++++------ reactos/base/applications/calc/lang/no-NO.rc | 12 ++++++------ reactos/base/applications/calc/lang/pl-PL.rc | 12 ++++++------ reactos/base/applications/calc/lang/pt-BR.rc | 12 ++++++------ reactos/base/applications/calc/lang/ro-RO.rc | 12 ++++++------ reactos/base/applications/calc/lang/ru-RU.rc | 12 ++++++------ reactos/base/applications/calc/lang/sk-SK.rc | 12 ++++++------ reactos/base/applications/calc/lang/sq-AL.rc | 12 ++++++------ reactos/base/applications/calc/lang/sv-SE.rc | 12 ++++++------ reactos/base/applications/calc/lang/th-TH.rc | 12 ++++++------ reactos/base/applications/calc/lang/tr-TR.rc | 12 ++++++------ reactos/base/applications/calc/lang/uk-UA.rc | 12 ++++++------ reactos/base/applications/calc/lang/zh-CN.rc | 12 ++++++------ 24 files changed, 144 insertions(+), 144 deletions(-) diff --git a/reactos/base/applications/calc/lang/bg-BG.rc b/reactos/base/applications/calc/lang/bg-BG.rc index dac3a71eb3c..0c07c6c439d 100644 --- a/reactos/base/applications/calc/lang/bg-BG.rc +++ b/reactos/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/reactos/base/applications/calc/lang/cs-CZ.rc b/reactos/base/applications/calc/lang/cs-CZ.rc index 8078042defe..7b0031ad100 100644 --- a/reactos/base/applications/calc/lang/cs-CZ.rc +++ b/reactos/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/reactos/base/applications/calc/lang/de-DE.rc b/reactos/base/applications/calc/lang/de-DE.rc index 8275d2f1fa2..5a9149bd955 100644 --- a/reactos/base/applications/calc/lang/de-DE.rc +++ b/reactos/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/reactos/base/applications/calc/lang/el-GR.rc b/reactos/base/applications/calc/lang/el-GR.rc index 9425e8c013f..ba7b6975460 100644 --- a/reactos/base/applications/calc/lang/el-GR.rc +++ b/reactos/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/reactos/base/applications/calc/lang/es-ES.rc b/reactos/base/applications/calc/lang/es-ES.rc index a52a6c1056a..8444c9df353 100644 --- a/reactos/base/applications/calc/lang/es-ES.rc +++ b/reactos/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/reactos/base/applications/calc/lang/fr-FR.rc b/reactos/base/applications/calc/lang/fr-FR.rc index 0ea25af6e0d..97ab52bf51a 100644 --- a/reactos/base/applications/calc/lang/fr-FR.rc +++ b/reactos/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/reactos/base/applications/calc/lang/he-IL.rc b/reactos/base/applications/calc/lang/he-IL.rc index 2b928bf5def..365232fc7db 100644 --- a/reactos/base/applications/calc/lang/he-IL.rc +++ b/reactos/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/reactos/base/applications/calc/lang/hu-HU.rc b/reactos/base/applications/calc/lang/hu-HU.rc index 125c58c9576..c6182abd68c 100644 --- a/reactos/base/applications/calc/lang/hu-HU.rc +++ b/reactos/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/reactos/base/applications/calc/lang/it-IT.rc b/reactos/base/applications/calc/lang/it-IT.rc index e53739de391..4f1a95a2c13 100644 --- a/reactos/base/applications/calc/lang/it-IT.rc +++ b/reactos/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/reactos/base/applications/calc/lang/ja-JP.rc b/reactos/base/applications/calc/lang/ja-JP.rc index 64021330f2a..734760f2215 100644 --- a/reactos/base/applications/calc/lang/ja-JP.rc +++ b/reactos/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/reactos/base/applications/calc/lang/ko-KR.rc b/reactos/base/applications/calc/lang/ko-KR.rc index 5736d529759..e47e2c4d4e9 100644 --- a/reactos/base/applications/calc/lang/ko-KR.rc +++ b/reactos/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/reactos/base/applications/calc/lang/nl-NL.rc b/reactos/base/applications/calc/lang/nl-NL.rc index 4fd8b8cba6c..3b17be99d32 100644 --- a/reactos/base/applications/calc/lang/nl-NL.rc +++ b/reactos/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/reactos/base/applications/calc/lang/no-NO.rc b/reactos/base/applications/calc/lang/no-NO.rc index f69437c5f25..9c25dfb6860 100644 --- a/reactos/base/applications/calc/lang/no-NO.rc +++ b/reactos/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/reactos/base/applications/calc/lang/pl-PL.rc b/reactos/base/applications/calc/lang/pl-PL.rc index 30602af7659..ee2ebe3ecdf 100644 --- a/reactos/base/applications/calc/lang/pl-PL.rc +++ b/reactos/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/reactos/base/applications/calc/lang/pt-BR.rc b/reactos/base/applications/calc/lang/pt-BR.rc index b4ce55152b3..8a402880c35 100644 --- a/reactos/base/applications/calc/lang/pt-BR.rc +++ b/reactos/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/reactos/base/applications/calc/lang/ro-RO.rc b/reactos/base/applications/calc/lang/ro-RO.rc index d4e206f7da7..b70e11673ca 100644 --- a/reactos/base/applications/calc/lang/ro-RO.rc +++ b/reactos/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/reactos/base/applications/calc/lang/ru-RU.rc b/reactos/base/applications/calc/lang/ru-RU.rc index 59ca8fc95a1..59ee1175bb8 100644 --- a/reactos/base/applications/calc/lang/ru-RU.rc +++ b/reactos/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/reactos/base/applications/calc/lang/sk-SK.rc b/reactos/base/applications/calc/lang/sk-SK.rc index c0fef783f69..0a6d8ea7a40 100644 --- a/reactos/base/applications/calc/lang/sk-SK.rc +++ b/reactos/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/reactos/base/applications/calc/lang/sq-AL.rc b/reactos/base/applications/calc/lang/sq-AL.rc index 73cf0403815..64cc8d3c924 100644 --- a/reactos/base/applications/calc/lang/sq-AL.rc +++ b/reactos/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/reactos/base/applications/calc/lang/sv-SE.rc b/reactos/base/applications/calc/lang/sv-SE.rc index e91e2e593d9..ac52639b3ff 100644 --- a/reactos/base/applications/calc/lang/sv-SE.rc +++ b/reactos/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/reactos/base/applications/calc/lang/th-TH.rc b/reactos/base/applications/calc/lang/th-TH.rc index 3f7912a052c..a2457d61500 100644 --- a/reactos/base/applications/calc/lang/th-TH.rc +++ b/reactos/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/reactos/base/applications/calc/lang/tr-TR.rc b/reactos/base/applications/calc/lang/tr-TR.rc index 090a4e4b8e6..358ef9dc6ea 100644 --- a/reactos/base/applications/calc/lang/tr-TR.rc +++ b/reactos/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/reactos/base/applications/calc/lang/uk-UA.rc b/reactos/base/applications/calc/lang/uk-UA.rc index 2b8a2b7c241..5eaaad20846 100644 --- a/reactos/base/applications/calc/lang/uk-UA.rc +++ b/reactos/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/reactos/base/applications/calc/lang/zh-CN.rc b/reactos/base/applications/calc/lang/zh-CN.rc index 4913c86dc8e..17e7b3fc930 100644 --- a/reactos/base/applications/calc/lang/zh-CN.rc +++ b/reactos/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 From 2021ab5899f56abb6949aac5743c8e1b62d05964 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 14 Dec 2014 09:27:11 +0000 Subject: [PATCH 65/77] [CDFS] - Fix CD-ROM disc change handling - Fixes CORE-6119 svn path=/trunk/; revision=65635 --- reactos/drivers/filesystems/cdfs/create.c | 4 ---- reactos/drivers/filesystems/cdfs/fsctl.c | 27 ++++++++--------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/reactos/drivers/filesystems/cdfs/create.c b/reactos/drivers/filesystems/cdfs/create.c index eef173d90a0..c226c1da570 100644 --- a/reactos/drivers/filesystems/cdfs/create.c +++ b/reactos/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/reactos/drivers/filesystems/cdfs/fsctl.c b/reactos/drivers/filesystems/cdfs/fsctl.c index 5da9923e822..702f1ade7a9 100644 --- a/reactos/drivers/filesystems/cdfs/fsctl.c +++ b/reactos/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(); From 71ca9839a4312fd7d0c42ea01453c86a8f986713 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 14 Dec 2014 10:54:20 +0000 Subject: [PATCH 66/77] [NTFS] Stub FSCTL_GET_VOLUME_BITMAP which is required by NFI. CORE-8725 svn path=/trunk/; revision=65636 --- reactos/drivers/filesystems/ntfs/fsctl.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index a9f645b894a..904725a98dc 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -656,6 +656,18 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt, } +static +NTSTATUS +GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, + PIRP Irp) +{ + DPRINT1("GetVolumeBitmap(%p, %p)\n", DeviceExt, Irp); + + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + static NTSTATUS NtfsUserFsRequest(PDEVICE_OBJECT DeviceObject, @@ -679,6 +691,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; From 508364d0b27dbdeded28ec846d9f03cd7cf0099d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 14 Dec 2014 12:04:45 +0000 Subject: [PATCH 67/77] [COMP]: Minor code style changes + whitespace fixes. svn path=/trunk/; revision=65637 --- .../base/applications/cmdutils/comp/comp.c | 89 +++++++++++-------- 1 file changed, 50 insertions(+), 39 deletions(-) diff --git a/reactos/base/applications/cmdutils/comp/comp.c b/reactos/base/applications/cmdutils/comp/comp.c index cabfbd3dd4c..321eb594e6f 100644 --- a/reactos/base/applications/cmdutils/comp/comp.c +++ b/reactos/base/applications/cmdutils/comp/comp.c @@ -27,7 +27,6 @@ * */ - #include #include #include @@ -43,17 +42,18 @@ INT GetBuff(char *buff, FILE *in) return fread(buff, 1, STRBUF, in); } -INT FileSize(FILE * fd) { +INT FileSize(FILE * fd) +{ INT result = -1; if (fseek(fd, 0, SEEK_END) == 0 && (result = ftell(fd)) != -1) { - //restoring file pointer + /* Restoring file pointer */ rewind(fd); } return result; } -/* print program usage */ +/* Print program usage */ VOID Usage(VOID) { _tprintf(_T("\nCompares the contents of two files or sets of files.\n\n" @@ -68,16 +68,18 @@ VOID Usage(VOID) int _tmain (int argc, TCHAR *argv[]) { INT i; - // file pointers + + /* File pointers */ FILE *fp1 = NULL; FILE *fp2 = NULL; + INT BufLen1, BufLen2; PTCHAR Buff1 = NULL; PTCHAR Buff2 = NULL; - TCHAR File1[_MAX_PATH + 1], // file paths + TCHAR File1[_MAX_PATH + 1], // File paths File2[_MAX_PATH + 1]; - BOOL bAscii = FALSE, // /A switch - bLineNos = FALSE; // /L switch + BOOL bAscii = FALSE, // /A switch + bLineNos = FALSE; // /L switch UINT LineNumber; UINT Offset; INT FileSizeFile1; @@ -86,24 +88,31 @@ int _tmain (int argc, TCHAR *argv[]) INT FilesOK = 1; INT Status = EXIT_SUCCESS; - /* parse command line for options */ + /* Parse command line for options */ for (i = 1; i < argc; i++) { if (argv[i][0] == '/') { - 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 (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; } } } @@ -112,11 +121,13 @@ int _tmain (int argc, TCHAR *argv[]) { _tcsncpy(File1, argv[1 + NumberOfOptions], _MAX_PATH); _tcsncpy(File2, argv[2 + NumberOfOptions], _MAX_PATH); - } else { + } + else + { _tprintf(_T("Bad command line syntax\n")); return EXIT_FAILURE; } - + Buff1 = (TCHAR *)malloc(STRBUF * sizeof(TCHAR)); if (Buff1 == NULL) { @@ -149,7 +160,7 @@ int _tmain (int argc, TCHAR *argv[]) _tprintf(_T("Comparing %s and %s...\n"), File1, File2); FileSizeFile1 = FileSize(fp1); - if (FileSizeFile1 == -1) + if (FileSizeFile1 == -1) { _tprintf(_T("Can't determine size of file: %s\n"), File1); Status = EXIT_FAILURE; @@ -157,7 +168,7 @@ int _tmain (int argc, TCHAR *argv[]) } FileSizeFile2 = FileSize(fp2); - if (FileSizeFile2 == -1) + if (FileSizeFile2 == -1) { _tprintf(_T("Can't determine size of file: %s\n"), File2); Status = EXIT_FAILURE; @@ -173,30 +184,30 @@ int _tmain (int argc, TCHAR *argv[]) LineNumber = 1; Offset = 0; - while (1) + while (1) { BufLen1 = GetBuff(Buff1, fp1); BufLen2 = GetBuff(Buff2, fp2); - if (ferror(fp1) || ferror(fp2)) + if (ferror(fp1) || ferror(fp2)) { _tprintf(_T("Files read error.\n")); Status = EXIT_FAILURE; goto Cleanup; } - if (!BufLen1 && !BufLen2) + if (!BufLen1 && !BufLen2) break; assert(BufLen1 == BufLen2); - for (i = 0; i < BufLen1; i++) + for (i = 0; i < BufLen1; i++) { if (Buff1[i] != Buff2[i]) { FilesOK = 0; - //Reporting here a mismatch - if (bLineNos) + /* Reporting here a mismatch */ + if (bLineNos) { _tprintf(_T("Compare error at LINE %d\n"), LineNumber); } @@ -204,7 +215,7 @@ int _tmain (int argc, TCHAR *argv[]) { _tprintf(_T("Compare error at OFFSET %d\n"), Offset); } - + if (bAscii) { _tprintf(_T("file1 = %c\n"), Buff1[i]); @@ -226,19 +237,19 @@ int _tmain (int argc, TCHAR *argv[]) if (FilesOK) _tprintf(_T("Files compare OK\n")); - -Cleanup: - if(fp1) +Cleanup: + if (fp1) fclose(fp1); - if(fp2) + if (fp2) fclose(fp2); - if(Buff1) + if (Buff1) free(Buff1); - if(Buff2) + if (Buff2) free(Buff2); return Status; } + /* EOF */ From c16d33beae2fcef99f931fd24835a23eef295436 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 14 Dec 2014 12:24:18 +0000 Subject: [PATCH 68/77] [NTFS] - Implement NtfsGetUserBuffer() that will (attempt to) return the user output buffer for METHOD_NEITHER IOCTL. - Implement parameters checking GetVolumeBitmap() CORE-8725 svn path=/trunk/; revision=65638 --- .../drivers/filesystems/ntfs/CMakeLists.txt | 1 + reactos/drivers/filesystems/ntfs/fsctl.c | 50 +++++++++++++++++++ reactos/drivers/filesystems/ntfs/misc.c | 13 +++++ reactos/drivers/filesystems/ntfs/ntfs.h | 4 ++ 4 files changed, 68 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/CMakeLists.txt b/reactos/drivers/filesystems/ntfs/CMakeLists.txt index cccce857eea..a5b247d48b9 100644 --- a/reactos/drivers/filesystems/ntfs/CMakeLists.txt +++ b/reactos/drivers/filesystems/ntfs/CMakeLists.txt @@ -20,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/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index 904725a98dc..5467af12e6a 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -661,8 +661,58 @@ NTSTATUS GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, PIRP Irp) { + NTSTATUS Status = STATUS_SUCCESS; + PIO_STACK_LOCATION Stack; + PVOLUME_BITMAP_BUFFER BitmapBuffer; + 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; + } + UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } diff --git a/reactos/drivers/filesystems/ntfs/misc.c b/reactos/drivers/filesystems/ntfs/misc.c index 27c38bb6d67..5d17e1a07a4 100644 --- a/reactos/drivers/filesystems/ntfs/misc.c +++ b/reactos/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/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 8af68849c84..2c812b086dc 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -2,6 +2,7 @@ #define NTFS_H #include +#include #define CACHEPAGESIZE(pDeviceExt) \ ((pDeviceExt)->NtfsInfo.UCHARsPerCluster > PAGE_SIZE ? \ @@ -729,6 +730,9 @@ PNTFS_IRP_CONTEXT NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PIRP Irp); +PVOID +NtfsGetUserBuffer(PIRP Irp); + #if 0 BOOLEAN wstrcmpjoki(PWSTR s1, PWSTR s2); From e4e3241286c3bcec41c5e5368ec501e0cb237594 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 14 Dec 2014 14:38:44 +0000 Subject: [PATCH 69/77] [NTFS] - In the VCB, directly store the total number of clusters available in the volume, this will save a few recurrent divisions - Use this everywhere it is possible - Validate input in GetVolumeBitmap(): make sure we don't want bitmap beyond end of the volume CORE-8725 svn path=/trunk/; revision=65639 --- reactos/drivers/filesystems/ntfs/fsctl.c | 11 ++++++++++- reactos/drivers/filesystems/ntfs/ntfs.h | 1 + reactos/drivers/filesystems/ntfs/volinfo.c | 10 +++++----- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index 5467af12e6a..63e6c62f89a 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/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; @@ -664,6 +665,7 @@ GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, NTSTATUS Status = STATUS_SUCCESS; PIO_STACK_LOCATION Stack; PVOLUME_BITMAP_BUFFER BitmapBuffer; + LONGLONG StartingLcn; DPRINT1("GetVolumeBitmap(%p, %p)\n", DeviceExt, Irp); @@ -713,6 +715,13 @@ GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, 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; + } + UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 2c812b086dc..14963982f98 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -62,6 +62,7 @@ typedef struct _NTFS_INFO ULONG SectorsPerCluster; ULONG BytesPerCluster; ULONGLONG SectorCount; + ULONGLONG ClusterCount; ULARGE_INTEGER MftStart; ULARGE_INTEGER MftMirrStart; ULONG BytesPerFileRecord; diff --git a/reactos/drivers/filesystems/ntfs/volinfo.c b/reactos/drivers/filesystems/ntfs/volinfo.c index 794c39e8292..41823e10b40 100644 --- a/reactos/drivers/filesystems/ntfs/volinfo.c +++ b/reactos/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; From 37d311547904b28c977b05ab502f0396e20dbf5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 14 Dec 2014 16:54:14 +0000 Subject: [PATCH 70/77] [SACDRV]: Code formatting. svn path=/trunk/; revision=65641 --- reactos/drivers/sac/driver/sacdrv.h | 4 ++-- reactos/drivers/sac/driver/vtutf8chan.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/drivers/sac/driver/sacdrv.h b/reactos/drivers/sac/driver/sacdrv.h index 900768b8a9f..c01c8d15a33 100644 --- a/reactos/drivers/sac/driver/sacdrv.h +++ b/reactos/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/reactos/drivers/sac/driver/vtutf8chan.c b/reactos/drivers/sac/driver/vtutf8chan.c index fe9f7f65e62..ce45af22246 100644 --- a/reactos/drivers/sac/driver/vtutf8chan.c +++ b/reactos/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 */ From ecb8f375f8e28a47795eed372758e9aad61cb363 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 14 Dec 2014 18:13:57 +0000 Subject: [PATCH 71/77] [NTFS] Implement GetVolumeBitmap(). This allows NFI to find which file is at which LCN: http://www.heisspiter.net/~Pierre/rostests/NTFS_NFI_LCN.png So far, NFI is not as verbose as it is on Windows in such cases, because FILE_OPEN_BY_FILE_ID is *still* unimplemented (you should consider implementing it Pierre ;-)). I checked with Windows, the correct file is found though! CORE-8725 svn path=/trunk/; revision=65645 --- reactos/drivers/filesystems/ntfs/fsctl.c | 60 +++++++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index 63e6c62f89a..6a817e473b7 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -666,6 +666,11 @@ GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, 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); @@ -722,8 +727,59 @@ GetVolumeBitmap(PDEVICE_EXTENSION DeviceExt, return STATUS_INVALID_PARAMETER; } - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + /* 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; } From c030203e6a76289453259638ef31307ccfded8f5 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sun, 14 Dec 2014 18:30:14 +0000 Subject: [PATCH 72/77] [TREE] Cleanup of Tree utility by Lee Schroeder. CORE-8908 svn path=/trunk/; revision=65646 --- .../applications/cmdutils/tree/CMakeLists.txt | 3 +- .../applications/cmdutils/tree/lang/en-US.rc | 12 +++ .../applications/cmdutils/tree/resource.h | 9 ++ .../base/applications/cmdutils/tree/tree.c | 82 ++++++++++++++----- .../base/applications/cmdutils/tree/tree.rc | 17 ++++ 5 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 reactos/base/applications/cmdutils/tree/lang/en-US.rc create mode 100644 reactos/base/applications/cmdutils/tree/resource.h create mode 100644 reactos/base/applications/cmdutils/tree/tree.rc diff --git a/reactos/base/applications/cmdutils/tree/CMakeLists.txt b/reactos/base/applications/cmdutils/tree/CMakeLists.txt index 78f33c34d0d..ada59fe1d0a 100644 --- a/reactos/base/applications/cmdutils/tree/CMakeLists.txt +++ b/reactos/base/applications/cmdutils/tree/CMakeLists.txt @@ -1,5 +1,6 @@ -add_executable(tree tree.c) +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/reactos/base/applications/cmdutils/tree/lang/en-US.rc b/reactos/base/applications/cmdutils/tree/lang/en-US.rc new file mode 100644 index 00000000000..1e00abf1122 --- /dev/null +++ b/reactos/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/reactos/base/applications/cmdutils/tree/resource.h b/reactos/base/applications/cmdutils/tree/resource.h new file mode 100644 index 00000000000..59827cba4f1 --- /dev/null +++ b/reactos/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/reactos/base/applications/cmdutils/tree/tree.c b/reactos/base/applications/cmdutils/tree/tree.c index 220318a4176..69d4055c77d 100644 --- a/reactos/base/applications/cmdutils/tree/tree.c +++ b/reactos/base/applications/cmdutils/tree/tree.c @@ -9,16 +9,32 @@ // #include #include +//#include + +#include "resource.h" #define STR_MAX 2048 -const wchar_t *HELP = L"\nGraphically displays the folder structure of a drive or path. \n\nTREE [drive:][path] [/F] [/A]\n\n /F Display the names of the files in each folder.\n\n\n"; -const wchar_t *INVALID = L"No subfolders exist"; - 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 @@ -101,10 +117,17 @@ static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, c for(j=0;j> 16, dwSerial & 0xffff); + PrintResourceString(IDS_VOL_SERIAL, dwSerial >> 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[] diff --git a/reactos/base/applications/cmdutils/tree/tree.rc b/reactos/base/applications/cmdutils/tree/tree.rc new file mode 100644 index 00000000000..3cda95604f9 --- /dev/null +++ b/reactos/base/applications/cmdutils/tree/tree.rc @@ -0,0 +1,17 @@ +#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_EN_US + #include "lang/en-US.rc" +#endif From 71ef2b4cc4925e8dca3412bf6d82eecef54c3a9b Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Sun, 14 Dec 2014 18:39:24 +0000 Subject: [PATCH 73/77] [SETUP] Add registry value for wallpaper directory. Patch by Ricardo Hanke. CORE-8797 svn path=/trunk/; revision=65647 --- reactos/boot/bootdata/hivesft.inf | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/boot/bootdata/hivesft.inf b/reactos/boot/bootdata/hivesft.inf index 402514699da..1d7dc2204cb 100644 --- a/reactos/boot/bootdata/hivesft.inf +++ b/reactos/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 From ca068b28b6ca09ae5a5d349db93f133601ad7899 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sun, 14 Dec 2014 18:58:51 +0000 Subject: [PATCH 74/77] [TREE] German translation for tree utility. svn path=/trunk/; revision=65648 --- .../base/applications/cmdutils/tree/lang/de-DE.rc | 12 ++++++++++++ reactos/base/applications/cmdutils/tree/tree.rc | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 reactos/base/applications/cmdutils/tree/lang/de-DE.rc diff --git a/reactos/base/applications/cmdutils/tree/lang/de-DE.rc b/reactos/base/applications/cmdutils/tree/lang/de-DE.rc new file mode 100644 index 00000000000..7da7c493148 --- /dev/null +++ b/reactos/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/reactos/base/applications/cmdutils/tree/tree.rc b/reactos/base/applications/cmdutils/tree/tree.rc index 3cda95604f9..0dddf0f9a7d 100644 --- a/reactos/base/applications/cmdutils/tree/tree.rc +++ b/reactos/base/applications/cmdutils/tree/tree.rc @@ -12,6 +12,9 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL /* 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 From 6cea3c40186157ace1f8215eda721a3336ee02da Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 14 Dec 2014 21:09:29 +0000 Subject: [PATCH 75/77] [NTFS] Make the NTFS driver more verbose in file information requests svn path=/trunk/; revision=65650 --- reactos/drivers/filesystems/ntfs/finfo.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/finfo.c b/reactos/drivers/filesystems/ntfs/finfo.c index a1cdad2de0d..4ca26b83dde 100644 --- a/reactos/drivers/filesystems/ntfs/finfo.c +++ b/reactos/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; } From 5a3af281d7147a5e7bf47423fb11fb95547360b6 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 14 Dec 2014 21:18:47 +0000 Subject: [PATCH 76/77] [NTFS] - Implement NtfsGrabFCBFromTableById() and NtfsGetFCBForFileById(). These two are responsible for opening and retrieving a file open by ID. - Modified NtfsMakeFCBFromDirEntry() so that it supports openings by ID which come with less information than normal openings. - Modified NtfsGrabFCBFromTable() so that it doesn't return a FCB which would have been opened by ID. - Modified NtfsOpenFile() so that it allows opening a file by ID using the two FCB helpers functions defined upper. - Modified NtfsCreateFile() so that it can validate input in case of opening by ID. To make it short, all this implements file opening by ID in NTFS driver. I made the choice to separate FCB which are coming from "normal" opening and these from ID opening. The reason is that a file opening with ID has less information than a normal opening, and may fail on these information retreival. This is due to the fact that if opening by ID can virtual open all the files, because it ignores authorizations, traverses checks, in the end for retrieving the information, such checks can be done and fail. I also left all this disabled so far, because it appears to regress NFI. I will investigate this. CORE-8725 svn path=/trunk/; revision=65652 --- reactos/drivers/filesystems/ntfs/create.c | 102 ++++++++++++++-------- reactos/drivers/filesystems/ntfs/fcb.c | 97 +++++++++++++++++--- reactos/drivers/filesystems/ntfs/ntfs.h | 10 +++ 3 files changed, 165 insertions(+), 44 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/create.c b/reactos/drivers/filesystems/ntfs/create.c index 5ed31964e01..ac9920ed84c 100644 --- a/reactos/drivers/filesystems/ntfs/create.c +++ b/reactos/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; + } } } @@ -201,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)) @@ -226,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)) diff --git a/reactos/drivers/filesystems/ntfs/fcb.c b/reactos/drivers/filesystems/ntfs/fcb.c index 93c400da30f..2cb224d7151 100644 --- a/reactos/drivers/filesystems/ntfs/fcb.c +++ b/reactos/drivers/filesystems/ntfs/fcb.c @@ -220,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); @@ -238,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) @@ -410,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) @@ -654,6 +695,42 @@ NtfsGetFCBForFile(PNTFS_VCB Vcb, } +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, diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 14963982f98..77570526c5f 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -416,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 @@ -599,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); @@ -620,6 +625,11 @@ 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, From 1fa498439b466e0c774bafde31aa4a870fca247c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 14 Dec 2014 21:56:21 +0000 Subject: [PATCH 77/77] [MSPAINT]: Remove trailing whitespace. svn path=/trunk/; revision=65654 --- reactos/base/applications/mspaint/definitions.h | 2 +- reactos/base/applications/mspaint/drawing.c | 6 +++--- reactos/base/applications/mspaint/globalvar.h | 4 ++-- reactos/base/applications/mspaint/lang/pl-PL.rc | 2 +- reactos/base/applications/mspaint/main.c | 14 +++++++------- reactos/base/applications/mspaint/rsrc.rc | 2 +- reactos/base/applications/mspaint/selection.c | 8 ++++---- reactos/base/applications/mspaint/textedit.c | 2 +- reactos/base/applications/mspaint/winproc.c | 2 +- 9 files changed, 21 insertions(+), 21 deletions(-) diff --git a/reactos/base/applications/mspaint/definitions.h b/reactos/base/applications/mspaint/definitions.h index 011c20bfc97..6a0ed6c4fa6 100644 --- a/reactos/base/applications/mspaint/definitions.h +++ b/reactos/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/reactos/base/applications/mspaint/drawing.c b/reactos/base/applications/mspaint/drawing.c index acbf5424e07..e46af30b668 100644 --- a/reactos/base/applications/mspaint/drawing.c +++ b/reactos/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/reactos/base/applications/mspaint/globalvar.h b/reactos/base/applications/mspaint/globalvar.h index a51d329a455..927d53ce5af 100644 --- a/reactos/base/applications/mspaint/globalvar.h +++ b/reactos/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/reactos/base/applications/mspaint/lang/pl-PL.rc b/reactos/base/applications/mspaint/lang/pl-PL.rc index 36b53bd8b10..cd68e91dc1e 100644 --- a/reactos/base/applications/mspaint/lang/pl-PL.rc +++ b/reactos/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/reactos/base/applications/mspaint/main.c b/reactos/base/applications/mspaint/main.c index 8275ed375f4..18044e4916a 100644 --- a/reactos/base/applications/mspaint/main.c +++ b/reactos/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/reactos/base/applications/mspaint/rsrc.rc b/reactos/base/applications/mspaint/rsrc.rc index cece6304bf4..77e681972be 100644 --- a/reactos/base/applications/mspaint/rsrc.rc +++ b/reactos/base/applications/mspaint/rsrc.rc @@ -5,7 +5,7 @@ * PURPOSE: Managing the resources * PROGRAMMERS: Benedikt Freisen */ - + /* INCLUDES *********************************************************/ #include diff --git a/reactos/base/applications/mspaint/selection.c b/reactos/base/applications/mspaint/selection.c index e0e0e339d5c..8253a116c7b 100644 --- a/reactos/base/applications/mspaint/selection.c +++ b/reactos/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/reactos/base/applications/mspaint/textedit.c b/reactos/base/applications/mspaint/textedit.c index 6bc1864d671..29c74ab24c8 100644 --- a/reactos/base/applications/mspaint/textedit.c +++ b/reactos/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/reactos/base/applications/mspaint/winproc.c b/reactos/base/applications/mspaint/winproc.c index 76af666a0ad..b154d7e5b81 100644 --- a/reactos/base/applications/mspaint/winproc.c +++ b/reactos/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)