ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
December 2018
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
26 participants
322 discussions
Start a n
N
ew thread
[reactos] 03/03: [MSGINA] Update Simplified Chinese translation.
by Luo Yufan
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=6a506156a86cc53441142…
commit 6a506156a86cc53441142b10fd75a085612cd42e Author: Luo Yufan <njlyf2011(a)hotmail.com> AuthorDate: Mon Dec 3 13:01:56 2018 +0800 Commit: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito(a)reactos.org> CommitDate: Mon Dec 3 12:52:11 2018 +0100 [MSGINA] Update Simplified Chinese translation. --- dll/win32/msgina/lang/zh-CN.rc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/dll/win32/msgina/lang/zh-CN.rc b/dll/win32/msgina/lang/zh-CN.rc index d4d3fdb519..dfc9e1b946 100644 --- a/dll/win32/msgina/lang/zh-CN.rc +++ b/dll/win32/msgina/lang/zh-CN.rc @@ -19,7 +19,7 @@ FONT 9, "宋体", 400, 0, 1 BEGIN CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 ICON IDI_KEYBOARD, IDC_STATIC, 7, 55, 32, 32 - LTEXT "按 Ctrl-Alt-Delete 开始。", IDC_STATIC, 38, 60, 230, 14 + LTEXT "请按 Ctrl-Alt-Delete 开始登录。", IDC_STATIC, 38, 60, 230, 14 END IDD_LOGON DIALOGEX 0, 0, 275, 147 @@ -45,13 +45,13 @@ CAPTION "安全" FONT 9, "宋体", 400, 0, 1 BEGIN CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 - GROUPBOX "登录信息", IDC_STATIC, 7, 50, 261, 52 + GROUPBOX "登录消息", IDC_STATIC, 7, 50, 261, 52 LTEXT "<Message>", IDC_SECURITY_MESSAGE, 15, 62, 245, 18 LTEXT "<Logon date>", IDC_SECURITY_LOGONDATE, 15, 83, 245, 8 CTEXT "你想要做什么?", IDC_STATIC, 10, 108, 255, 8 PUSHBUTTON "锁定计算机(&K)", IDC_SECURITY_LOCK, 7, 124, 80, 14 PUSHBUTTON "注销(&L)...", IDC_SECURITY_LOGOFF, 98, 124, 80, 14 - PUSHBUTTON "关闭(&S)...", IDC_SECURITY_SHUTDOWN, 188, 124, 80, 14 + PUSHBUTTON "关机(&S)...", IDC_SECURITY_SHUTDOWN, 188, 124, 80, 14 PUSHBUTTON "更改密码(&C)...", IDC_SECURITY_CHANGEPWD, 7, 143, 80, 14 PUSHBUTTON "任务管理器(&T)", IDC_SECURITY_TASKMGR, 98, 143, 80, 14 PUSHBUTTON "取消", IDCANCEL, 188, 143, 80, 14 @@ -71,12 +71,12 @@ END IDD_UNLOCK DIALOGEX 0, 0, 275, 179 STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP -CAPTION "解除计算机锁定" +CAPTION "解除锁定计算机" FONT 9, "宋体", 400, 0, 1 BEGIN CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 ICON IDI_LOCKICON, IDC_STATIC, 7, 59, 20, 20 - LTEXT "此计算机正在使用,并被锁定。", IDC_STATIC, 36, 61, 232, 8 + LTEXT "这台计算机正在使用,但已被锁定。", IDC_STATIC, 36, 61, 232, 8 LTEXT "<Message>", IDC_UNLOCK_MESSAGE, 36, 75, 232, 26 LTEXT "用户名:", IDC_STATIC, 36, 107, 40, 8 EDITTEXT IDC_UNLOCK_USERNAME, 84, 104, 119, 14, ES_AUTOHSCROLL @@ -146,13 +146,13 @@ BEGIN LTEXT "你想让计算机做什么?(&W)", IDC_STATIC, 39, 57, 167, 10 COMBOBOX IDC_SHUTDOWN_ACTION, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 - GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 - LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 - LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 - AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + GROUPBOX "关机事件跟踪程序", IDC_STATIC, 9, 122, 257, 146 + LTEXT "选择最能说明您要关闭计算机的原因的选项。", IDC_STATIC, 39, 134, 190, 17 + LTEXT "选项(&O):", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "计划(&P)", IDC_REASON_PLANNED, 182, 154, 47, 10 COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 - LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + LTEXT "备注(&C):", IDC_STATIC, 39, 214, 80, 8 EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP DEFPUSHBUTTON "确定", IDOK, 150, 276, 55, 14, WS_GROUP PUSHBUTTON "取消", IDCANCEL, 211, 276, 55, 14 @@ -182,7 +182,7 @@ END STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "欢迎!" - IDS_LOCKEDSAS "计算机当前已锁定。" + IDS_LOCKEDSAS "当前计算机已被锁定。" IDS_PRESSCTRLALTDELETE "按 Control+Alt+Delete 登录。" IDS_ASKFORUSER "用户名称: " IDS_ASKFORPASSWORD "密码: " @@ -192,7 +192,7 @@ BEGIN IDS_LOGONDATE "登录日期: %s %s" IDS_COMPUTERLOCKED "锁定计算机" IDS_LOCKEDWRONGPASSWORD "密码错误。请再次输入您的密码。在密码中的字母必须使用正确的大小写。" - IDS_LOCKEDWRONGUSER "这台计算机被锁定。只有 %s\\%s 或者管理员可以解除计算机锁定。" + IDS_LOCKEDWRONGUSER "这台计算机已被锁定。只有 %s\\%s 或者管理员可以解除对这台计算机锁定。" IDS_CHANGEPWDTITLE "更改密码" IDS_NONMATCHINGPASSWORDS "您键入的密码不匹配。在这两个文本框中键入相同的密码。" IDS_PASSWORDCHANGED "您的密码已更改。" @@ -217,5 +217,5 @@ BEGIN IDS_SHUTDOWN_SHUTDOWN_DESC "结束当前会话并关闭系统,这样您可以安全地关闭电源。" IDS_SHUTDOWN_RESTART_DESC "结束当前会话并重新引导系统。" IDS_SHUTDOWN_SLEEP_DESC "使系统处于睡眠模式。" - IDS_SHUTDOWN_HIBERNATE_DESC "保存当前会话并关闭计算机。" + IDS_SHUTDOWN_HIBERNATE_DESC "保存当前登录会话并关闭计算机。" END
6 years
1
0
0
0
[reactos] 02/03: [IEFRAME] Update Simplified Chinese translation.
by Luo Yufan
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5066ee46069128422ecc7…
commit 5066ee46069128422ecc73a082f1769fe39dbf36 Author: Luo Yufan <njlyf2011(a)hotmail.com> AuthorDate: Mon Dec 3 12:56:01 2018 +0800 Commit: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito(a)reactos.org> CommitDate: Mon Dec 3 12:52:11 2018 +0100 [IEFRAME] Update Simplified Chinese translation. --- dll/win32/ieframe/lang/zh-CN.rc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dll/win32/ieframe/lang/zh-CN.rc b/dll/win32/ieframe/lang/zh-CN.rc index a40a7f99b4..3a8cfa77ea 100644 --- a/dll/win32/ieframe/lang/zh-CN.rc +++ b/dll/win32/ieframe/lang/zh-CN.rc @@ -1,5 +1,5 @@ /* Simplified Chinese translation by Henry Tang Ih 2015 (henrytang2(a)hotmail.com) */ -/* Improved by Luo Yufan (njlyf2011(a)hotmail.com) */ +/* Improved by Luo Yufan 2018 (njlyf2011(a)hotmail.com) */ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED @@ -47,7 +47,7 @@ STRINGTABLE IDS_TB_FORWARD "前进" IDS_TB_STOP "停止" IDS_TB_REFRESH "刷新" - IDS_TB_HOME "首页" + IDS_TB_HOME "主页" IDS_TB_PRINT "打印..." } @@ -60,8 +60,8 @@ STRINGTABLE { IDS_FINDINGRESOURCE "正在搜索 %s" IDS_BEGINDOWNLOADDATA "开始下载 %s" - IDS_ENDDOWNLOADDATA "下载 %s 中" - IDS_SENDINGREQUEST "要求 %s" + IDS_ENDDOWNLOADDATA "正在 %s " + IDS_SENDINGREQUEST "需要 %s" } @@ -78,4 +78,4 @@ FONT 9, "宋体" EDITTEXT IDC_BROWSE_OPEN_URL, 35, 30, 160, 13 DEFPUSHBUTTON "确定", IDOK, 90, 50, 50, 14 PUSHBUTTON "取消", IDCANCEL, 145, 50, 50, 14 -} \ No newline at end of file +}
6 years
1
0
0
0
[reactos] 01/03: [SHELL32] Update Simplified Chinese translation.
by Luo Yufan
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a9f634b5febe73251e105…
commit a9f634b5febe73251e1059e0b4f585e79b3f76b5 Author: Luo Yufan <njlyf2011(a)hotmail.com> AuthorDate: Mon Dec 3 12:52:10 2018 +0800 Commit: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito(a)reactos.org> CommitDate: Mon Dec 3 12:52:11 2018 +0100 [SHELL32] Update Simplified Chinese translation. --- dll/win32/shell32/lang/zh-CN.rc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc index 9d595ab573..81ec20686a 100644 --- a/dll/win32/shell32/lang/zh-CN.rc +++ b/dll/win32/shell32/lang/zh-CN.rc @@ -5,7 +5,7 @@ * PURPOSE: Chinese (Simplified) Language Resources * TRANSLATORS: 2008 zhangbing <e_zb(a)21cn.com, ezb(a)mail.gywb.cn> 2011 Elton Chung aka MfldElton <elton328(a)gmail.com> - 2017 Luo Yufan <njlyf2011(a)hotmail.com> + 2018 Luo Yufan <njlyf2011(a)hotmail.com> */ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED @@ -177,7 +177,7 @@ CAPTION "运行" FONT 9, "宋体" BEGIN ICON "", IDC_RUNDLG_ICON, 7, 11, 18, 20, WS_VISIBLE - LTEXT "输入程序,目录,文件或者 Internet 资源名,ReactOS 将为您打开它。", 12289, 36, 11, 182, 18 + LTEXT "请输入程序、目录、文件或 Internet 资源名,ReactOS 将为您打开它。", 12289, 36, 11, 182, 18 LTEXT "打开(&O):", 12305, 7, 39, 32, 10 CONTROL "", IDC_RUNDLG_EDITPATH, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_AUTOHSCROLL | CBS_DROPDOWN, 42, 37, 178, 100 DEFPUSHBUTTON "确定", IDOK, 62, 70, 50, 14, WS_TABSTOP @@ -221,7 +221,7 @@ BEGIN ICON IDI_SHELL_EXTENDED_PROPERTIES, IDI_SHELL_EXTENDED_PROPERTIES, 5, 5, 21, 20, SS_ICON LTEXT "为这个快捷方式选择您想要的高级属性。", -1, 5, 30, 210, 10 CHECKBOX "以其他用户身份运行", IDC_SHORTEX_RUN_DIFFERENT, 25, 50, 150, 10 - LTEXT "此选项允许您以另一用户身份运行此快捷方式,或继续以您自己的身份运行以保护您的计算机和数据不受未授权程序的破坏。", -1, 50, 60, 175, 40 + LTEXT "此选项允许您以其他用户身份运行此快捷方式,或者在保护计算机和数据免受未经授权的程序活动的同时继续自行运行。", -1, 50, 60, 175, 40 CHECKBOX "在单独的内存空间中运行", IDC_SHORTEX_RUN_SEPARATE, 25, 100, 150, 10, WS_DISABLED PUSHBUTTON "确定", 1, 63, 124, 50, 15, WS_VISIBLE PUSHBUTTON "取消", 2, 120, 124, 50, 15, WS_VISIBLE @@ -352,7 +352,7 @@ BEGIN ICON IDI_SHELL_TOOLS_CHKDSK, IDC_STATIC, 13, 25, 21, 20 LTEXT "该选项将检查卷\n中的错误。", -1, 40, 25, 160, 20 PUSHBUTTON "开始检查...", 14000, 130, 45, 90, 15, WS_TABSTOP - GROUPBOX "碎片整理", -1, 5, 65, 230, 60 + GROUPBOX "磁盘碎片整理", -1, 5, 65, 230, 60 ICON IDI_SHELL_TOOLS_DEFRAG, IDC_STATIC, 13, 85, 21, 20 LTEXT "该选项将整理卷中的文件。", -1, 40, 85, 160, 20 PUSHBUTTON "开始整理...", 14001, 130, 105, 90, 15, WS_TABSTOP @@ -377,7 +377,7 @@ BEGIN LTEXT "您想使用哪个用户帐户运行这个程序?", -1, 10, 20, 220, 20 CHECKBOX "当前用户 %s", 14000, 10, 45, 150, 10 LTEXT "保护我的计算机和数据不受未授权程序的活动影响", -1, 25, 57, 200, 10, WS_DISABLED - CHECKBOX "这个选项可以保护您的计算机或个人数据不受病毒损害,但是选择这项可能会引起程序工作不正确。", 14001, 25, 68, 200, 30, WS_DISABLED | BS_MULTILINE + CHECKBOX "这个选项可以保护您的计算机或个人数据不受病毒损害,但选择该选项可能会导致程序工作不正确。", 14001, 25, 68, 200, 30, WS_DISABLED | BS_MULTILINE CHECKBOX "下列用户:", 14002, 10, 100, 90, 10 LTEXT "用户名:", -1, 20, 118, 54, 10 COMBOBOX 14003, 75, 115, 100, 15, CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_TABSTOP @@ -399,8 +399,8 @@ BEGIN RADIOBUTTON "自定义大小(&C):", 14001, 20, 90, 80, 10, WS_TABSTOP EDITTEXT 14002, 106, 87, 50, 14, WS_TABSTOP | ES_NUMBER LTEXT "最大值(MB)(&A):", -1, 20, 105, 70, 10 - RADIOBUTTON "不将文件移入回收站,而是彻底删除。(&R)", 14003, 20, 117, 170, 20, BS_MULTILINE | WS_TABSTOP - AUTOCHECKBOX "显示删除确认对话框(&D)", 14004, 20, 155, 140, 10, WS_TABSTOP + RADIOBUTTON "不将文件移动到回收站,而是彻底删除。(&R)", 14003, 20, 117, 170, 20, BS_MULTILINE | WS_TABSTOP + AUTOCHECKBOX "显示确认删除对话框(&D)", 14004, 20, 155, 140, 10, WS_TABSTOP END IDD_OPEN_WITH DIALOGEX 0, 0, 264, 256 @@ -512,7 +512,7 @@ CAPTION "断开 ReactOS" FONT 9, "宋体" BEGIN ICON IDI_SHELL_DISCONN, IDC_STATIC, 8, 6, 21, 20 - LTEXT "确实要断开连接吗?", -1, 49, 15, 131, 8 + LTEXT "确定要断开连接吗?", -1, 49, 15, 131, 8 DEFPUSHBUTTON "断开(&D)", IDOK, 47, 38, 47, 14 PUSHBUTTON "取消", IDCANCEL, 99, 38, 47, 14 END
6 years
1
0
0
0
[reactos] 01/01: [SHELL32] Don't show taskbar button of Folder Options (#1091)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=cbd52e30d7c5232fe20aa…
commit cbd52e30d7c5232fe20aa232b8077780df6bde7e Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Dec 3 13:38:09 2018 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Dec 3 13:38:09 2018 +0900 [SHELL32] Don't show taskbar button of Folder Options (#1091) CORE-10481 --- dll/win32/shell32/dialogs/folder_options.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/dll/win32/shell32/dialogs/folder_options.cpp b/dll/win32/shell32/dialogs/folder_options.cpp index 1fb4e7344f..475a0bffae 100644 --- a/dll/win32/shell32/dialogs/folder_options.cpp +++ b/dll/win32/shell32/dialogs/folder_options.cpp @@ -190,6 +190,19 @@ HBITMAP CreateRadioMask(HDC hDC) ///////////////////////////////////////////////////////////////////////////// +// CMSGlobalFolderOptionsStub --- The owner window of Folder Options. +// This window hides taskbar button of Folder Options. +class CMSGlobalFolderOptionsStub : public CWindowImpl<CMSGlobalFolderOptionsStub> +{ +public: + DECLARE_WND_CLASS_EX(_T("MSGlobalFolderOptionsStub"), 0, COLOR_WINDOWTEXT) + + BEGIN_MSG_MAP(CMSGlobalFolderOptionsStub) + END_MSG_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj); static VOID @@ -217,14 +230,27 @@ ShowFolderOptionsDialog(HWND hWnd, HINSTANCE hInst) LoadStringW(shell32_hInstance, IDS_FOLDER_OPTIONS, szOptions, _countof(szOptions)); szOptions[_countof(szOptions) - 1] = 0; + // the stub window to hide taskbar button + DWORD style = WS_DISABLED | WS_CLIPSIBLINGS | WS_CAPTION; + DWORD exstyle = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW; + CMSGlobalFolderOptionsStub stub; + if (!stub.Create(NULL, NULL, NULL, style, exstyle)) + { + ERR("stub.Create failed\n"); + return; + } + memset(&pinfo, 0x0, sizeof(PROPSHEETHEADERW)); pinfo.dwSize = sizeof(PROPSHEETHEADERW); pinfo.dwFlags = PSH_NOCONTEXTHELP; + pinfo.hwndParent = stub; pinfo.nPages = num_pages; pinfo.phpage = hppages; pinfo.pszCaption = szOptions; PropertySheetW(&pinfo); + + stub.DestroyWindow(); } static VOID
6 years
1
0
0
0
[reactos] 01/01: careless s/E_FAIL/FALSE/ (#1089)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c1eb420a91f113201074a…
commit c1eb420a91f113201074a067d27c2abdbae31aa7 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Dec 3 05:43:21 2018 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Dec 3 05:43:21 2018 +0900 careless s/E_FAIL/FALSE/ (#1089) --- dll/win32/shell32/dialogs/fprop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dll/win32/shell32/dialogs/fprop.cpp b/dll/win32/shell32/dialogs/fprop.cpp index 33386794ae..108f7e03af 100644 --- a/dll/win32/shell32/dialogs/fprop.cpp +++ b/dll/win32/shell32/dialogs/fprop.cpp @@ -121,7 +121,7 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, PCUITEMID_CH if (!stub.Create(NULL, NULL, NULL, style, exstyle)) { ERR("StubWindow32 creation failed\n"); - return E_FAIL; + return FALSE; } /* Handle files and folders */
6 years
1
0
0
0
[reactos] 01/01: [SHELL32] Follow up of #1085 (#1088)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=623b2e153eb0cb6ddf315…
commit 623b2e153eb0cb6ddf31525073a2f949afda475c Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Dec 3 05:38:36 2018 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Dec 3 05:38:36 2018 +0900 [SHELL32] Follow up of #1085 (#1088) CORE-10481 --- dll/win32/shell32/dialogs/fprop.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dll/win32/shell32/dialogs/fprop.cpp b/dll/win32/shell32/dialogs/fprop.cpp index 9433883cfd..33386794ae 100644 --- a/dll/win32/shell32/dialogs/fprop.cpp +++ b/dll/win32/shell32/dialogs/fprop.cpp @@ -74,7 +74,7 @@ class CStubWindow32 : public CWindowImpl<CStubWindow32> public: DECLARE_WND_CLASS_EX(_T("StubWindow32"), 0, COLOR_WINDOWTEXT) - BEGIN_MSG_MAP(CPaletteWindow) + BEGIN_MSG_MAP(CStubWindow32) END_MSG_MAP() }; @@ -119,7 +119,10 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, PCUITEMID_CH DWORD exstyle = WS_EX_WINDOWEDGE | WS_EX_APPWINDOW; CStubWindow32 stub; if (!stub.Create(NULL, NULL, NULL, style, exstyle)) + { + ERR("StubWindow32 creation failed\n"); return E_FAIL; + } /* Handle files and folders */ PROPSHEETHEADERW Header;
6 years
1
0
0
0
[reactos] 01/01: [USER32] Fix Task Switcher (#1086)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3fd2deefac30617cf81b3…
commit 3fd2deefac30617cf81b30daf91610ca82fc254b Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Dec 3 04:26:15 2018 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Dec 3 04:26:15 2018 +0900 [USER32] Fix Task Switcher (#1086) CORE-10481 --- win32ss/user/user32/controls/appswitch.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/win32ss/user/user32/controls/appswitch.c b/win32ss/user/user32/controls/appswitch.c index c2898b9e13..b3314602e0 100644 --- a/win32ss/user/user32/controls/appswitch.c +++ b/win32ss/user/user32/controls/appswitch.c @@ -165,13 +165,15 @@ void CompleteSwitch(BOOL doSwitch) BOOL CALLBACK EnumerateCallback(HWND window, LPARAM lParam) { HICON hIcon; + HWND hwndOwner; UNREFERENCED_PARAMETER(lParam); if (!IsWindowVisible(window)) return TRUE; - if (GetWindow(window, GW_OWNER) != NULL) + hwndOwner = GetWindow(window, GW_OWNER); + if (hwndOwner && IsWindowVisible(hwndOwner)) return TRUE; GetClassNameW(window, windowText, _countof(windowText)); @@ -216,16 +218,23 @@ BOOL CALLBACK EnumerateCallback(HWND window, LPARAM lParam) return TRUE; } -// Function mostly compatible with the normal EnumWindows, +// Function mostly compatible with the normal EnumChildWindows, // except it lists in Z-Order and it doesn't ensure consistency // if a window is removed while enumerating -void EnumWindowsZOrder(WNDENUMPROC callback, LPARAM lParam) +void EnumChildWindowsZOrder(HWND hwnd, WNDENUMPROC callback, LPARAM lParam) { - HWND next = GetTopWindow(NULL); + HWND next = GetTopWindow(hwnd); while (next != NULL) { - if(!callback(next, lParam)) - break; + if (!hwnd && !IsWindowVisible(next)) + { + // UPDATE: Seek also the owned windows of the hidden top-level window. + EnumChildWindowsZOrder(next, callback, lParam); + } + + if (!callback(next, lParam)) + break; + next = GetWindow(next, GW_HWNDNEXT); } } @@ -413,7 +422,7 @@ BOOL ProcessHotKey(VOID) if (!isOpen) { windowCount=0; - EnumWindowsZOrder(EnumerateCallback, 0); + EnumChildWindowsZOrder(NULL, EnumerateCallback, 0); if (windowCount < 2) return FALSE; @@ -507,7 +516,7 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam ) Esc = TRUE; windowCount = 0; - EnumWindowsZOrder(EnumerateCallback, 0); + EnumChildWindowsZOrder(NULL, EnumerateCallback, 0); if (windowCount < 2) return 0;
6 years
1
0
0
0
[reactos] 01/01: [SHELL32] Don't show taskbar button of file property sheet (#1085)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=ecd51d99f46fe45271ed7…
commit ecd51d99f46fe45271ed7a9595834a1ca0aec77f Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Dec 3 04:25:46 2018 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Dec 3 04:25:46 2018 +0900 [SHELL32] Don't show taskbar button of file property sheet (#1085) CORE-10481 --- dll/win32/shell32/dialogs/fprop.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/dll/win32/shell32/dialogs/fprop.cpp b/dll/win32/shell32/dialogs/fprop.cpp index 784d6ec505..9433883cfd 100644 --- a/dll/win32/shell32/dialogs/fprop.cpp +++ b/dll/win32/shell32/dialogs/fprop.cpp @@ -3,7 +3,7 @@ * * Copyright 2005 Johannes Anderwald * Copyright 2012 Rafal Harabien - * Copyright 2017 Katayama Hirofumi MZ + * Copyright 2017-2018 Katayama Hirofumi MZ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -67,6 +67,17 @@ LoadPropSheetHandlers(LPCWSTR pwszPath, PROPSHEETHEADERW *pHeader, UINT cMaxPage return cPages; } +// CStubWindow32 --- The owner window of file property sheets. +// This window hides taskbar button of property sheet. +class CStubWindow32 : public CWindowImpl<CStubWindow32> +{ +public: + DECLARE_WND_CLASS_EX(_T("StubWindow32"), 0, COLOR_WINDOWTEXT) + + BEGIN_MSG_MAP(CPaletteWindow) + END_MSG_MAP() +}; + /************************************************************************* * * SH_ShowPropertiesDialog @@ -104,10 +115,17 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, PCUITEMID_CH if (PathIsRootW(wszPath)) return SUCCEEDED(SH_ShowDriveProperties(wszPath, pidlFolder, apidl)); + DWORD style = WS_DISABLED | WS_CLIPSIBLINGS | WS_CAPTION; + DWORD exstyle = WS_EX_WINDOWEDGE | WS_EX_APPWINDOW; + CStubWindow32 stub; + if (!stub.Create(NULL, NULL, NULL, style, exstyle)) + return E_FAIL; + /* Handle files and folders */ PROPSHEETHEADERW Header; memset(&Header, 0x0, sizeof(PROPSHEETHEADERW)); Header.dwSize = sizeof(PROPSHEETHEADERW); + Header.hwndParent = stub; Header.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE; Header.phpage = hppages; Header.pszCaption = PathFindFileNameW(wszPath); @@ -142,6 +160,8 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, PCUITEMID_CH if (pFileDefExt) pFileDefExt->Release(); + stub.DestroyWindow(); + return (Result != -1); }
6 years
1
0
0
0
[reactos] 01/01: [SETUPAPI] Implement SetupGetNonInteractiveMode() and SetupSetNonInteractiveMode().
by Eric Kohl
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3f570f3369de963d1f928…
commit 3f570f3369de963d1f9286fffff41620b0e7c19e Author: Eric Kohl <eric.kohl(a)reactos.org> AuthorDate: Sun Dec 2 14:10:25 2018 +0100 Commit: Eric Kohl <eric.kohl(a)reactos.org> CommitDate: Sun Dec 2 14:10:25 2018 +0100 [SETUPAPI] Implement SetupGetNonInteractiveMode() and SetupSetNonInteractiveMode(). --- dll/win32/setupapi/misc.c | 21 +++++++++++++++++++++ dll/win32/setupapi/setupapi.spec | 2 +- dll/win32/setupapi/stubs.c | 7 ------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/dll/win32/setupapi/misc.c b/dll/win32/setupapi/misc.c index 701af29492..df03525a2e 100644 --- a/dll/win32/setupapi/misc.c +++ b/dll/win32/setupapi/misc.c @@ -869,6 +869,27 @@ void WINAPI pSetupSetGlobalFlags( DWORD flags ) pSetupModifyGlobalFlags(0xFFFFFFFF, flags); } +/*********************************************************************** + * SetupGetNonInteractiveMode (SETUPAPI.@) + */ +BOOL WINAPI SetupGetNonInteractiveMode(VOID) +{ + return (GlobalSetupFlags & PSPGF_NONINTERACTIVE); +} + +/*********************************************************************** + * SetupSetNonInteractiveMode (SETUPAPI.@) + */ +BOOL WINAPI SetupSetNonInteractiveMode(BOOL NonInteractiveFlag) +{ + BOOL OldValue; + + OldValue = (GlobalSetupFlags & PSPGF_NONINTERACTIVE); + pSetupModifyGlobalFlags(PSPGF_NONINTERACTIVE, + NonInteractiveFlag ? PSPGF_NONINTERACTIVE : 0); + + return OldValue; +} /*********************************************************************** * AssertFail (SETUPAPI.@) diff --git a/dll/win32/setupapi/setupapi.spec b/dll/win32/setupapi/setupapi.spec index 527f4fd42b..99de0fca82 100644 --- a/dll/win32/setupapi/setupapi.spec +++ b/dll/win32/setupapi/setupapi.spec @@ -423,7 +423,7 @@ @ stdcall SetupGetLineTextW(ptr long wstr wstr ptr long ptr) @ stdcall SetupGetMultiSzFieldA(ptr long ptr long ptr) @ stdcall SetupGetMultiSzFieldW(ptr long ptr long ptr) -@ stub SetupGetNonInteractiveMode +@ stdcall SetupGetNonInteractiveMode() @ stdcall SetupGetSourceFileLocationA(ptr ptr str ptr ptr long ptr) @ stdcall SetupGetSourceFileLocationW(ptr ptr wstr ptr ptr long ptr) @ stub SetupGetSourceFileSizeA diff --git a/dll/win32/setupapi/stubs.c b/dll/win32/setupapi/stubs.c index 48244b7e6e..c1c6e883b2 100644 --- a/dll/win32/setupapi/stubs.c +++ b/dll/win32/setupapi/stubs.c @@ -103,13 +103,6 @@ WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceAlias(IN HDEVINFO DeviceInfoSe return FALSE; } -WINSETUPAPI BOOL WINAPI SetupSetNonInteractiveMode(BOOL NonInteractiveFlag) -{ - FIXME("(%d) stub\n", NonInteractiveFlag); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - /*********************************************************************** * SetupVerifyInfFileA(SETUPAPI.@) */
6 years
1
0
0
0
[reactos] 01/01: [USER32] Add Ghost window class (#1082)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=6a944b556ae9ca0609975…
commit 6a944b556ae9ca0609975ee387a57f000cb862e4 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Sun Dec 2 18:51:44 2018 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Sun Dec 2 18:51:44 2018 +0900 [USER32] Add Ghost window class (#1082) CORE-11944 --- win32ss/user/user32/CMakeLists.txt | 1 + win32ss/user/user32/controls/ghost.c | 620 ++++++++++++++++++++++++++++++ win32ss/user/user32/controls/regcontrol.c | 7 +- win32ss/user/user32/include/controls.h | 3 + win32ss/user/user32/include/regcontrol.h | 1 + win32ss/user/user32/include/resource.h | 4 + win32ss/user/user32/lang/bg-BG.rc | 3 + win32ss/user/user32/lang/cs-CZ.rc | 3 + win32ss/user/user32/lang/da-DK.rc | 3 + win32ss/user/user32/lang/de-DE.rc | 3 + win32ss/user/user32/lang/el-GR.rc | 3 + win32ss/user/user32/lang/en-US.rc | 3 + win32ss/user/user32/lang/es-ES.rc | 3 + win32ss/user/user32/lang/fr-FR.rc | 3 + win32ss/user/user32/lang/he-IL.rc | 3 + win32ss/user/user32/lang/hu-HU.rc | 3 + win32ss/user/user32/lang/id-ID.rc | 3 + win32ss/user/user32/lang/it-IT.rc | 3 + win32ss/user/user32/lang/ja-JP.rc | 3 + win32ss/user/user32/lang/lt-LT.rc | 3 + win32ss/user/user32/lang/nl-NL.rc | 3 + win32ss/user/user32/lang/no-NO.rc | 3 + win32ss/user/user32/lang/pl-PL.rc | 3 + win32ss/user/user32/lang/pt-BR.rc | 3 + win32ss/user/user32/lang/ro-RO.rc | 3 + win32ss/user/user32/lang/ru-RU.rc | 3 + win32ss/user/user32/lang/sk-SK.rc | 3 + win32ss/user/user32/lang/sv-SE.rc | 3 + win32ss/user/user32/lang/tr-TR.rc | 3 + win32ss/user/user32/lang/uk-UA.rc | 3 + win32ss/user/user32/lang/zh-CN.rc | 3 + 31 files changed, 708 insertions(+), 3 deletions(-) diff --git a/win32ss/user/user32/CMakeLists.txt b/win32ss/user/user32/CMakeLists.txt index fdc280a1a0..b048231fb0 100644 --- a/win32ss/user/user32/CMakeLists.txt +++ b/win32ss/user/user32/CMakeLists.txt @@ -11,6 +11,7 @@ list(APPEND SOURCE controls/button.c controls/combo.c controls/edit.c + controls/ghost.c controls/icontitle.c controls/listbox.c controls/regcontrol.c diff --git a/win32ss/user/user32/controls/ghost.c b/win32ss/user/user32/controls/ghost.c new file mode 100644 index 0000000000..ccc9a6c528 --- /dev/null +++ b/win32ss/user/user32/controls/ghost.c @@ -0,0 +1,620 @@ +/* + * PROJECT: ReactOS user32.dll + * LICENSE: GPL-2.0-or-later (
https://spdx.org/licenses/GPL-2.0-or-later
) + * PURPOSE: Ghost window class + * COPYRIGHT: Copyright 2018 Katayama Hirofumi MZ (katayama.hirofumi.mz(a)gmail.com) + */ + +#include <user32.h> +#include <strsafe.h> + +WINE_DEFAULT_DEBUG_CHANNEL(ghost); + +#define GHOST_TIMER_ID 0xFACEDEAD +#define GHOST_INTERVAL 1000 // one second +#define GHOST_PROP L"GhostProp" + +const struct builtin_class_descr GHOST_builtin_class = +{ + L"Ghost", /* name */ + 0, /* style */ + GhostWndProcA, /* procA */ + GhostWndProcW, /* procW */ + 0, /* extra */ + IDC_WAIT, /* cursor */ + NULL /* brush */ +}; + +static HBITMAP +IntCreate32BppBitmap(INT cx, INT cy) +{ + HBITMAP hbm = NULL; + BITMAPINFO bi; + HDC hdc; + LPVOID pvBits; + + ZeroMemory(&bi, sizeof(bi)); + bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bi.bmiHeader.biWidth = cx; + bi.bmiHeader.biHeight = cy; + bi.bmiHeader.biPlanes = 1; + bi.bmiHeader.biBitCount = 32; + + hdc = CreateCompatibleDC(NULL); + if (hdc) + { + hbm = CreateDIBSection(hdc, &bi, DIB_RGB_COLORS, &pvBits, NULL, 0); + DeleteDC(hdc); + } + return hbm; +} + +static HBITMAP +IntGetWindowBitmap(HWND hwnd, INT cx, INT cy) +{ + HBITMAP hbm = NULL; + HDC hdc, hdcMem; + HGDIOBJ hbmOld; + + hdc = GetWindowDC(hwnd); + if (!hdc) + return NULL; + + hdcMem = CreateCompatibleDC(hdc); + if (!hdcMem) + goto earth; + + hbm = IntCreate32BppBitmap(cx, cy); + if (hbm) + { + hbmOld = SelectObject(hdcMem, hbm); + BitBlt(hdcMem, 0, 0, cx, cy, hdc, 0, 0, SRCCOPY | CAPTUREBLT); + SelectObject(hdcMem, hbmOld); + } + + DeleteDC(hdcMem); + +earth: + ReleaseDC(hwnd, hdc); + + return hbm; +} + +static VOID +IntMakeGhostImage(HBITMAP hbm) +{ + BITMAP bm; + DWORD i, *pdw; + + GetObject(hbm, sizeof(bm), &bm); + + if (bm.bmBitsPixel != 32 || !bm.bmBits) + { + ERR("bm.bmBitsPixel == %d, bm.bmBits == %p\n", + bm.bmBitsPixel, bm.bmBits); + return; + } + + pdw = bm.bmBits; + for (i = 0; i < bm.bmWidth * bm.bmHeight; ++i) + { + *pdw = *pdw | 0x00C0C0C0; // bitwise-OR with ARGB #C0C0C0 + ++pdw; + } +} + +/****************************************************************************/ + +typedef struct GHOST_DATA +{ + HWND hwndTarget; + HBITMAP hbm32bpp; + BOOL bDestroyTarget; +} GHOST_DATA; + +static GHOST_DATA * +Ghost_GetData(HWND hwnd) +{ + return (GHOST_DATA *)GetWindowLongPtrW(hwnd, GWLP_USERDATA); +} + +static HWND +Ghost_GetTarget(HWND hwnd) +{ + GHOST_DATA *pData = Ghost_GetData(hwnd); + if (!pData) + return NULL; + return pData->hwndTarget; +} + +static LPWSTR +Ghost_GetText(HWND hwndTarget, INT *pcchTextW, INT cchExtra) +{ + LPWSTR pszTextW = NULL, pszTextNewW; + INT cchNonExtra, cchTextW = *pcchTextW; + + pszTextNewW = HeapAlloc(GetProcessHeap(), 0, cchTextW * sizeof(WCHAR)); + for (;;) + { + if (!pszTextNewW) + { + ERR("HeapAlloc failed\n"); + if (pszTextW) + HeapFree(GetProcessHeap(), 0, pszTextW); + return NULL; + } + pszTextW = pszTextNewW; + + cchNonExtra = cchTextW - cchExtra; + if (InternalGetWindowText(hwndTarget, pszTextW, + cchNonExtra) < cchNonExtra - 1) + { + break; + } + + cchTextW *= 2; + pszTextNewW = HeapReAlloc(GetProcessHeap(), 0, pszTextW, + cchTextW * sizeof(WCHAR)); + } + + *pcchTextW = cchTextW; + return pszTextW; +} + +static BOOL +Ghost_OnCreate(HWND hwnd, CREATESTRUCTW *lpcs) +{ + HBITMAP hbm32bpp; + HWND hwndTarget, hwndPrev; + GHOST_DATA *pData; + RECT rc; + DWORD style, exstyle; + WCHAR szTextW[320], szNotRespondingW[32]; + LPWSTR pszTextW; + INT cchTextW, cchExtraW, cchNonExtraW; + PWND pWnd = ValidateHwnd(hwnd); + if (pWnd) + { + if (!pWnd->fnid) + { + NtUserSetWindowFNID(hwnd, FNID_GHOST); + } + else if (pWnd->fnid != FNID_GHOST) + { + ERR("Wrong window class for Ghost! fnId 0x%x\n", pWnd->fnid); + return FALSE; + } + } + + // get the target + hwndTarget = (HWND)lpcs->lpCreateParams; + if (!IsWindowVisible(hwndTarget) || // invisible? + GetParent(hwndTarget) || // child? + !IsHungAppWindow(hwndTarget)) // not hung? + { + return FALSE; + } + + // check prop + if (GetPropW(hwndTarget, GHOST_PROP)) + return FALSE; + + // set prop + SetPropW(hwndTarget, GHOST_PROP, hwnd); + + // create user data + pData = HeapAlloc(GetProcessHeap(), 0, sizeof(GHOST_DATA)); + if (!pData) + { + ERR("HeapAlloc failed\n"); + return FALSE; + } + + // get window image + GetWindowRect(hwndTarget, &rc); + hbm32bpp = IntGetWindowBitmap(hwndTarget, + rc.right - rc.left, + rc.bottom - rc.top); + if (!hbm32bpp) + { + ERR("hbm32bpp was NULL\n"); + HeapFree(GetProcessHeap(), 0, pData); + return FALSE; + } + // make a ghost image + IntMakeGhostImage(hbm32bpp); + + // set user data + pData->hwndTarget = hwndTarget; + pData->hbm32bpp = hbm32bpp; + pData->bDestroyTarget = FALSE; + SetWindowLongPtrW(hwnd, GWLP_USERDATA, (LONG_PTR)pData); + + // get style + style = GetWindowLongPtrW(hwndTarget, GWL_STYLE); + exstyle = GetWindowLongPtrW(hwndTarget, GWL_EXSTYLE); + + // get text + cchTextW = ARRAYSIZE(szTextW); + cchExtraW = ARRAYSIZE(szNotRespondingW); + cchNonExtraW = cchTextW - cchExtraW; + if (InternalGetWindowText(hwndTarget, szTextW, + cchNonExtraW) < cchNonExtraW - 1) + { + pszTextW = szTextW; + } + else + { + cchTextW *= 2; + pszTextW = Ghost_GetText(hwndTarget, &cchTextW, cchExtraW); + if (!pszTextW) + { + ERR("Ghost_GetText failed\n"); + DeleteObject(hbm32bpp); + HeapFree(GetProcessHeap(), 0, pData); + return FALSE; + } + } + + // don't use scrollbars. + style &= ~(WS_HSCROLL | WS_VSCROLL | WS_VISIBLE); + + // set style + SetWindowLongPtrW(hwnd, GWL_STYLE, style); + SetWindowLongPtrW(hwnd, GWL_EXSTYLE, exstyle); + + // set text with " (Not Responding)" + LoadStringW(User32Instance, IDS_NOT_RESPONDING, + szNotRespondingW, ARRAYSIZE(szNotRespondingW)); + StringCchCatW(pszTextW, cchTextW, szNotRespondingW); + SetWindowTextW(hwnd, pszTextW); + + // free the text buffer + if (szTextW != pszTextW) + HeapFree(GetProcessHeap(), 0, pszTextW); + + // get previous window of target + hwndPrev = GetWindow(hwndTarget, GW_HWNDPREV); + + // hide target + ShowWindowAsync(hwndTarget, SW_HIDE); + + // shrink the ghost to zero size and insert. + // this will avoid effects. + SetWindowPos(hwnd, hwndPrev, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOOWNERZORDER | + SWP_DRAWFRAME); + + // resume the position and size of ghost + MoveWindow(hwnd, rc.left, rc.top, + rc.right - rc.left, rc.bottom - rc.top, TRUE); + + // make ghost visible + SetWindowLongPtrW(hwnd, GWL_STYLE, style | WS_VISIBLE); + + // redraw + InvalidateRect(hwnd, NULL, TRUE); + + // start timer + SetTimer(hwnd, GHOST_TIMER_ID, GHOST_INTERVAL, NULL); + + return TRUE; +} + +static void +Ghost_Unenchant(HWND hwnd, BOOL bDestroyTarget) +{ + GHOST_DATA *pData = Ghost_GetData(hwnd); + if (!pData) + return; + + pData->bDestroyTarget |= bDestroyTarget; + DestroyWindow(hwnd); +} + +static void +Ghost_OnDraw(HWND hwnd, HDC hdc) +{ + BITMAP bm; + HDC hdcMem; + GHOST_DATA *pData = Ghost_GetData(hwnd); + + if (!pData || !GetObject(pData->hbm32bpp, sizeof(bm), &bm)) + return; + + hdcMem = CreateCompatibleDC(hdc); + if (hdcMem) + { + HGDIOBJ hbmOld = SelectObject(hdcMem, pData->hbm32bpp); + BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, + hdcMem, 0, 0, SRCCOPY | CAPTUREBLT); + SelectObject(hdcMem, hbmOld); + DeleteDC(hdcMem); + } +} + +static void +Ghost_OnNCPaint(HWND hwnd, HRGN hrgn, BOOL bUnicode) +{ + HDC hdc; + + // do the default behaivour + if (bUnicode) + DefWindowProcW(hwnd, WM_NCPAINT, (WPARAM)hrgn, 0); + else + DefWindowProcA(hwnd, WM_NCPAINT, (WPARAM)hrgn, 0); + + // draw the ghost image + hdc = GetWindowDC(hwnd); + if (hdc) + { + Ghost_OnDraw(hwnd, hdc); + ReleaseDC(hwnd, hdc); + } +} + +static void +Ghost_OnPaint(HWND hwnd) +{ + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hwnd, &ps); + if (hdc) + { + // don't draw at here + EndPaint(hwnd, &ps); + } +} + +static void +Ghost_OnMove(HWND hwnd, int x, int y) +{ + RECT rc; + HWND hwndTarget = Ghost_GetTarget(hwnd); + + GetWindowRect(hwnd, &rc); + + // move the target + SetWindowPos(hwndTarget, NULL, rc.left, rc.top, 0, 0, + SWP_NOSIZE | SWP_NOOWNERZORDER | SWP_NOACTIVATE | + SWP_NOSENDCHANGING); +} + +static void +Ghost_OnDestroy(HWND hwnd) +{ + KillTimer(hwnd, GHOST_TIMER_ID); +} + +static void +Ghost_DestroyTarget(GHOST_DATA *pData) +{ + HWND hwndTarget = pData->hwndTarget; + DWORD pid; + HANDLE hProcess; + + pData->hwndTarget = NULL; + GetWindowThreadProcessId(hwndTarget, &pid); + + hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid); + if (hProcess) + { + TerminateProcess(hProcess, -1); + CloseHandle(hProcess); + } + + DestroyWindow(hwndTarget); +} + +static void +Ghost_OnNCDestroy(HWND hwnd) +{ + // delete the user data + GHOST_DATA *pData = Ghost_GetData(hwnd); + if (pData) + { + SetWindowLongPtrW(hwnd, GWLP_USERDATA, 0); + + // delete image + DeleteObject(pData->hbm32bpp); + pData->hbm32bpp = NULL; + + // remove prop + RemovePropW(pData->hwndTarget, GHOST_PROP); + + // show target + ShowWindowAsync(pData->hwndTarget, SW_SHOWNOACTIVATE); + + // destroy target if necessary + if (pData->bDestroyTarget) + { + Ghost_DestroyTarget(pData); + } + + HeapFree(GetProcessHeap(), 0, pData); + } + + NtUserSetWindowFNID(hwnd, FNID_DESTROY); + + PostQuitMessage(0); +} + +static void +Ghost_OnClose(HWND hwnd) +{ + INT id; + WCHAR szAskTerminate[128]; + WCHAR szHungUpTitle[128]; + + // stop timer + KillTimer(hwnd, GHOST_TIMER_ID); + + LoadStringW(User32Instance, IDS_ASK_TERMINATE, + szAskTerminate, ARRAYSIZE(szAskTerminate)); + LoadStringW(User32Instance, IDS_HUNG_UP_TITLE, + szHungUpTitle, ARRAYSIZE(szHungUpTitle)); + + id = MessageBoxW(hwnd, szAskTerminate, szHungUpTitle, + MB_ICONINFORMATION | MB_YESNO); + if (id == IDYES) + { + // destroy the target + Ghost_Unenchant(hwnd, TRUE); + return; + } + + // restart timer + SetTimer(hwnd, GHOST_TIMER_ID, GHOST_INTERVAL, NULL); +} + +static void +Ghost_OnTimer(HWND hwnd, UINT id) +{ + HWND hwndTarget; + GHOST_DATA *pData = Ghost_GetData(hwnd); + + if (id != GHOST_TIMER_ID || !pData) + return; + + // stop the timer + KillTimer(hwnd, id); + + hwndTarget = pData->hwndTarget; + if (!IsWindow(hwndTarget) || !IsHungAppWindow(hwndTarget)) + { + // resume if window is destroyed or responding + Ghost_Unenchant(hwnd, FALSE); + return; + } + + // restart the timer + SetTimer(hwnd, GHOST_TIMER_ID, GHOST_INTERVAL, NULL); +} + +static HICON +Ghost_GetIcon(HWND hwnd, INT fType) +{ + GHOST_DATA *pData = Ghost_GetData(hwnd); + HICON hIcon = NULL; + + if (!pData) + return NULL; + + // same as the original icon + switch (fType) + { + case ICON_BIG: + { + hIcon = (HICON)GetClassLongPtrW(pData->hwndTarget, GCLP_HICON); + break; + } + + case ICON_SMALL: + { + hIcon = (HICON)GetClassLongPtrW(pData->hwndTarget, GCLP_HICONSM); + break; + } + } + + return hIcon; +} + +LRESULT WINAPI +GhostWndProc_common(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, + BOOL unicode) +{ + switch (uMsg) + { + case WM_CREATE: + if (!Ghost_OnCreate(hwnd, (CREATESTRUCTW *)lParam)) + return -1; + break; + + case WM_NCPAINT: + Ghost_OnNCPaint(hwnd, (HRGN)wParam, unicode); + return 0; + + case WM_ERASEBKGND: + Ghost_OnDraw(hwnd, (HDC)wParam); + return TRUE; + + case WM_PAINT: + Ghost_OnPaint(hwnd); + break; + + case WM_MOVE: + Ghost_OnMove(hwnd, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam)); + break; + + case WM_SIZE: + break; + + case WM_SIZING: + return TRUE; + + case WM_SYSCOMMAND: + switch ((UINT)wParam) + { + case SC_MAXIMIZE: + case SC_SIZE: + // sizing-related + return 0; + } + if (unicode) + return DefWindowProcW(hwnd, uMsg, wParam, lParam); + else + return DefWindowProcA(hwnd, uMsg, wParam, lParam); + + case WM_CLOSE: + Ghost_OnClose(hwnd); + break; + + case WM_TIMER: + Ghost_OnTimer(hwnd, (UINT)wParam); + break; + + case WM_NCMOUSEMOVE: + if (unicode) + DefWindowProcW(hwnd, uMsg, wParam, lParam); + else + DefWindowProcA(hwnd, uMsg, wParam, lParam); + SetCursor(LoadCursor(NULL, IDC_WAIT)); + return 0; + + case WM_GETICON: + return (LRESULT)Ghost_GetIcon(hwnd, (INT)wParam); + + case WM_COMMAND: + if (LOWORD(wParam) == 3333) + Ghost_Unenchant(hwnd, FALSE); + break; + + case WM_DESTROY: + Ghost_OnDestroy(hwnd); + break; + + case WM_NCDESTROY: + Ghost_OnNCDestroy(hwnd); + break; + + default: + { + if (unicode) + return DefWindowProcW(hwnd, uMsg, wParam, lParam); + else + return DefWindowProcA(hwnd, uMsg, wParam, lParam); + } + } + return 0; +} + +LRESULT CALLBACK +GhostWndProcA(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + return GhostWndProc_common(hwnd, uMsg, wParam, lParam, FALSE); +} + +LRESULT CALLBACK +GhostWndProcW(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + return GhostWndProc_common(hwnd, uMsg, wParam, lParam, TRUE); +} diff --git a/win32ss/user/user32/controls/regcontrol.c b/win32ss/user/user32/controls/regcontrol.c index ff9c9c9609..3360841ffc 100644 --- a/win32ss/user/user32/controls/regcontrol.c +++ b/win32ss/user/user32/controls/regcontrol.c @@ -64,6 +64,7 @@ static const struct { &EDIT_builtin_class, FNID_EDIT, ICLS_EDIT}, /* { &ICONTITLE_builtin_class, FNID_ICONTITLE, ICLS_ICONTITLE}, // moved to win32k */ { &STATIC_builtin_class, FNID_STATIC, ICLS_STATIC}, + { &GHOST_builtin_class, FNID_GHOST, ICLS_GHOST}, }; BOOL WINAPI RegisterSystemControls(VOID) @@ -175,8 +176,8 @@ BOOL WINAPI RegisterClientPFN(VOID) pfnClientW.pfnStaticWndProc = StaticWndProcW; pfnClientA.pfnImeWndProc = ImeWndProcA; pfnClientW.pfnImeWndProc = ImeWndProcW; - pfnClientA.pfnGhostWndProc = DefWindowProcA; - pfnClientW.pfnGhostWndProc = DefWindowProcW; + pfnClientA.pfnGhostWndProc = GhostWndProcA; + pfnClientW.pfnGhostWndProc = GhostWndProcW; pfnClientA.pfnHkINLPCWPSTRUCT = DefWindowProcA; pfnClientW.pfnHkINLPCWPSTRUCT = DefWindowProcW; pfnClientA.pfnHkINLPCWPRETSTRUCT = DefWindowProcA; @@ -199,7 +200,7 @@ BOOL WINAPI RegisterClientPFN(VOID) pfnClientWorker.pfnMDIClientWndProc = MDIClientWndProc_common; pfnClientWorker.pfnStaticWndProc = StaticWndProc_common; pfnClientWorker.pfnImeWndProc = ImeWndProc_common; - pfnClientWorker.pfnGhostWndProc = User32DefWindowProc; + pfnClientWorker.pfnGhostWndProc = GhostWndProc_common; pfnClientWorker.pfnCtfHookProc = User32DefWindowProc; Status = NtUserInitializeClientPfnArrays( &pfnClientA, diff --git a/win32ss/user/user32/include/controls.h b/win32ss/user/user32/include/controls.h index 15ddd867ae..317e2f9733 100644 --- a/win32ss/user/user32/include/controls.h +++ b/win32ss/user/user32/include/controls.h @@ -104,6 +104,9 @@ LRESULT WINAPI ComboWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPAR LRESULT WINAPI EditWndProcA(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT WINAPI EditWndProcW(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode); +LRESULT WINAPI GhostWndProcA( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); +LRESULT WINAPI GhostWndProcW( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); +LRESULT WINAPI GhostWndProc_common( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL unicode); LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); LRESULT WINAPI ListBoxWndProc_common( HWND hwnd, UINT msg,WPARAM wParam, LPARAM lParam, BOOL unicode); diff --git a/win32ss/user/user32/include/regcontrol.h b/win32ss/user/user32/include/regcontrol.h index 2b5330cd6c..f1b3b69bf0 100644 --- a/win32ss/user/user32/include/regcontrol.h +++ b/win32ss/user/user32/include/regcontrol.h @@ -38,6 +38,7 @@ extern const struct builtin_class_descr MDICLIENT_builtin_class; extern const struct builtin_class_descr MENU_builtin_class; extern const struct builtin_class_descr SCROLL_builtin_class; extern const struct builtin_class_descr STATIC_builtin_class; +extern const struct builtin_class_descr GHOST_builtin_class; ATOM WINAPI RegisterClassExWOWW(WNDCLASSEXW *,LPDWORD,WORD,DWORD,BOOL); BOOL FASTCALL VersionRegisterClass(PCWSTR,LPCWSTR,HANDLE,HMODULE *); diff --git a/win32ss/user/user32/include/resource.h b/win32ss/user/user32/include/resource.h index 3d0088fec2..9c1b3694f8 100644 --- a/win32ss/user/user32/include/resource.h +++ b/win32ss/user/user32/include/resource.h @@ -8,6 +8,9 @@ #pragma once #define IDS_ERROR (2) +#define IDS_NOT_RESPONDING (3) +#define IDS_ASK_TERMINATE (4) +#define IDS_HUNG_UP_TITLE (5) /* * Button names IDs. @@ -26,3 +29,4 @@ #define IDS_HELP (808) #define IDS_TRYAGAIN (809) #define IDS_CONTINUE (810) + diff --git a/win32ss/user/user32/lang/bg-BG.rc b/win32ss/user/user32/lang/bg-BG.rc index 01413b769d..b1a4c308b1 100644 --- a/win32ss/user/user32/lang/bg-BG.rc +++ b/win32ss/user/user32/lang/bg-BG.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Грешка" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "Добре" IDS_CANCEL "Отказ" IDS_ABORT "Прекъсване" diff --git a/win32ss/user/user32/lang/cs-CZ.rc b/win32ss/user/user32/lang/cs-CZ.rc index 6c74db4b84..aeade5a416 100644 --- a/win32ss/user/user32/lang/cs-CZ.rc +++ b/win32ss/user/user32/lang/cs-CZ.rc @@ -63,6 +63,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Chyba" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Storno" IDS_ABORT "&Přerušit" diff --git a/win32ss/user/user32/lang/da-DK.rc b/win32ss/user/user32/lang/da-DK.rc index aa4948bf8b..447b4e2f06 100644 --- a/win32ss/user/user32/lang/da-DK.rc +++ b/win32ss/user/user32/lang/da-DK.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Fejl" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Fortryd" IDS_ABORT "&Afbryd" diff --git a/win32ss/user/user32/lang/de-DE.rc b/win32ss/user/user32/lang/de-DE.rc index 4435576d94..38ccbdfe4a 100644 --- a/win32ss/user/user32/lang/de-DE.rc +++ b/win32ss/user/user32/lang/de-DE.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Fehler" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Abbrechen" IDS_ABORT "&Abbrechen" diff --git a/win32ss/user/user32/lang/el-GR.rc b/win32ss/user/user32/lang/el-GR.rc index 843406588a..d750968c93 100644 --- a/win32ss/user/user32/lang/el-GR.rc +++ b/win32ss/user/user32/lang/el-GR.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Σφάλμα" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "’κυρο" IDS_ABORT "&Ματαίωση" diff --git a/win32ss/user/user32/lang/en-US.rc b/win32ss/user/user32/lang/en-US.rc index 41e64bf2a6..24f3bbaee8 100644 --- a/win32ss/user/user32/lang/en-US.rc +++ b/win32ss/user/user32/lang/en-US.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Error" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Cancel" IDS_ABORT "&Abort" diff --git a/win32ss/user/user32/lang/es-ES.rc b/win32ss/user/user32/lang/es-ES.rc index 51b635829c..1b2e4548ca 100644 --- a/win32ss/user/user32/lang/es-ES.rc +++ b/win32ss/user/user32/lang/es-ES.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Error" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "Aceptar" IDS_CANCEL "Cancelar" IDS_ABORT "&Abortar" diff --git a/win32ss/user/user32/lang/fr-FR.rc b/win32ss/user/user32/lang/fr-FR.rc index 609617302b..ee1cfdf412 100644 --- a/win32ss/user/user32/lang/fr-FR.rc +++ b/win32ss/user/user32/lang/fr-FR.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Erreur" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Annuler" IDS_ABORT "&Abandonner" diff --git a/win32ss/user/user32/lang/he-IL.rc b/win32ss/user/user32/lang/he-IL.rc index 93b49a1b3f..d09463ddd6 100644 --- a/win32ss/user/user32/lang/he-IL.rc +++ b/win32ss/user/user32/lang/he-IL.rc @@ -59,6 +59,9 @@ END STRINGTABLE BEGIN IDS_ERROR "שגיאה" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "אישור" IDS_CANCEL "ביטול" IDS_ABORT "&בטל" diff --git a/win32ss/user/user32/lang/hu-HU.rc b/win32ss/user/user32/lang/hu-HU.rc index c91da00f16..64194f4d15 100644 --- a/win32ss/user/user32/lang/hu-HU.rc +++ b/win32ss/user/user32/lang/hu-HU.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Hiba" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Mégse" IDS_ABORT "&Megszakít" diff --git a/win32ss/user/user32/lang/id-ID.rc b/win32ss/user/user32/lang/id-ID.rc index 31f9b4c634..b3e26d9a53 100644 --- a/win32ss/user/user32/lang/id-ID.rc +++ b/win32ss/user/user32/lang/id-ID.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Salah" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Batal" IDS_ABORT "&Batal" diff --git a/win32ss/user/user32/lang/it-IT.rc b/win32ss/user/user32/lang/it-IT.rc index 40dd1b948c..14a5c8d5f8 100644 --- a/win32ss/user/user32/lang/it-IT.rc +++ b/win32ss/user/user32/lang/it-IT.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Errore" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Annulla" IDS_ABORT "&Interrompi" diff --git a/win32ss/user/user32/lang/ja-JP.rc b/win32ss/user/user32/lang/ja-JP.rc index a9451dc530..cf5e221c84 100644 --- a/win32ss/user/user32/lang/ja-JP.rc +++ b/win32ss/user/user32/lang/ja-JP.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "エラー" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "キャンセル" IDS_ABORT "中止(&A)" diff --git a/win32ss/user/user32/lang/lt-LT.rc b/win32ss/user/user32/lang/lt-LT.rc index 4bc6a221f3..30cdd31211 100644 --- a/win32ss/user/user32/lang/lt-LT.rc +++ b/win32ss/user/user32/lang/lt-LT.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Klaida" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "Gerai" IDS_CANCEL "Atsisakyti" IDS_ABORT "N&utraukti" diff --git a/win32ss/user/user32/lang/nl-NL.rc b/win32ss/user/user32/lang/nl-NL.rc index 6ca628e2f9..28635a19c4 100644 --- a/win32ss/user/user32/lang/nl-NL.rc +++ b/win32ss/user/user32/lang/nl-NL.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Fout" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Annuleren" IDS_ABORT "&Afbreken" diff --git a/win32ss/user/user32/lang/no-NO.rc b/win32ss/user/user32/lang/no-NO.rc index 7ba5d89482..5f2ef946ff 100644 --- a/win32ss/user/user32/lang/no-NO.rc +++ b/win32ss/user/user32/lang/no-NO.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Feil" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Avbryt" IDS_ABORT "&Avbryt" diff --git a/win32ss/user/user32/lang/pl-PL.rc b/win32ss/user/user32/lang/pl-PL.rc index 9754bca593..749216c8aa 100644 --- a/win32ss/user/user32/lang/pl-PL.rc +++ b/win32ss/user/user32/lang/pl-PL.rc @@ -63,6 +63,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Błąd" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Anuluj" IDS_ABORT "&Przerwij" diff --git a/win32ss/user/user32/lang/pt-BR.rc b/win32ss/user/user32/lang/pt-BR.rc index 1917efb4db..e28731e47a 100644 --- a/win32ss/user/user32/lang/pt-BR.rc +++ b/win32ss/user/user32/lang/pt-BR.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Erro" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Cancelar" IDS_ABORT "&Abortar" diff --git a/win32ss/user/user32/lang/ro-RO.rc b/win32ss/user/user32/lang/ro-RO.rc index 8a80fde59e..039dfdcf18 100644 --- a/win32ss/user/user32/lang/ro-RO.rc +++ b/win32ss/user/user32/lang/ro-RO.rc @@ -63,6 +63,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Eroare" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "Con&firmă" IDS_CANCEL "A&nulează" IDS_ABORT "Aba&ndon" diff --git a/win32ss/user/user32/lang/ru-RU.rc b/win32ss/user/user32/lang/ru-RU.rc index 3f1542667f..517c503c3f 100644 --- a/win32ss/user/user32/lang/ru-RU.rc +++ b/win32ss/user/user32/lang/ru-RU.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Ошибка" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Отмена" IDS_ABORT "Пр&ервать" diff --git a/win32ss/user/user32/lang/sk-SK.rc b/win32ss/user/user32/lang/sk-SK.rc index cd02052dba..c749e4e770 100644 --- a/win32ss/user/user32/lang/sk-SK.rc +++ b/win32ss/user/user32/lang/sk-SK.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Chyba" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Zrušiť" IDS_ABORT "&Prerušiť" diff --git a/win32ss/user/user32/lang/sv-SE.rc b/win32ss/user/user32/lang/sv-SE.rc index 841e2a02ca..04c7f44f07 100644 --- a/win32ss/user/user32/lang/sv-SE.rc +++ b/win32ss/user/user32/lang/sv-SE.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Fel" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Avbryt" IDS_ABORT "&Avbryt" diff --git a/win32ss/user/user32/lang/tr-TR.rc b/win32ss/user/user32/lang/tr-TR.rc index 2d081a0456..f318ffaf0d 100644 --- a/win32ss/user/user32/lang/tr-TR.rc +++ b/win32ss/user/user32/lang/tr-TR.rc @@ -60,6 +60,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Yanlışlık" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "Tamam" IDS_CANCEL "İptal" IDS_ABORT "&Durdur" diff --git a/win32ss/user/user32/lang/uk-UA.rc b/win32ss/user/user32/lang/uk-UA.rc index 42caa463a6..9c79df5c50 100644 --- a/win32ss/user/user32/lang/uk-UA.rc +++ b/win32ss/user/user32/lang/uk-UA.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "Помилка" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "OK" IDS_CANCEL "Скасувати" IDS_ABORT "П&ерервати" diff --git a/win32ss/user/user32/lang/zh-CN.rc b/win32ss/user/user32/lang/zh-CN.rc index 8ea0703984..2992309b3e 100644 --- a/win32ss/user/user32/lang/zh-CN.rc +++ b/win32ss/user/user32/lang/zh-CN.rc @@ -58,6 +58,9 @@ END STRINGTABLE BEGIN IDS_ERROR "错误" + IDS_NOT_RESPONDING " (Not Responding)" + IDS_ASK_TERMINATE "This application is hung up. May I terminate this app?" + IDS_HUNG_UP_TITLE "Hung up!" IDS_OK "确定" IDS_CANCEL "取消" IDS_ABORT "中止(&A)"
6 years
1
0
0
0
← Newer
1
...
28
29
30
31
32
33
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Results per page:
10
25
50
100
200