Compare commits

...

45 Commits

Author SHA1 Message Date
Oleg Dubinskiy
2254d69b33 [REACTOS] Fix LoadCursorW() incorrect usage cases
Fix wrong MAKEINTRESOURCEW() macro usage cases in LoadCursorW() system-wide.
MSDN documentation for this function states we need to use MAKEINTRESOURCEW() macro only for internal application-defined cursors (loaded from the app instance specified by hInstance parameter), but not for system-defined cursors (those begin with IDC_* prefix), in case when hInstance is NULL.
So get rid from MAKEINTRESOURCEW() macro usage for all cases when hInstance parameter is NULL. And on the contrary, when hInstance is valid and points to the application instance, then use it for the resource identifier.
2024-06-30 00:24:40 +02:00
Hermès Bélusca-Maïto
7e89227a00 [MOUNTMGR] Fix initial sending of device online notification (#7030)
1. MountMgrMountedDeviceArrival():
   Fix the conditions under which the device's online notifications
   are skipped (SkipNotifications == TRUE) and fix the code comments.
   Now, things make much more sense:
   online notifications are skipped when the device is already offline
   or is a legacy (NT <= 4) fault-tolerant volume (see point 2 below),
   or is NOT mounted (doesn't have a drive letter).
   Previously, we were sending an online notification if the device
   was NOT mounted (why?!...) or if it was deemed as "valid" (wrongly
   determined, see point 2 below).

2. QueryDeviceInformation():
   * The usage of the "Valid" parameter didn't make much sense. Indeed,
     when a partition/volume device is reported to the Mount Manager,
     it's already valid. (Also, setting "Valid" to TRUE only in the case
     of an MBR partition while ignoring GPT ones, and resetting it to
     FALSE if IOCTL_STORAGE_GET_DEVICE_NUMBER returned success, pointed
     to something incorrect was going on.)
     Instead, what we are checking here is whether the device is a
     legacy fault-tolerant volume: such volume can only reside on an
     MBR disk, have the expected partition type, and does not really
     reside on a specific storage device (hence the check for
     IOCTL_STORAGE_GET_DEVICE_NUMBER returning failure).

   * Take also the opportunity to SAL2-ify the function.
2024-06-25 22:51:08 +02:00
Hermès Bélusca-Maïto
5f26356079 [MOUNTMGR] Rectify "NoAutoMount" usage (#7030)
This "NoAutoMount" member was not consistently used. Sometimes it was
used correctly, some other times it was used as "not NoAutoMount" i.e.
"AutoMount" enabled.
Fix this consistently throughout the source, and fix also some comments.
2024-06-25 22:51:07 +02:00
Jose Carlos Jesus
2aad6b133f [ACCESS] Improve Portuguese (pt-PT) translation (#7028)
- Add file header
- Add missing accelerator keys
- Rearrange the message so it can fit in the window
- Change SUBLANG to NEUTRAL
2024-06-25 12:48:35 +00:00
Jose Carlos Jesus
fc7a74506b [JOY] Improve Portuguese (pt-PT) translation (#7027)
Additionally:
- Remove accelerators from Ok and Cancel buttons.
- Add lost accelerator keys.
- Add resource file header.
2024-06-25 12:44:32 +00:00
Václav Zouzalík
d23d61b63f [SHIMGVW] Add Esperanto (eo-AA) translation (#7023)
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2024-06-25 12:40:17 +00:00
Stanislav Motylkov
4879915e54 [SHELL32] Sync shell view menu "Paste" / "Paste shortcut" items (#6994)
- Sync translations of the same menu items in MENU_002 and MENU_003.
- Add missing accelerators.
- Also fix colliding accelerators/mnemonic keys where possible.

CORE-19243
2024-06-25 12:30:27 +00:00
Whindmar Saksit
d24675b63d [SHELL32][BROWSEUI] CopyMoveToMenu must initialize without a PIDL folder (#7047)
- IShellExtInit cannot rely on a folder PIDL being present
- Use common QueryContextMenu function for both menu items
- Allow copy to the same folder
- Disable toolbar buttons when the selection is not valid
- Minor DefView cache enhancement and bugfixes
2024-06-25 00:29:35 +02:00
Whindmar Saksit
df5affedce [BROWSEUI] Ensure menu dock site is visible when parent ShowDW is called (#7045)
Addendum to 674136b (PR #7035)

CORE-19659
2024-06-24 23:51:57 +02:00
Hermès Bélusca-Maïto
2cdd5eca7b [PSDK] ntdddisk.h, winioctl.h: Improve/sync partition types and Is[FT|Recognized]Partition() macros (#7033)
- Synchronize PARTITION_*** definitions between ntdddisk.h and winioctl.h

- Make IsFTPartition() macro definition more accurate with Win2003/Vista+
  WDK definition. In particular, partition types that would conflict with
  3rd-party ones are not present in this macro. (See comment in header
  for more details.)
  Simplify also its definition by factoring the common
    ((PartitionType) & PARTITION_NTFT)
  piece.

- It can be recognized, in all DDK/WDK versions, that the first part of
  the IsRecognizedPartition() macro definition is basically the definition
  of IsFTPartition(). So, take this opportunity to simplify the definition
  of IsRecognizedPartition() accordingly without losing any functionality.
2024-06-24 16:29:13 +02:00
Hermès Bélusca-Maïto
a2777cd828 [SETUPLIB] Cleanup some partition getters and remove GetDiskOrPartition.
- osdetect.c: Replace usage of GetDiskOrPartition by SelectPartition.
2024-06-24 16:28:07 +02:00
Whindmar Saksit
63935f857f [SHELL32] Implement the desktop folder menu for Explorer tree (#7026)
Enumerates but does not actually allow you to get CF_HDROP if the desktop PIDL is present in the dataobject.
2024-06-21 19:19:49 +02:00
Whindmar Saksit
674136bcd0 [BROWSEUI] Save/Restore ShellBrowser bar states (#7035)
Save/Restore the state of the ShellBrowser toolbar/addressbar/statusbar.

Windows shares the state of the Go button and the locked state between Explorer and Internet Explorer but the bar states are not shared.

Notes:
- Seems to fix CORE-17236.
- The stream layout does not match Windows so it uses a different name. The toolbar customize dialog needs to be fixed before it makes sense trying to save the toolbar state and the layout of other bands.

CORE-17236
2024-06-21 19:17:13 +02:00
Whindmar Saksit
75db8c633a [SHELL32] SHMultiFileProperties workaround and minimal SHObjectProperties (#7025) 2024-06-21 16:26:52 +02:00
Václav Zouzalík
7b7c378188 [WINLOGON] Update Czech (cs-CZ) translation (#7036) 2024-06-21 12:42:13 +03:00
Jose Carlos Jesus
9cf9126191 [REGEDIT] Update Portuguese (pt-PT) translation (#6979) 2024-06-21 11:34:47 +03:00
Hermès Bélusca-Maïto
99f0937fd0 [SETUPLIB][USETUP] Finish unification of extended and primary/logical partitions
See commits ebcf3cf38 and c9c6902f0 (PR #5837)

In addition, correctly set the type of extended partition being used,
depending on whether it is contained below or above the 1024-cylinder
boundary (tested on NT).
2024-06-20 17:21:51 +02:00
Doug Lyons
cd88a97115 [NTUSER] Fix popup menu positioning for Miranda IM (#6981)
CORE-17838
2024-06-19 18:55:12 -05:00
Hermès Bélusca-Maïto
3fe12f1a7c [NTOS:IO] IopCreateArcNamesDisk(): Fix the ArcName link creation condition check.
The bug was introduced in commit 6d0861e9e (r49131).
2024-06-19 17:26:40 +02:00
Hermès Bélusca-Maïto
5e3f3f59df [NTOS:IO] IopVerifyDiskSignature(): simplify code and SAL2-annotate 2024-06-19 17:25:42 +02:00
Hermès Bélusca-Maïto
85d338ed65 [NTOS:IO] arcname.c: Minor formatting fixes and comments improvements 2024-06-19 17:25:34 +02:00
Doug Lyons
29a56f326a [REGEDIT] Fix splitter move redraw issues. (#6992)
* Add "HACK" per reviewer comment
* CORE-19576
2024-06-19 00:39:39 -05:00
Katayama Hirofumi MZ
55898a7ffd [SHELL32] Make some PIDL (_IL*) functions Unicode (#7018)
There were encoding problems due to non-
Unicode functions.
JIRA issue: CORE-19653
- Adapt _ILGetDrive, _ILGetExtension,
  _ILGetFileAttributes, _ILGetFileDate,
  _ILGetFileSize, and _ILGetFileType
  functions to Unicode.
- Adapt SHELL_IsShortcut and
  SHGetFileInfoW functions to Unicode.
- Delete useless _ILSimpleGetText
  function.
2024-06-19 04:32:40 +09:00
Thamatip Chitpong
91af99323f [SHELL32] Enable visual styles for RunDLL
Enable visual styles using RunDLL manifest (resource ID 123).
CORE-12285

This was documented here:
https://learn.microsoft.com/en-us/windows/win32/controls/cookbook-overview?redirectedfrom=MSDN#using-comctl32-version-6-in-control-panel-or-a-dll-that-is-run-by-rundll32exe
2024-06-18 21:06:29 +07:00
Thamatip Chitpong
99c0d53413 [SHELL32] Folder options: Use MAKEINTRESOURCE instead of LoadString 2024-06-18 21:06:29 +07:00
Joachim Henze
32d615fc10 [DD] Keep the network drivers infs 8.3 like on MS Windows (#7007)
Windows has all its network drivers inf files in 8.3.

This is an addendum to 0.4.15-dev-52-g 019f21ee1d
which moved us further away from our target.

The commit on its own was a good idea actually to get the inf into the drivers directory
and therefore simplifies adding and excluding drivers more locally (e.g. excluding works by
adding a single hashtag within the specific drivers CMakeLists.txt now).

But that cool feature doesn't require us to move away from our target.

For the record:
The historic netrtpnt.inf and netisa.inf (both 8.3) have been merged to
netne2000.inf (not 8.3) by 0.4.15-dev-2763-g 6924b8ff39
Unification of that was cool too,
but again: 8.3 is superior. Therefore netne.inf for that.

Worst of all: Since the .inf files did contain their filename within a comment also, that means
the historic renaming by the mentioned commit invalidated that comment.
netamd.inf fixed by restoring the ancient filename before 0.4.15-dev-52-g 019f21ee1d
netrtl.inf fixed by restoring the ancient filename before 0.4.15-dev-52-g 019f21ee1d
netne.inf I fixed the comment manually.
2024-06-17 22:41:31 +02:00
Jose Carlos Jesus
0abd920db9 [KBSWITCH] Add Portuguese (pt-PT) translation (#7008)
Also fix SUBLANG for Portuguese Brazilian (pt-BR) translation.
2024-06-17 19:42:13 +03:00
Jose Carlos Jesus
c43a638fc1 [INPUT] Update Portuguese (pt-PT) translation (#7032)
- Change SUBLANG to NEUTRAL.
- Add resource file header.
2024-06-17 19:20:14 +03:00
Václav Zouzalík
18a3d21dd7 [SHIMGVW] Update German (de-DE) translation (#7021)
Translate new strings added in 084fae1eb4 (#6186) into German.
2024-06-17 18:40:29 +03:00
Hermès Bélusca-Maïto
6aed3b5117 [PSDK] ntdddisk.h: Add missing global parentheses around IsFTPartition() definition
CORE-16499

Addendum to commit 0a0e6a9f0 that introduced the problem.

Thanks to Hervé Poussineau for having caught it.

Fixes logic errors, and resulting compilation warnings/errors with GCC
in situations like the following one:
```c
if ((PartitionInfo.PartitionStyle == PARTITION_STYLE_MBR) &&
    IsFTPartition(PartitionInfo.Mbr.PartitionType))
{ ... }
```
error: suggest parentheses around '&&' within '||' [-Werror=parentheses]
 if ((PartitionInfo.PartitionStyle == PARTITION_STYLE_MBR) &&
cc1: all warnings being treated as errors
2024-06-17 17:18:18 +02:00
Katayama Hirofumi MZ
9164419c9c [FONTS] Retry: Add our 'Microsoft Sans Serif' font (#7022)
Retrial of #3818.
JIRA issue: CORE-16435
The font name is "Microsoft Sans Serif". This font is not Microsoft's font.
This font was not a solution of CORE-16435 but we add this font as a side
product of CORE-16435.
- Add media/fonts/micross.ttf as "Microsoft Sans Serif" font.
- The font height is 14%-shrinked from #3818.
- Add media/fonts/doc/MicrosoftSansSerif/LICENSE_OFL.txt.
- Modify CMakeLists.txt to add the font.
- Improve "J" and "Q".
Version: 3
License: SIL Open Font License 1.1
2024-06-16 10:08:17 +09:00
Doug Lyons
6190a97df4 [NTGDI][FREETYPE] Multiple indirect Font Substitutes fix for Factusol (#7020)
Fixes double use of Font Substitutes "Helv" -> "MS Sans Serif" -> "Tahoma".
2024-06-15 17:08:59 -05:00
Timo Kreuzer
365c2c1ce3 [HAL:APIC] Fix HalSetTimeIncrement
Fix calculation of clock rate. Previously it would go above the maximum, causing issues with KeUpdateSystemTime.
2024-06-15 14:22:20 +02:00
Katayama Hirofumi MZ
e8b88cf879 Revert "[BOOT] Don't create CSIDL_ADMINTOOLS folder in initial (#6551)" (#7017)
Reverts #6551
This caused the non-English programs menu
items to not be populated.
JIRA issue: CORE-12328 will have to be
reopened afterwards and approached
differently
JIRA issue: CORE-19652 will get resolved
2024-06-14 11:08:14 +09:00
Joachim Henze
3e6f65ffcd [DC21X4] Fix uninitialized variable read (#6984)
This is the network driver which is used for MSVPC 2007.

I spotted it during a WIP-backport-experiment of the driver, when compiling with GCC4.7.2, which warned about it.
GCC8.4.0 unfortunately is blind to that on master head, for unknown reasons. Not good.
MSVC github buildbot is also blind to that on master head, for unknown reasons. Not good.
We later found that at least Clang did also warn about it on master head.
2024-06-13 21:24:23 +02:00
Thamatip Chitpong
2d9a4b4a87 [SHELL32] Control_DoWindow: Add file browser fallback
If Explorer shell is not available, use ReactOS's alternative file browser instead.
CORE-19648
2024-06-14 02:14:10 +07:00
Thamatip Chitpong
8398c9fcfb [CONTROL] OpenShellFolder: Add file browser fallback
If Explorer shell is not available, use ReactOS's alternative file browser instead.
CORE-19648
2024-06-14 02:14:10 +07:00
Thamatip Chitpong
48c036e7e7 [NCPA] DisplayApplet: Add file browser fallback
If Explorer shell is not available, use ReactOS's alternative file browser instead.
CORE-19648
2024-06-14 02:14:10 +07:00
Hermès Bélusca-Maïto
ab0e04c81d [MOUNTMGR] Introduce MountMgrSendSyncDeviceIoCtl() to replace repeated code (#6960)
See https://www.osr.com/blog/2018/02/14/beware-iobuilddeviceiocontrolrequest/
for some details about IRQL requirements.
2024-06-13 20:01:16 +02:00
Hermès Bélusca-Maïto
50271949e7 [PSDK] winioctl.h fixes; make ntddvol.h winioctl.h-compatible (#7010)
winioctl.h:
- Re-organize definitions according to the
  NT DDK headers they have been taken from.
- Add missing include guards to some definitions.
- Add missing IsFTPartition() macro.
- Add missing volume definitions.

ntddvol.h:
- Guard definitions duplicated in winioctl.h.
- Add missing NTDDI_VERSION checks.
  Note: IOCTL_VOLUME_POST_ONLINE is Win8+.
2024-06-13 19:53:23 +02:00
Václav Zouzalík
6cd97d8423 [SHIMGVW] Update Czech (cs-CZ) and Slovak (sk-SK) translations (#6825)
- [SHIMGVW] Update Czech (cs-CZ) translation
- [SHIMGVW] Update Slovak (sk-SK) translation
2024-06-13 19:12:45 +03:00
Jose Carlos Jesus
113b3d6261 [CPL] Update Portuguese (pt-PT) translation (#6718)
- [APPWIZ] Update Portuguese (pt-PT) translation
- [CONSOLE] Update Portuguese (pt-PT) translation
- [HDWWIZ] Update Portuguese (pt-PT) translation
- [HOTPLUG] Update Portuguese (pt-PT) translation
- [INETCPL] Update Portuguese (pt-PT) translation

Reviewed-by: Marco Pisco <marco@marcopisco.com>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2024-06-13 18:26:25 +03:00
Jose Carlos Jesus
cbb6603460 [MSUTB] Add Portuguese (pt-PT) translation (#6690) 2024-06-13 17:01:04 +03:00
Ratin Gao
67d5a53839 [TRANSLATION] Improve Simplified Chinese (zh-CN) translation (#6804)
- Add and improve translation
- Fix mistakes

Reviewed-by: Chilung Chan <eason066@gmail.com>
Reviewed-by: yangyangdaji <1504305527@qq.com>
Reviewed-by: He Yang <1160386205@qq.com>
2024-06-13 16:36:41 +03:00
Whindmar Saksit
7c3d3851b8 [SHELL32] Respect menu Ctrl/Shift in CMenuBand and SHBrowseForFolder (#7015) 2024-06-13 13:11:34 +02:00
153 changed files with 3012 additions and 2109 deletions

View File

@@ -74,15 +74,16 @@ OpenShellFolder(LPWSTR lpFolderCLSID)
WCHAR szParameters[MAX_PATH];
/*
* Open a shell folder using "explorer.exe". The passed CLSIDs
* are all subfolders of the "Control Panel" shell folder.
* Open a shell folder using "explorer.exe". If Explorer shell is not
* available, use ReactOS's alternative file browser instead.
* The passed CLSIDs are all subfolders of the "Control Panel" shell folder.
*/
StringCbCopyW(szParameters, sizeof(szParameters), L"/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}");
StringCbCatW(szParameters, sizeof(szParameters), lpFolderCLSID);
return (INT_PTR)ShellExecuteW(NULL,
L"open",
L"explorer.exe",
GetShellWindow() ? L"explorer.exe" : L"filebrowser.exe",
szParameters,
NULL,
SW_SHOWDEFAULT) > 32;

View File

@@ -5,6 +5,7 @@
* TRANSLATORS: Copyright 2009 Elton Chung aka MfldElton <elton328@gmail.com>
* Copyright 2017 Li Keqing <auroracloud4096@gmail.com>
* Copyright 2018-2022 Luke Luo <njlyf2011@hotmail.com>
* Copyright 2024 Ratin Gao <ratin@knsoft.org>
*/
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
@@ -19,12 +20,12 @@ BEGIN
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
IDS_ERROR_NOFONT "%1不是一个有效的字体文件。"
IDS_ERROR_NOCLASS "无法初始化窗口。"
IDS_ERROR_ISINSTALLED "This font is already installed!"
IDS_ERROR_FONTCPY "Failed to copy the font file!"
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
IDS_ERROR_REGISTER "Failed to register the new font!"
IDS_SUCCESS "Success"
IDS_COMPLETED "Font installation completed."
IDS_ERROR_ISINSTALLED "此字体已安装!"
IDS_ERROR_FONTCPY "复制字体文件失败!"
IDS_ERROR_OPENKEY "无法访问字体注册表项!"
IDS_ERROR_REGISTER "注册新字体失败!"
IDS_SUCCESS "成功"
IDS_COMPLETED "字体安装完成。"
IDS_FILTER_LIST "所有支持的字体 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
字体文件 (*.fon;*.fnt)\0*.fon;*.fnt\0\
TrueType 字体 (*.ttf)\0*.ttf\0\

View File

@@ -1092,7 +1092,11 @@ int WINAPI wWinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int c
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = LoadIconW( hInst, MAKEINTRESOURCEW(IDI_WINEMINE) );
#ifndef __REACTOS__
wc.hCursor = LoadCursorW( 0, (LPWSTR)IDI_APPLICATION );
#else
wc.hCursor = LoadCursorW(NULL, (LPWSTR)IDC_ARROW);
#endif
wc.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); //MOD for ROS
wc.lpszMenuName = MAKEINTRESOURCEW(IDM_WINEMINE);
wc.lpszClassName = appname;

View File

@@ -56,6 +56,9 @@ IDI_MAIN ICON "res/kbswitch.ico"
#ifdef LANGUAGE_PT_BR
#include "lang/pt-BR.rc"
#endif
#ifdef LANGUAGE_PT_PT
#include "lang/pt-PT.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif

View File

@@ -1,6 +1,6 @@
/* Translation and UTF-8 Conversion by mkbu95 <mkbu95@gmail.com> (August, 2011) */
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
IDR_POPUP MENU
BEGIN

View File

@@ -0,0 +1,18 @@
/*
* PROJECT: Keyboard Layout Switcher
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
IDR_POPUP MENU
BEGIN
POPUP "popup"
BEGIN
MENUITEM "&Preferências...", ID_PREFERENCES
MENUITEM SEPARATOR
MENUITEM "&Sair", ID_EXIT
END
END

View File

@@ -2690,7 +2690,7 @@ MyRegisterClass(HINSTANCE hInstance)
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_EVENTVWR));
wcex.hCursor = LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_ARROW));
wcex.hCursor = LoadCursorW(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1); // COLOR_WINDOW + 1
wcex.lpszMenuName = MAKEINTRESOURCEW(IDM_EVENTVWR);
wcex.lpszClassName = EVENTVWR_WNDCLASS;

View File

@@ -46,7 +46,7 @@ BEGIN
MENUITEM "复制(&C)\tCtrl+C", IDM_EDITCOPY
MENUITEM "粘贴(&P)\tCtrl+V", IDM_EDITPASTE
MENUITEM SEPARATOR
MENUITEM "Crop &selection", IDM_CROPSELECTION
MENUITEM "裁剪选中区域(&S)", IDM_CROPSELECTION
MENUITEM "删除选中区域(&L)\tDel", IDM_EDITDELETESELECTION
MENUITEM "反转选择(&I)", IDM_EDITINVERTSELECTION
MENUITEM "全部选择(&A)\tCtrl+A", IDM_EDITSELECTALL

View File

@@ -137,6 +137,7 @@ static void finish_splitbar(HWND hWnd, int x)
GetClientRect(hWnd, &rt);
g_pChildWnd->nSplitPos = x;
ResizeWnd(rt.right, rt.bottom);
InvalidateRect(hWnd, &rt, FALSE); // HACK: See CORE-19576
ReleaseCapture();
}

View File

@@ -1,3 +1,13 @@
/*
* PROJECT: ReactOS Registry Editor
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATORS: Copyright 2003 Marcelo Duarte <marcelotduarte@gmail.com>
* Copyright 2004 Sylvain Pétréolle <spetreolle@yahoo.fr>
* Copyright 2019-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
* Copyright 2021 Gabriel Aguiar <fgsoftwarestudio@gmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
ID_ACCEL ACCELERATORS
@@ -15,53 +25,53 @@ END
/* Command-line strings */
STRINGTABLE
BEGIN
STRING_USAGE "Usage:\n\
regedit [options] [filename] [reg_key]\n\n\
Options:\n\
[no option] Launch the graphical version of this program.\n\
/L:system.dat The location of the system.dat file to be modified.\n\
Compatible with any other switch. Ignored.\n\
/R:user.dat The location of the user.dat file to be modified.\n\
Compatible with any other switch. Ignored.\n\
/C Import the contents of a registry file.\n\
/D Delete a specified registry key.\n\
/E Export the contents of a specified registry key to a file.\n\
If no key is specified, the entire registry is exported.\n\
/S Silent mode. No messages will be displayed.\n\
/V Launch the GUI in advanced mode. Ignored.\n\
/? Display this information and exit.\n\
[filename] The location of the file containing registry information to\n\
be imported. When used with [/E], this option specifies the\n\
file location where registry information will be exported.\n\
[reg_key] The registry key to be modified.\n\
STRING_USAGE "Uso:\n\
regedit [opções] [ficheiro] [chave]\n\n\
Opções:\n\
[sem opções] Iniciar a versão gráfica deste programa.\n\
/L:system.dat A localização do ficheiro system.dat a ser modificado.\n\
Compatível com qualquer outro switch. Ignorado.\n\
/R:user.dat A localização do ficheiro user.dat a ser modificado.\n\
Compatível com qualquer outro switch. Ignorado.\n\
/C Importar o conteúdo de um ficheiro de registo.\n\
/D Eliminar uma chave de registo especificada.\n\
/E Exportar o conteúdo de uma chave de registo especificada para um ficheiro.\n\
Se nenhuma chave for especificada, exportar todo o registo.\n\
/S Modo silencioso. Nenhuma mensagem será exibida.\n\
/V Iniciar a GUI no modo avançado. Ignorado.\n\
/? Mostrar estas informações e terminar.\n\
[ficheiro] A localização do ficheiro que contém informações do registo a\n\
ser importado. Quando usada com [/E], esta opção especifica o\n\
local do ficheiro para onde as informações do registo serão exportadas.\n\
[chave] A chave do registo a ser modificada.\n\
\n\
Usage examples:\n\
Uso exemplos:\n\
regedit ""import.reg""\n\
regedit /E ""export.reg"" ""HKEY_CURRENT_USER\\Console""\n\
regedit /D ""HKEY_LOCAL_MACHINE\\Error\\Path""\n"
STRING_INVALID_SWITCH "regedit: Invalid or unrecognized switch [%1]\n"
STRING_HELP "Type ""regedit /?"" for help.\n"
STRING_NO_FILENAME "regedit: No filename was specified.\n"
STRING_NO_REG_KEY "regedit: No registry key was specified for removal.\n"
STRING_FILE_NOT_FOUND "regedit: The file '%1' was not found.\n"
STRING_CANNOT_OPEN_FILE "regedit: Unable to open the file '%1'.\n"
STRING_UNHANDLED_ACTION "regedit: Unhandled action.\n"
STRING_OUT_OF_MEMORY "regedit: Out of memory! (%1!S!, line %2!u!)\n"
STRING_INVALID_HEX "regedit: Invalid hexadecimal value.\n"
STRING_CSV_HEX_ERROR "regedit: Unable to convert hexadecimal data. An invalid value was encountered at '%1'.\n"
STRING_ESCAPE_SEQUENCE "regedit: Unrecognized escape sequence [\\%1!c!]\n"
STRING_UNKNOWN_DATA_FORMAT "regedit: Unsupported registry data type [0x%1!x!]\n"
STRING_UNEXPECTED_EOL "regedit: Unexpected end of line in '%1'.\n"
STRING_UNRECOGNIZED_LINE "regedit: The line '%1' was not recognized.\n"
STRING_SETVALUE_FAILED "regedit: Unable to add the registry value '%1' to '%2'.\n"
STRING_OPEN_KEY_FAILED "regedit: Unable to open the registry key '%1'.\n"
STRING_UNSUPPORTED_TYPE "regedit: Unsupported registry data type [0x%1!x!] encountered in '%2'.\n"
STRING_EXPORT_AS_BINARY "regedit: The registry value '%1' will be exported as binary data.\n"
STRING_INVALID_SYSTEM_KEY "regedit: Invalid system key [%1]\n"
STRING_REG_KEY_NOT_FOUND "regedit: Unable to export '%1'. The specified registry key was not found.\n"
STRING_DELETE_FAILED "regedit: Unable to delete the registry key '%1'.\n"
STRING_UNKNOWN_TYPE "Unknown Type"
STRING_INVALID_LINE_SYNTAX, "regedit: The line contains invalid syntax.\n"
STRING_INVALID_SWITCH "regedit: Chave inválida ou não reconhecida [%1]\n"
STRING_HELP "Type ""regedit /?"" para ajuda.\n"
STRING_NO_FILENAME "regedit: Nenhum nome de ficheiro foi especificado.\n"
STRING_NO_REG_KEY "regedit: Nenhuma chave de registo foi especificada para remoção.\n"
STRING_FILE_NOT_FOUND "regedit: O ficheiro '%1' não foi encontrado.\n"
STRING_CANNOT_OPEN_FILE "regedit: Não é possível abrir o ficheiro '%1'.\n"
STRING_UNHANDLED_ACTION "regedit: Acção sem tratamento.\n"
STRING_OUT_OF_MEMORY "regedit: Fora da memória! (%1!S!, linha %2!u!)\n"
STRING_INVALID_HEX "regedit: Valor hexadecimal inválido.\n"
STRING_CSV_HEX_ERROR "regedit: Não é possível converter dados hexadecimais. Um valor inválido foi encontrado em '%1'.\n"
STRING_ESCAPE_SEQUENCE "regedit: Sequência de escape não reconhecida [\\%1!c!]\n"
STRING_UNKNOWN_DATA_FORMAT "regedit: Tipo de dados de registo não compatível [0x%1!x!]\n"
STRING_UNEXPECTED_EOL "regedit: Fim de linha inesperado em '%1'.\n"
STRING_UNRECOGNIZED_LINE "regedit: A linha '%1' não foi reconhecida.\n"
STRING_SETVALUE_FAILED "regedit: Não é possível adicionar o valor do registo '%1' a '%2'.\n"
STRING_OPEN_KEY_FAILED "regedit: Não é possível abrir a chave de registo '%1'.\n"
STRING_UNSUPPORTED_TYPE "regedit: Tipo de dados de registro não compatível [0x%1!x!] encontrado em '%2'.\n"
STRING_EXPORT_AS_BINARY "regedit: O valor de registo '%1' será exportado como dado binário.\n"
STRING_INVALID_SYSTEM_KEY "regedit: Chave de sistema inválida [%1]\n"
STRING_REG_KEY_NOT_FOUND "regedit: Não foi possível exportar '%1'. A chave de registro especificada não foi encontrada.\n"
STRING_DELETE_FAILED "regedit: Não é possível excluir a chave do registo '%1'.\n"
STRING_UNKNOWN_TYPE "Tipo desconhecido"
STRING_INVALID_LINE_SYNTAX, "regedit: A linha contém sintaxe inválida.\n"
END
/* Menus */
@@ -314,83 +324,83 @@ END
IDD_EDIT_REQUIREMENTS_LIST DIALOGEX 32, 24, 220, 135
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Requirements List"
CAPTION "Lista de requesitos"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_REQUIREMENTS_LIST, "SysListView32", LVS_REPORT | LVS_NOSORTHEADER |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 10, 10, 200, 66
RTEXT "Interface Type:", IDC_STATIC, 10, 80, 62, 8
RTEXT "Tipo de interface:", IDC_STATIC, 10, 80, 62, 8
LTEXT "", IDC_REQINTERFACETYPE, 77, 80, 76, 8
RTEXT "Bus Number:", IDC_STATIC, 10, 90, 62, 8
RTEXT "Bus número:", IDC_STATIC, 10, 90, 62, 8
LTEXT "", IDC_REQBUSNUMBER, 77, 90, 76, 8
RTEXT "Slot Type:", IDC_STATIC, 10, 100, 62, 8
RTEXT "Tipo de slot:", IDC_STATIC, 10, 100, 62, 8
LTEXT "", IDC_REQSLOTNUMBER, 77, 100, 76, 8
DEFPUSHBUTTON "OK", IDOK, 62, 115, 50, 14
PUSHBUTTON "Show...", IDC_SHOW_REQUIREMENT, 118, 115, 50, 14, WS_DISABLED
PUSHBUTTON "Mostrar...", IDC_SHOW_REQUIREMENT, 118, 115, 50, 14, WS_DISABLED
END
IDD_EDIT_REQUIREMENTS_PORT DIALOGEX 32, 24, 158, 135
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Port"
CAPTION "Porta"
FONT 8, "MS Shell Dlg"
BEGIN
RTEXT "Type:", IDC_STATIC, 10, 10, 61, 8
RTEXT "Tipo:", IDC_STATIC, 10, 10, 61, 8
LTEXT "", IDC_REQ_PORT_TYPE, 77, 10, 76, 8
RTEXT "Length:", IDC_STATIC, 10, 20, 61, 8
RTEXT "Comprimento:", IDC_STATIC, 10, 20, 61, 8
LTEXT "", IDC_REQ_PORT_LENGTH, 77, 20, 76, 8
RTEXT "Alignment:", IDC_STATIC, 10, 30, 61, 8
RTEXT "Alinhamento:", IDC_STATIC, 10, 30, 61, 8
LTEXT "", IDC_REQ_PORT_ALIGN, 77, 30, 76, 8
RTEXT "Minimum Address:", IDC_STATIC, 10, 40, 61, 8
RTEXT "Endereço mínimo:", IDC_STATIC, 10, 40, 61, 8
LTEXT "", IDC_REQ_PORT_MIN, 77, 40, 76, 8
RTEXT "Maximum Address:", IDC_STATIC, 10, 50, 61, 8
RTEXT "Endereço máximo:", IDC_STATIC, 10, 50, 61, 8
LTEXT "", IDC_REQ_PORT_MAX, 77, 50, 76, 8
RTEXT "Share Disposition:", IDC_STATIC, 10, 60, 61, 8
RTEXT "Compartilhamento:", IDC_STATIC, 10, 60, 61, 8
LTEXT "", IDC_REQ_PORT_SHARE, 77, 60, 76, 8
GROUPBOX "Options", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternative", IDC_REQ_PORT_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferred", IDC_REQ_PORT_PREFERRED, 34, 96, 37, 8, WS_DISABLED
GROUPBOX "Opções", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternativo", IDC_REQ_PORT_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferido", IDC_REQ_PORT_PREFERRED, 34, 96, 37, 8, WS_DISABLED
DEFPUSHBUTTON "OK", IDOK, 58, 117, 40, 14
END
IDD_EDIT_REQUIREMENTS_MEMORY DIALOGEX 32, 24, 158, 135
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Memory"
CAPTION "Memória"
FONT 8, "MS Shell Dlg"
BEGIN
RTEXT "Access:", IDC_STATIC, 10, 10, 61, 8
RTEXT "Acesso:", IDC_STATIC, 10, 10, 61, 8
LTEXT "", IDC_REQ_MEMORY_ACCESS, 77, 10, 76, 8
RTEXT "Length:", IDC_STATIC, 10, 20, 61, 8
RTEXT "Comprimento:", IDC_STATIC, 10, 20, 61, 8
LTEXT "", IDC_REQ_MEMORY_LENGTH, 77, 20, 76, 8
RTEXT "Alignment:", IDC_STATIC, 10, 30, 61, 8
RTEXT "Alinhamento:", IDC_STATIC, 10, 30, 61, 8
LTEXT "", IDC_REQ_MEMORY_ALIGN, 77, 30, 76, 8
RTEXT "Minimum Address:", IDC_STATIC, 10, 40, 61, 8
RTEXT "Endereço mínimo:", IDC_STATIC, 10, 40, 61, 8
LTEXT "", IDC_REQ_MEMORY_MIN, 77, 40, 76, 8
RTEXT "Maximum Address:", IDC_STATIC, 10, 50, 61, 8
RTEXT "Endereço máximo:", IDC_STATIC, 10, 50, 61, 8
LTEXT "", IDC_REQ_MEMORY_MAX, 77, 50, 76, 8
RTEXT "Share Disposition:", IDC_STATIC, 10, 60, 61, 8
RTEXT "Compartilhamento:", IDC_STATIC, 10, 60, 61, 8
LTEXT "", IDC_REQ_MEMORY_SHARE, 77, 60, 76, 8
GROUPBOX "Options", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternative", IDC_REQ_MEMORY_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferred", IDC_REQ_MEMORY_PREFERRED, 34, 96, 37, 8, WS_DISABLED
GROUPBOX "Opções", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternativo", IDC_REQ_MEMORY_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferido", IDC_REQ_MEMORY_PREFERRED, 34, 96, 37, 8, WS_DISABLED
DEFPUSHBUTTON "OK", IDOK, 58, 117, 40, 14
END
IDD_EDIT_REQUIREMENTS_INT DIALOGEX 32, 24, 158, 135
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Interrupt"
CAPTION "Interrupção"
FONT 8, "MS Shell Dlg"
BEGIN
RTEXT "Type:", IDC_STATIC, 10, 10, 61, 8
RTEXT "Tipo:", IDC_STATIC, 10, 10, 61, 8
LTEXT "", IDC_REQ_INT_TYPE, 77, 10, 76, 8
RTEXT "Minimum Vector:", IDC_STATIC, 10, 20, 61, 8
RTEXT "Vector mínimo:", IDC_STATIC, 10, 20, 61, 8
LTEXT "", IDC_REQ_INT_MIN, 77, 20, 76, 8
RTEXT "Maximum Vector:", IDC_STATIC, 10, 30, 61, 8
RTEXT "Vector máximo:", IDC_STATIC, 10, 30, 61, 8
LTEXT "", IDC_REQ_INT_MAX, 77, 30, 76, 8
RTEXT "Share Disposition:", IDC_STATIC, 10, 40, 61, 8
RTEXT "Compartilhamento:", IDC_STATIC, 10, 40, 61, 8
LTEXT "", IDC_REQ_INT_SHARE, 77, 40, 76, 8
GROUPBOX "Options", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternative", IDC_REQ_INT_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferred", IDC_REQ_INT_PREFERRED, 34, 96, 37, 8, WS_DISABLED
GROUPBOX "Opções", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternativo", IDC_REQ_INT_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferido", IDC_REQ_INT_PREFERRED, 34, 96, 37, 8, WS_DISABLED
DEFPUSHBUTTON "OK", IDOK, 58, 117, 40, 14
END
@@ -399,15 +409,15 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP |
CAPTION "DMA"
FONT 8, "MS Shell Dlg"
BEGIN
RTEXT "Minimum Channel:", IDC_STATIC, 10, 10, 61, 8
RTEXT "Canal mínimo:", IDC_STATIC, 10, 10, 61, 8
LTEXT "", IDC_REQ_DMA_MIN, 77, 10, 76, 8
RTEXT "Maximum Channel:", IDC_STATIC, 10, 20, 61, 8
RTEXT "Canal máximo:", IDC_STATIC, 10, 20, 61, 8
LTEXT "", IDC_REQ_DMA_MAX, 77, 20, 76, 8
RTEXT "Share Disposition:", IDC_STATIC, 10, 30, 61, 8
RTEXT "Compartilhamento:", IDC_STATIC, 10, 30, 61, 8
LTEXT "", IDC_REQ_DMA_SHARE, 77, 30, 76, 8
GROUPBOX "Options", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternative", IDC_REQ_DMA_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferred", IDC_REQ_DMA_PREFERRED, 34, 96, 37, 8, WS_DISABLED
GROUPBOX "Opções", IDC_STATIC, 10, 72, 83, 39
LTEXT "Alternativo", IDC_REQ_DMA_ALTERNATIVE, 34, 86, 37, 8, WS_DISABLED
LTEXT "Preferido", IDC_REQ_DMA_PREFERRED, 34, 96, 37, 8, WS_DISABLED
DEFPUSHBUTTON "OK", IDOK, 58, 117, 40, 14
END
@@ -451,7 +461,7 @@ BEGIN
ID_REGISTRY_CONNECTNETWORKREGISTRY "Liga a um registo num computador remoto."
ID_REGISTRY_DISCONNECTNETWORKREGISTRY "Desliga um registo de um computador remoto."
ID_REGISTRY_PRINT "Imprime todo ou parte do registo."
/* ID_HELP_HELPTOPICS "Abre a ajuda do Editor do Registro." */
/* ID_HELP_HELPTOPICS "Abre a ajuda do Editor do Registo." */
ID_HELP_ABOUT "Mostra informações do programa, número da versão e copyright."
END
@@ -520,7 +530,7 @@ BEGIN
IDS_FLT_REGEDIT4_FLT "*.reg"
IDS_FLT_ALLFILES "Todos os ficheiros (*.*)"
IDS_FLT_ALLFILES_FLT "*.*"
IDS_FLT_TXTFILES "Text Files (*.txt)"
IDS_FLT_TXTFILES "Ficheiros de texto (*.txt)"
IDS_FLT_TXTFILES_FLT "*.txt"
END
@@ -565,40 +575,40 @@ END
STRINGTABLE
BEGIN
IDS_BUSNUMBER "Bus Number"
IDS_BUSNUMBER "Bus número"
IDS_INTERFACE "Interface"
IDS_DMA_CHANNEL "Channel"
IDS_DMA_PORT "Port"
IDS_DMA_CHANNEL "Canal"
IDS_DMA_PORT "Porta"
IDS_INTERRUPT_VECTOR "Vector"
IDS_INTERRUPT_LEVEL "Level"
IDS_INTERRUPT_AFFINITY "Affinity"
IDS_INTERRUPT_TYPE "Type"
IDS_MEMORY_ADDRESS "Physical Address"
IDS_MEMORY_LENGTH "Length"
IDS_MEMORY_ACCESS "Access"
IDS_PORT_ADDRESS "Physical Address"
IDS_PORT_LENGTH "Length"
IDS_PORT_ACCESS "Access"
IDS_SPECIFIC_RESERVED1 "Reserved 1"
IDS_SPECIFIC_RESERVED2 "Reserved 2"
IDS_SPECIFIC_DATASIZE "Data Size"
IDS_INTERRUPT_LEVEL "vel"
IDS_INTERRUPT_AFFINITY "Afinidade"
IDS_INTERRUPT_TYPE "Tipo"
IDS_MEMORY_ADDRESS "Endereço físico"
IDS_MEMORY_LENGTH "Comprimento"
IDS_MEMORY_ACCESS "Acesso"
IDS_PORT_ADDRESS "Endereço físico"
IDS_PORT_LENGTH "Comprimento"
IDS_PORT_ACCESS "Acesso"
IDS_SPECIFIC_RESERVED1 "Reservado 1"
IDS_SPECIFIC_RESERVED2 "Reservado 2"
IDS_SPECIFIC_DATASIZE "Tamanho dos dados"
END
STRINGTABLE
BEGIN
IDS_PORT_PORT_IO "Port"
IDS_PORT_MEMORY_IO "Memory"
IDS_INTERRUPT_EDGE_SENSITIVE "Edge Sensitive"
IDS_INTERRUPT_LEVEL_SENSITIVE "Level Sensitive"
IDS_MEMORY_READ_ONLY "Read Only"
IDS_MEMORY_WRITE_ONLY "Write Only"
IDS_MEMORY_READ_WRITE "Read / Write"
IDS_PORT_PORT_IO "Porta"
IDS_PORT_MEMORY_IO "Memória"
IDS_INTERRUPT_EDGE_SENSITIVE "Sensível à Borda"
IDS_INTERRUPT_LEVEL_SENSITIVE "Sensível ao nível"
IDS_MEMORY_READ_ONLY "Só para leitura"
IDS_MEMORY_WRITE_ONLY "Só para escrita"
IDS_MEMORY_READ_WRITE "Leituta/Escrita"
END
STRINGTABLE
BEGIN
IDS_BUS_UNDEFINED "Undefined"
IDS_BUS_INTERNAL "Internal"
IDS_BUS_UNDEFINED "Indefinido"
IDS_BUS_INTERNAL "Interno"
IDS_BUS_ISA "ISA"
IDS_BUS_EISA "EISA"
IDS_BUS_MICROCHANNEL "MicroChannel"
@@ -614,37 +624,37 @@ BEGIN
IDS_BUS_INTERNALPOWERBUS "Internal Power Bus"
IDS_BUS_PNPISABUS "PnP-ISA Bus"
IDS_BUS_PNPBUS "PnP Bus"
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
IDS_BUS_UNKNOWNTYPE "Tipo de Interface desconhecido"
END
STRINGTABLE
BEGIN
IDS_FIELD_KEY_NAME "Key Name:"
IDS_FIELD_CLASS_NAME "Class Name:"
IDS_FIELD_KEY_NAME "Nome da chave:"
IDS_FIELD_CLASS_NAME "Nome da classe:"
IDS_NO_CLASS_NAME "<NO CLASS>"
IDS_NULL_TIMESTAMP "<NULL>"
IDS_FIELD_NAME " Name:"
IDS_FIELD_TYPE " Type:"
IDS_FIELD_DATA " Data:"
IDS_FIELD_LASTWRITE "Last Write Time:"
IDS_UNKNOWN "<UNKNOWN>"
IDS_VALUE_INDEX "Value %d"
IDS_FIELD_NAME " Nome:"
IDS_FIELD_TYPE " Tipo:"
IDS_FIELD_DATA " Dado:"
IDS_FIELD_LASTWRITE "Hora da última gravação:"
IDS_UNKNOWN "<DESCONHECIDO>"
IDS_VALUE_INDEX "Valor %d"
END
STRINGTABLE
BEGIN
IDS_REQALTERNATIVELIST "Alternative List"
IDS_REQRESOURCELIST "Resource List"
IDS_REQDESCRIPTOR "Descriptor"
IDS_REQDEVICETYPE "Device Type"
IDS_TYPE_PORT "Port"
IDS_TYPE_INTERRUPT "Interrupt"
IDS_TYPE_MEMORY "Memory"
IDS_REQALTERNATIVELIST "Lista alternativa"
IDS_REQRESOURCELIST "Lista de recursos"
IDS_REQDESCRIPTOR "Descritor"
IDS_REQDEVICETYPE "Tipo de dispositivo"
IDS_TYPE_PORT "Porta"
IDS_TYPE_INTERRUPT "Interrupção"
IDS_TYPE_MEMORY "Memória"
IDS_TYPE_DMA "DMA"
IDS_SHARE_DEVICE_EXCLUSIVE "Device Exclusive"
IDS_SHARE_DRIVER_EXCLUSIVE "Driver Exclusive"
IDS_SHARE_SHARED "Shared"
IDS_SHARE_UNDETERMINED "Undetermined"
IDS_SHARE_DEVICE_EXCLUSIVE "Exclusivo do dispositivo"
IDS_SHARE_DRIVER_EXCLUSIVE "Exclusivo do controlador"
IDS_SHARE_SHARED "Compartilhamento"
IDS_SHARE_UNDETERMINED "Indeterminado"
END
/*****************************************************************/
@@ -713,7 +723,7 @@ BEGIN
WS_TABSTOP, 14, 60, 42, 8
CONTROL "Corresponder &apenas cadeia completa", IDC_MATCHSTRING, "Button", BS_AUTOCHECKBOX |
WS_TABSTOP, 83, 40, 144, 13
CONTROL "Co&rrespondencia exacta", IDC_MATCHCASE, "Button", BS_AUTOCHECKBOX |
CONTROL "Co&rrespondência exacta", IDC_MATCHCASE, "Button", BS_AUTOCHECKBOX |
WS_TABSTOP, 83, 56, 120, 12
END

View File

@@ -2,7 +2,8 @@
* PROJECT: ReactOS Utility Manager Resources DLL (UManDlg.dll)
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: Chinese (Simplified) resource file
* TRANSLATOR: Copyright 2020 Zheng Jianping <robsean@126.com>
* TRANSLATORS: Copyright 2020 Zheng Jianping <robsean@126.com>
* Copyright 2024 Ratin Gao <ratin@knsoft.org>
*/
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
@@ -10,7 +11,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
IDD_MAIN_DIALOG DIALOGEX 0, 0, 284, 183
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_CONTEXTHELP
CAPTION "可访问性实用工具管理器"
CAPTION "辅助工具管理器"
FONT 9, "宋体"
BEGIN
LISTBOX IDC_LISTBOX, 4, 4, 273, 56, LBS_NOTIFY | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER
@@ -19,7 +20,7 @@ BEGIN
CONTROL "停止", IDC_STOP, "Button", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 69, 76, 45, 16
CONTROL "登录时自动启动", IDC_START_LOG_IN, "Button", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 12, 101, 206, 14
CONTROL "锁定桌面时自动启动", IDC_START_DESKTOP, "Button", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 12, 118, 212, 14
CONTROL "与实用工具管理器同步启动", IDC_START_UTILMAN, "Button", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 12, 134, 212, 13
CONTROL "辅助工具管理器启动时自动启动", IDC_START_UTILMAN, "Button", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 12, 134, 212, 13
CONTROL "确定(&O)", IDC_OK, "Button", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 160, 161, 50, 14
CONTROL "取消(&C)", IDC_CANCEL, "Button", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 221, 161, 50, 14
CONTROL "帮助(&H)", IDC_HELP_TOPICS, "Button", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 98, 161, 50, 14
@@ -40,7 +41,7 @@ END
STRINGTABLE
BEGIN
IDM_ABOUT "关于可访问性实用工具管理器..."
IDS_APP_NAME "可访问性实用工具管理器"
IDM_ABOUT "关于辅助工具管理器..."
IDS_APP_NAME "辅助工具管理器"
IDS_AUTHORS "Copyright 2019 George Bișoc, Hermes Belusca-Maito"
END

View File

@@ -78,7 +78,6 @@ EnumerateInstallations(
ULONG DiskNumber = 0, PartitionNumber = 0;
PCWSTR PathComponent = NULL;
PDISKENTRY DiskEntry = NULL;
PPARTENTRY PartEntry = NULL;
UNICODE_STRING SystemRootPath;
@@ -184,10 +183,11 @@ EnumerateInstallations(
DPRINT("SystemRootPath = '%wZ' points to disk #%d, partition #%d, path '%S'\n",
&SystemRootPath, DiskNumber, PartitionNumber, PathComponent);
/* Retrieve the corresponding disk and partition */
if (!GetDiskOrPartition(Data->PartList, DiskNumber, PartitionNumber, &DiskEntry, &PartEntry))
/* Retrieve the corresponding partition */
PartEntry = SelectPartition(Data->PartList, DiskNumber, PartitionNumber);
if (!PartEntry)
{
DPRINT1("GetDiskOrPartition(disk #%d, partition #%d) failed\n",
DPRINT1("SelectPartition(disk #%d, partition #%d) failed\n",
DiskNumber, PartitionNumber);
}
}

View File

@@ -673,14 +673,46 @@ CreateInsertBlankRegion(
return NewPartEntry;
}
static
VOID
AddLogicalDiskSpace(
_In_ PDISKENTRY DiskEntry)
{
ULONGLONG StartSector;
ULONGLONG SectorCount;
PPARTENTRY NewPartEntry;
DPRINT("AddLogicalDiskSpace()\n");
/* Create a partition entry that represents the empty space in the container partition */
StartSector = DiskEntry->ExtendedPartition->StartSector.QuadPart + (ULONGLONG)DiskEntry->SectorAlignment;
SectorCount = DiskEntry->ExtendedPartition->SectorCount.QuadPart - (ULONGLONG)DiskEntry->SectorAlignment;
NewPartEntry = CreateInsertBlankRegion(DiskEntry,
&DiskEntry->LogicalPartListHead,
StartSector,
SectorCount,
TRUE);
if (!NewPartEntry)
DPRINT1("Failed to create a new empty region for full extended partition space!\n");
}
// TODO: Improve upon the PartitionInfo parameter later
// (see VDS::CREATE_PARTITION_PARAMETERS and PPARTITION_INFORMATION_MBR/GPT for example)
// So far we only use it as the optional type of the partition to create.
//
// See also CreatePartition().
static
BOOLEAN
InitializePartitionEntry(
_Inout_ PPARTENTRY PartEntry,
_In_opt_ ULONGLONG SizeBytes)
_In_opt_ ULONGLONG SizeBytes,
_In_opt_ ULONG_PTR PartitionInfo)
{
PDISKENTRY DiskEntry = PartEntry->DiskEntry;
ULONGLONG SectorCount;
BOOLEAN isContainer = IsContainerPartition((UCHAR)PartitionInfo);
DPRINT1("Current entry sector count: %I64u\n", PartEntry->SectorCount.QuadPart);
@@ -688,6 +720,10 @@ InitializePartitionEntry(
ASSERT(!PartEntry->IsPartitioned);
ASSERT(PartEntry->SectorCount.QuadPart);
/* Either we create a primary/logical partition, or we create an
* extended partition but the entry must not be logical space */
ASSERT(!isContainer || !PartEntry->LogicalPartition);
/* Convert the size in bytes to sector count. SizeBytes being
* zero means the caller wants to use all the empty space. */
if ((SizeBytes == 0) || (SizeBytes == GetPartEntrySizeInBytes(PartEntry)))
@@ -734,7 +770,7 @@ InitializePartitionEntry(
StartSector,
SectorCount2,
PartEntry->LogicalPartition);
if (NewPartEntry == NULL)
if (!NewPartEntry)
{
DPRINT1("Failed to create a new empty region for disk space!\n");
return FALSE;
@@ -748,15 +784,49 @@ InitializePartitionEntry(
PartEntry->New = TRUE;
PartEntry->IsPartitioned = TRUE;
PartEntry->BootIndicator = FALSE;
if (PartitionInfo)
{
if (!isContainer)
{
PartEntry->PartitionType = (UCHAR)PartitionInfo;
}
else
{
/* Set the correct extended container partition type,
* depending on whether it is contained below or above
* the 1024-cylinder (usually 8.4GB/7.8GiB) boundary:
* - below: INT13h CHS partition;
* - above: Extended INT13h LBA partition. */
if ((PartEntry->StartSector.QuadPart + PartEntry->SectorCount.QuadPart - 1)
/ (DiskEntry->TracksPerCylinder * DiskEntry->SectorsPerTrack) < 1024)
{
PartEntry->PartitionType = PARTITION_EXTENDED;
}
else
{
PartEntry->PartitionType = PARTITION_XINT13_EXTENDED;
}
}
}
else
{
// FIXME: Use FileSystemToMBRPartitionType() only for MBR, otherwise use PARTITION_BASIC_DATA_GUID.
PartEntry->PartitionType = FileSystemToMBRPartitionType(L"RAW",
PartEntry->StartSector.QuadPart,
PartEntry->SectorCount.QuadPart);
ASSERT(!isContainer);
PartEntry->PartitionType = FileSystemToMBRPartitionType(L"RAW",
PartEntry->StartSector.QuadPart,
PartEntry->SectorCount.QuadPart);
}
ASSERT(PartEntry->PartitionType != PARTITION_ENTRY_UNUSED);
PartEntry->FormatState = Unformatted;
PartEntry->FileSystem[0] = L'\0';
PartEntry->BootIndicator = FALSE;
if (isContainer)
{
DiskEntry->ExtendedPartition = PartEntry;
AddLogicalDiskSpace(DiskEntry);
}
DPRINT1("First Sector : %I64u\n", PartEntry->StartSector.QuadPart);
DPRINT1("Last Sector : %I64u\n", PartEntry->StartSector.QuadPart + PartEntry->SectorCount.QuadPart - 1);
@@ -990,7 +1060,7 @@ ScanForUnpartitionedDiskSpace(
StartSector,
SectorCount,
FALSE);
if (NewPartEntry == NULL)
if (!NewPartEntry)
DPRINT1("Failed to create a new empty region for full disk space!\n");
return;
@@ -1030,7 +1100,7 @@ ScanForUnpartitionedDiskSpace(
StartSector,
SectorCount,
FALSE);
if (NewPartEntry == NULL)
if (!NewPartEntry)
{
DPRINT1("Failed to create a new empty region for disk space!\n");
return;
@@ -1060,7 +1130,7 @@ ScanForUnpartitionedDiskSpace(
StartSector,
SectorCount,
FALSE);
if (NewPartEntry == NULL)
if (!NewPartEntry)
{
DPRINT1("Failed to create a new empty region for trailing disk space!\n");
return;
@@ -1075,21 +1145,7 @@ ScanForUnpartitionedDiskSpace(
DPRINT1("No logical partition!\n");
/* Create a partition entry that represents the empty extended partition */
StartSector = DiskEntry->ExtendedPartition->StartSector.QuadPart + (ULONGLONG)DiskEntry->SectorAlignment;
SectorCount = DiskEntry->ExtendedPartition->SectorCount.QuadPart - (ULONGLONG)DiskEntry->SectorAlignment;
NewPartEntry = CreateInsertBlankRegion(DiskEntry,
&DiskEntry->LogicalPartListHead,
StartSector,
SectorCount,
TRUE);
if (NewPartEntry == NULL)
{
DPRINT1("Failed to create a new empty region for full extended partition space!\n");
return;
}
AddLogicalDiskSpace(DiskEntry);
return;
}
@@ -1124,7 +1180,7 @@ ScanForUnpartitionedDiskSpace(
StartSector,
SectorCount,
TRUE);
if (NewPartEntry == NULL)
if (!NewPartEntry)
{
DPRINT1("Failed to create a new empty region for extended partition space!\n");
return;
@@ -1156,7 +1212,7 @@ ScanForUnpartitionedDiskSpace(
StartSector,
SectorCount,
TRUE);
if (NewPartEntry == NULL)
if (!NewPartEntry)
{
DPRINT1("Failed to create a new empty region for extended partition space!\n");
return;
@@ -2006,8 +2062,8 @@ DestroyPartitionList(
PDISKENTRY
GetDiskByBiosNumber(
IN PPARTLIST List,
IN ULONG HwDiskNumber)
_In_ PPARTLIST List,
_In_ ULONG HwDiskNumber)
{
PDISKENTRY DiskEntry;
PLIST_ENTRY Entry;
@@ -2020,10 +2076,7 @@ GetDiskByBiosNumber(
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
if (DiskEntry->HwDiskNumber == HwDiskNumber)
{
/* Disk found */
return DiskEntry;
}
return DiskEntry; /* Disk found, return it */
}
/* Disk not found, stop there */
@@ -2032,8 +2085,8 @@ GetDiskByBiosNumber(
PDISKENTRY
GetDiskByNumber(
IN PPARTLIST List,
IN ULONG DiskNumber)
_In_ PPARTLIST List,
_In_ ULONG DiskNumber)
{
PDISKENTRY DiskEntry;
PLIST_ENTRY Entry;
@@ -2046,10 +2099,7 @@ GetDiskByNumber(
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
if (DiskEntry->DiskNumber == DiskNumber)
{
/* Disk found */
return DiskEntry;
}
return DiskEntry; /* Disk found, return it */
}
/* Disk not found, stop there */
@@ -2058,10 +2108,10 @@ GetDiskByNumber(
PDISKENTRY
GetDiskBySCSI(
IN PPARTLIST List,
IN USHORT Port,
IN USHORT Bus,
IN USHORT Id)
_In_ PPARTLIST List,
_In_ USHORT Port,
_In_ USHORT Bus,
_In_ USHORT Id)
{
PDISKENTRY DiskEntry;
PLIST_ENTRY Entry;
@@ -2077,7 +2127,7 @@ GetDiskBySCSI(
DiskEntry->Bus == Bus &&
DiskEntry->Id == Id)
{
/* Disk found */
/* Disk found, return it */
return DiskEntry;
}
}
@@ -2088,8 +2138,8 @@ GetDiskBySCSI(
PDISKENTRY
GetDiskBySignature(
IN PPARTLIST List,
IN ULONG Signature)
_In_ PPARTLIST List,
_In_ ULONG Signature)
{
PDISKENTRY DiskEntry;
PLIST_ENTRY Entry;
@@ -2102,10 +2152,7 @@ GetDiskBySignature(
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
if (DiskEntry->LayoutBuffer->Signature == Signature)
{
/* Disk found */
return DiskEntry;
}
return DiskEntry; /* Disk found, return it */
}
/* Disk not found, stop there */
@@ -2114,20 +2161,13 @@ GetDiskBySignature(
PPARTENTRY
GetPartition(
// IN PPARTLIST List,
IN PDISKENTRY DiskEntry,
IN ULONG PartitionNumber)
_In_ PDISKENTRY DiskEntry,
_In_ ULONG PartitionNumber)
{
PPARTENTRY PartEntry;
PLIST_ENTRY Entry;
if (DiskEntry->DiskStyle == PARTITION_STYLE_GPT)
{
DPRINT("GPT-partitioned disk detected, not currently supported by SETUP!\n");
return NULL;
}
/* Disk found, loop over the primary partitions first... */
/* Loop over the primary partitions first... */
for (Entry = DiskEntry->PrimaryPartListHead.Flink;
Entry != &DiskEntry->PrimaryPartListHead;
Entry = Entry->Flink)
@@ -2135,12 +2175,12 @@ GetPartition(
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
if (PartEntry->PartitionNumber == PartitionNumber)
{
/* Partition found */
return PartEntry;
}
return PartEntry; /* Partition found, return it */
}
if (DiskEntry->DiskStyle == PARTITION_STYLE_GPT)
return NULL;
/* ... then over the logical partitions if needed */
for (Entry = DiskEntry->LogicalPartListHead.Flink;
Entry != &DiskEntry->LogicalPartListHead;
@@ -2149,75 +2189,33 @@ GetPartition(
PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
if (PartEntry->PartitionNumber == PartitionNumber)
{
/* Partition found */
return PartEntry;
}
return PartEntry; /* Partition found, return it */
}
/* The partition was not found on the disk, stop there */
return NULL;
}
BOOLEAN
GetDiskOrPartition(
IN PPARTLIST List,
IN ULONG DiskNumber,
IN ULONG PartitionNumber OPTIONAL,
OUT PDISKENTRY* pDiskEntry,
OUT PPARTENTRY* pPartEntry OPTIONAL)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry = NULL;
/* Find the disk */
DiskEntry = GetDiskByNumber(List, DiskNumber);
if (!DiskEntry)
return FALSE;
/* If we have a partition (PartitionNumber != 0), find it */
if (PartitionNumber != 0)
{
if (DiskEntry->DiskStyle == PARTITION_STYLE_GPT)
{
DPRINT("GPT-partitioned disk detected, not currently supported by SETUP!\n");
return FALSE;
}
PartEntry = GetPartition(/*List,*/ DiskEntry, PartitionNumber);
if (!PartEntry)
return FALSE;
ASSERT(PartEntry->DiskEntry == DiskEntry);
}
/* Return the disk (and optionally the partition) */
*pDiskEntry = DiskEntry;
if (pPartEntry) *pPartEntry = PartEntry;
return TRUE;
}
//
// NOTE: Was introduced broken in r6258 by Casper
//
PPARTENTRY
SelectPartition(
IN PPARTLIST List,
IN ULONG DiskNumber,
IN ULONG PartitionNumber)
_In_ PPARTLIST List,
_In_ ULONG DiskNumber,
_In_ ULONG PartitionNumber)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
/* Find the disk */
DiskEntry = GetDiskByNumber(List, DiskNumber);
if (!DiskEntry)
return NULL;
ASSERT(DiskEntry->DiskNumber == DiskNumber);
PartEntry = GetPartition(/*List,*/ DiskEntry, PartitionNumber);
/* Find the partition */
PartEntry = GetPartition(DiskEntry, PartitionNumber);
if (!PartEntry)
return NULL;
ASSERT(PartEntry->DiskEntry == DiskEntry);
ASSERT(DiskEntry->DiskNumber == DiskNumber);
ASSERT(PartEntry->PartitionNumber == PartitionNumber);
return PartEntry;
@@ -2542,7 +2540,7 @@ UpdateDiskLayout(
IN PDISKENTRY DiskEntry)
{
PPARTITION_INFORMATION PartitionInfo;
PPARTITION_INFORMATION LinkInfo = NULL;
PPARTITION_INFORMATION LinkInfo;
PLIST_ENTRY ListEntry;
PPARTENTRY PartEntry;
LARGE_INTEGER HiddenSectors64;
@@ -2609,6 +2607,7 @@ UpdateDiskLayout(
ASSERT(Index <= 4);
/* Update the logical partition table */
LinkInfo = NULL;
Index = 4;
for (ListEntry = DiskEntry->LogicalPartListHead.Flink;
ListEntry != &DiskEntry->LogicalPartListHead;
@@ -2641,14 +2640,19 @@ UpdateDiskLayout(
PartitionInfo->RewritePartition = TRUE;
/* Fill the link entry of the previous partition entry */
if (LinkInfo != NULL)
if (LinkInfo)
{
LinkInfo->StartingOffset.QuadPart = (PartEntry->StartSector.QuadPart - DiskEntry->SectorAlignment) * DiskEntry->BytesPerSector;
LinkInfo->PartitionLength.QuadPart = (PartEntry->StartSector.QuadPart + DiskEntry->SectorAlignment) * DiskEntry->BytesPerSector;
HiddenSectors64.QuadPart = PartEntry->StartSector.QuadPart - DiskEntry->SectorAlignment - DiskEntry->ExtendedPartition->StartSector.QuadPart;
LinkInfo->HiddenSectors = HiddenSectors64.LowPart;
LinkInfo->PartitionNumber = 0;
LinkInfo->PartitionType = PARTITION_EXTENDED;
/* Extended partition links only use type 0x05, as observed
* on Windows NT. Alternatively they could inherit the type
* of the main extended container. */
LinkInfo->PartitionType = PARTITION_EXTENDED; // DiskEntry->ExtendedPartition->PartitionType;
LinkInfo->BootIndicator = FALSE;
LinkInfo->RecognizedPartition = FALSE;
LinkInfo->RewritePartition = TRUE;
@@ -2850,6 +2854,10 @@ ExtendedPartitionCreationChecks(
if (PartEntry->IsPartitioned)
return ERROR_NEW_PARTITION;
/* Cannot create an extended partition within logical partition space */
if (PartEntry->LogicalPartition)
return ERROR_ONLY_ONE_EXTENDED;
/* Only one primary partition is allowed on super-floppy */
if (IsSuperFloppy(DiskEntry))
return ERROR_PARTITION_TABLE_FULL;
@@ -2859,120 +2867,59 @@ ExtendedPartitionCreationChecks(
return ERROR_PARTITION_TABLE_FULL;
/* Fail if there is another extended partition in the list */
if (DiskEntry->ExtendedPartition != NULL)
if (DiskEntry->ExtendedPartition)
return ERROR_ONLY_ONE_EXTENDED;
return ERROR_SUCCESS;
}
// TODO: Improve upon the PartitionInfo parameter later
// (see VDS::CREATE_PARTITION_PARAMETERS and PPARTITION_INFORMATION_MBR/GPT for example)
// So far we only use it as the optional type of the partition to create.
BOOLEAN
CreatePartition(
_In_ PPARTLIST List,
_Inout_ PPARTENTRY PartEntry,
_In_opt_ ULONGLONG SizeBytes)
_In_opt_ ULONGLONG SizeBytes,
_In_opt_ ULONG_PTR PartitionInfo)
{
ERROR_NUMBER Error;
BOOLEAN isContainer = IsContainerPartition((UCHAR)PartitionInfo);
PCSTR mainType = "Primary";
DPRINT1("CreatePartition(%I64u bytes)\n", SizeBytes);
if (isContainer)
mainType = "Extended";
else if (PartEntry && PartEntry->LogicalPartition)
mainType = "Logical";
if (List == NULL || PartEntry == NULL ||
PartEntry->DiskEntry == NULL || PartEntry->IsPartitioned)
DPRINT1("CreatePartition(%s, %I64u bytes)\n", mainType, SizeBytes);
if (!List || !PartEntry ||
!PartEntry->DiskEntry || PartEntry->IsPartitioned)
{
return FALSE;
}
Error = PartitionCreationChecks(PartEntry);
if (Error != NOT_AN_ERROR)
{
DPRINT1("PartitionCreationChecks() failed with error %lu\n", Error);
return FALSE;
}
/* Initialize the partition entry, inserting a new blank region if needed */
if (!InitializePartitionEntry(PartEntry, SizeBytes))
return FALSE;
UpdateDiskLayout(PartEntry->DiskEntry);
AssignDriveLetters(List);
return TRUE;
}
static
VOID
AddLogicalDiskSpace(
_In_ PDISKENTRY DiskEntry)
{
ULONGLONG StartSector;
ULONGLONG SectorCount;
PPARTENTRY NewPartEntry;
DPRINT1("AddLogicalDiskSpace()\n");
/* Create a partition entry that represents the empty space in the container partition */
StartSector = DiskEntry->ExtendedPartition->StartSector.QuadPart + (ULONGLONG)DiskEntry->SectorAlignment;
SectorCount = DiskEntry->ExtendedPartition->SectorCount.QuadPart - (ULONGLONG)DiskEntry->SectorAlignment;
NewPartEntry = CreateInsertBlankRegion(DiskEntry,
&DiskEntry->LogicalPartListHead,
StartSector,
SectorCount,
TRUE);
if (NewPartEntry == NULL)
{
DPRINT1("Failed to create a new empty region for extended partition space!\n");
return;
}
}
BOOLEAN
CreateExtendedPartition(
_In_ PPARTLIST List,
_Inout_ PPARTENTRY PartEntry,
_In_opt_ ULONGLONG SizeBytes)
{
ERROR_NUMBER Error;
DPRINT1("CreateExtendedPartition(%I64u bytes)\n", SizeBytes);
if (List == NULL || PartEntry == NULL ||
PartEntry->DiskEntry == NULL || PartEntry->IsPartitioned)
{
return FALSE;
}
Error = ExtendedPartitionCreationChecks(PartEntry);
if (Error != NOT_AN_ERROR)
{
DPRINT1("ExtendedPartitionCreationChecks() failed with error %lu\n", Error);
return FALSE;
}
/* Initialize the partition entry, inserting a new blank region if needed */
if (!InitializePartitionEntry(PartEntry, SizeBytes))
return FALSE;
ASSERT(PartEntry->LogicalPartition == FALSE);
if (PartEntry->StartSector.QuadPart < 1450560)
{
/* Partition starts below the 8.4GB boundary ==> CHS partition */
PartEntry->PartitionType = PARTITION_EXTENDED;
}
if (isContainer)
Error = ExtendedPartitionCreationChecks(PartEntry);
else
Error = PartitionCreationChecks(PartEntry);
if (Error != NOT_AN_ERROR)
{
/* Partition starts above the 8.4GB boundary ==> LBA partition */
PartEntry->PartitionType = PARTITION_XINT13_EXTENDED;
DPRINT1("PartitionCreationChecks(%s) failed with error %lu\n", mainType, Error);
return FALSE;
}
// FIXME? Possibly to make GetNextUnformattedPartition work (i.e. skip the extended partition container)
PartEntry->New = FALSE;
PartEntry->FormatState = Formatted;
/* Initialize the partition entry, inserting a new blank region if needed */
if (!InitializePartitionEntry(PartEntry, SizeBytes, PartitionInfo))
return FALSE;
PartEntry->DiskEntry->ExtendedPartition = PartEntry;
AddLogicalDiskSpace(PartEntry->DiskEntry);
if (isContainer)
{
// FIXME? Possibly to make GetNextUnformattedPartition work (i.e. skip the extended partition container)
PartEntry->New = FALSE;
PartEntry->FormatState = Formatted;
}
UpdateDiskLayout(PartEntry->DiskEntry);
AssignDriveLetters(List);
@@ -3089,9 +3036,9 @@ DismountVolume(
BOOLEAN
DeletePartition(
IN PPARTLIST List,
IN PPARTENTRY PartEntry,
OUT PPARTENTRY* FreeRegion OPTIONAL)
_In_ PPARTLIST List,
_In_ PPARTENTRY PartEntry,
_Out_opt_ PPARTENTRY* FreeRegion)
{
PDISKENTRY DiskEntry;
PPARTENTRY PrevPartEntry;
@@ -3099,8 +3046,8 @@ DeletePartition(
PPARTENTRY LogicalPartEntry;
PLIST_ENTRY Entry;
if (List == NULL || PartEntry == NULL ||
PartEntry->DiskEntry == NULL || PartEntry->IsPartitioned == FALSE)
if (!List || !PartEntry ||
!PartEntry->DiskEntry || !PartEntry->IsPartitioned)
{
return FALSE;
}

View File

@@ -251,45 +251,36 @@ DestroyPartitionList(
PDISKENTRY
GetDiskByBiosNumber(
IN PPARTLIST List,
IN ULONG HwDiskNumber);
_In_ PPARTLIST List,
_In_ ULONG HwDiskNumber);
PDISKENTRY
GetDiskByNumber(
IN PPARTLIST List,
IN ULONG DiskNumber);
_In_ PPARTLIST List,
_In_ ULONG DiskNumber);
PDISKENTRY
GetDiskBySCSI(
IN PPARTLIST List,
IN USHORT Port,
IN USHORT Bus,
IN USHORT Id);
_In_ PPARTLIST List,
_In_ USHORT Port,
_In_ USHORT Bus,
_In_ USHORT Id);
PDISKENTRY
GetDiskBySignature(
IN PPARTLIST List,
IN ULONG Signature);
_In_ PPARTLIST List,
_In_ ULONG Signature);
PPARTENTRY
GetPartition(
// IN PPARTLIST List,
IN PDISKENTRY DiskEntry,
IN ULONG PartitionNumber);
BOOLEAN
GetDiskOrPartition(
IN PPARTLIST List,
IN ULONG DiskNumber,
IN ULONG PartitionNumber OPTIONAL,
OUT PDISKENTRY* pDiskEntry,
OUT PPARTENTRY* pPartEntry OPTIONAL);
_In_ PDISKENTRY DiskEntry,
_In_ ULONG PartitionNumber);
PPARTENTRY
SelectPartition(
IN PPARTLIST List,
IN ULONG DiskNumber,
IN ULONG PartitionNumber);
_In_ PPARTLIST List,
_In_ ULONG DiskNumber,
_In_ ULONG PartitionNumber);
PPARTENTRY
GetNextPartition(
@@ -313,13 +304,8 @@ BOOLEAN
CreatePartition(
_In_ PPARTLIST List,
_Inout_ PPARTENTRY PartEntry,
_In_opt_ ULONGLONG SizeBytes);
BOOLEAN
CreateExtendedPartition(
_In_ PPARTLIST List,
_Inout_ PPARTENTRY PartEntry,
_In_opt_ ULONGLONG SizeBytes);
_In_opt_ ULONGLONG SizeBytes,
_In_opt_ ULONG_PTR PartitionInfo);
NTSTATUS
DismountVolume(
@@ -327,9 +313,9 @@ DismountVolume(
BOOLEAN
DeletePartition(
IN PPARTLIST List,
IN PPARTENTRY PartEntry,
OUT PPARTENTRY* FreeRegion OPTIONAL);
_In_ PPARTLIST List,
_In_ PPARTENTRY PartEntry,
_Out_opt_ PPARTENTRY* FreeRegion);
PPARTENTRY
FindSupportedSystemPartition(

View File

@@ -1615,7 +1615,8 @@ SelectPartitionPage(PINPUT_RECORD Ir)
* it will be formatted later with default parameters */
CreatePartition(PartitionList,
CurrentPartition,
0ULL);
0ULL,
0);
CurrentPartition->New |= PARTITION_NEW_AUTOCREATE;
// FIXME?? Aren't we going to enter an infinite loop, if this test fails??
@@ -1746,7 +1747,8 @@ SelectPartitionPage(PINPUT_RECORD Ir)
* it will be formatted later with default parameters */
CreatePartition(PartitionList,
CurrentPartition,
0ULL);
0ULL,
0);
CurrentPartition->New |= PARTITION_NEW_AUTOCREATE;
}
@@ -2125,18 +2127,13 @@ CreatePartitionPage(PINPUT_RECORD Ir)
ASSERT(PartSize <= MaxPartSize);
if (PartCreateType == PartTypeData)
{
CreatePartition(PartitionList,
CurrentPartition,
PartSize);
}
else // if (PartCreateType == PartTypeExtended)
{
CreateExtendedPartition(PartitionList,
CurrentPartition,
PartSize);
}
CreatePartition(PartitionList,
CurrentPartition,
PartSize,
(PartCreateType == PartTypeData)
? 0
// (PartCreateType == PartTypeExtended)
: PARTITION_EXTENDED);
return SELECT_PARTITION_PAGE;
}
@@ -2396,7 +2393,8 @@ SelectFileSystemPage(PINPUT_RECORD Ir)
// specified from the TXTSETUP.SIF or unattended setup.
CreatePartition(PartitionList,
SystemPartition,
0ULL);
0ULL,
0);
SystemPartition->New |= PARTITION_NEW_AUTOCREATE;
ASSERT(SystemPartition->IsPartitioned);
}

View File

@@ -54,7 +54,7 @@ BEGIN
MENUITEM "安全(&S)...", IDM_SECURITY, MFT_STRING, MFS_ENABLED
MENUITEM "网络连接(&N)", IDM_NETWORKCONNECTIONS, MFT_STRING, MFS_ENABLED
MENUITEM "打印机和传真(&P)", IDM_PRINTERSANDFAXES, MFT_STRING, MFS_ENABLED
MENUITEM "任务栏和开始菜单(&T)", IDM_TASKBARANDSTARTMENU, MFT_STRING, MFS_ENABLED
MENUITEM "任务栏和开始菜单(&T)", IDM_TASKBARANDSTARTMENU, MFT_STRING, MFS_ENABLED
END
MENUITEM "查找(&C)", IDM_SEARCH, MFT_STRING, MFS_ENABLED
MENUITEM "帮助与支持(&H)", IDM_HELPANDSUPPORT, MFT_STRING, MFS_ENABLED
@@ -80,19 +80,19 @@ BEGIN
AUTOCHECKBOX "将任务栏保持在其它窗口的前端(&T)", IDC_TASKBARPROP_ONTOP, 13, 71, 200, 10
AUTOCHECKBOX "分组类似任务栏按钮(&G)", IDC_TASKBARPROP_GROUP, 13, 84, 200, 10
AUTOCHECKBOX "显示快速启动(&Q)", IDC_TASKBARPROP_SHOWQL, 13, 97, 200, 10
AUTOCHECKBOX "U&se small icons", IDC_TASKBARPROP_SMALLICONS, 13, 110, 200, 10
AUTOCHECKBOX "使用小图标(&S)", IDC_TASKBARPROP_SMALLICONS, 13, 110, 200, 10
END
IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "开始菜单"
CAPTION "开始菜单"
FONT 9, "宋体", 0, 0, 0x1
BEGIN
CONTROL "", IDC_TASKBARPROP_STARTMENU_BITMAP, "Static", SS_BITMAP | SS_SUNKEN,7, 7, 183, 108
AUTORADIOBUTTON "开始菜单(&S)", IDC_TASKBARPROP_STARTMENU, 7, 135, 105, 10
AUTORADIOBUTTON "开始菜单(&S)", IDC_TASKBARPROP_STARTMENU, 7, 135, 105, 10
LTEXT "这种菜单样式让您能方便地访问您的文件夹、收藏的程序和搜索。", IDC_TASKBARPROP_STARTMENUMODERNTEXT, 20, 145, 150, 24
PUSHBUTTON "自定义(&C)...", IDC_TASKBARPROP_STARTMENUCUST, 192, 132, 53, 14
AUTORADIOBUTTON "经典开始菜单(&M)", IDC_TASKBARPROP_STARTMENUCLASSIC, 7, 175, 105, 10
AUTORADIOBUTTON "经典开始菜单(&M)", IDC_TASKBARPROP_STARTMENUCLASSIC, 7, 175, 105, 10
LTEXT "这种菜单样式给您带来经典的外观和功能。", IDC_TASKBARPROP_STARTMENUCLASSICTEXT, 20, 185, 150, 24
PUSHBUTTON "自定义(&C)...", IDC_TASKBARPROP_STARTMENUCLASSICCUST, 192, 172, 53, 14
END
@@ -103,15 +103,15 @@ CAPTION "通知区域"
FONT 9, "宋体", 0, 0, 0x1
BEGIN
CONTROL "", IDC_TASKBARPROP_NOTIFICATIONBITMAP, "Static", SS_BITMAP | SS_SUNKEN | SS_CENTERIMAGE, 12, 6, 229, 24
GROUPBOX "Icons", IDC_STATIC, 6, 36, 240, 56
GROUPBOX "图标", IDC_STATIC, 6, 36, 240, 56
LTEXT "您可以通过隐藏不常用的图标来保持通知区域的整洁。", IDC_STATIC, 13, 48, 223, 16
AUTOCHECKBOX "隐藏不活动的图标(&H)", IDC_TASKBARPROP_HIDEICONS, 13, 70, 125, 10
PUSHBUTTON "自定义(&C)...", IDC_TASKBARPROP_ICONCUST, 188, 70, 50, 14
GROUPBOX "System icons", IDC_STATIC, 6, 99, 240, 56
LTEXT "Select which system icons to always show.", IDC_STATIC, 13, 113, 223, 8
GROUPBOX "系统图标", IDC_STATIC, 6, 99, 240, 56
LTEXT "选择始终显示的系统图标。", IDC_STATIC, 13, 113, 223, 8
AUTOCHECKBOX "显示时钟(&K)", IDC_TASKBARPROP_CLOCK, 13, 127, 80, 10
AUTOCHECKBOX "显示秒", IDC_TASKBARPROP_SECONDS, 120, 127, 80, 10, WS_DISABLED
AUTOCHECKBOX "&Desktop", IDC_TASKBARPROP_DESKTOP, 13, 140, 80, 10
AUTOCHECKBOX "显示桌面(&D)", IDC_TASKBARPROP_DESKTOP, 13, 140, 80, 10
END
IDD_NOTIFICATIONS_CUSTOMIZE DIALOGEX 0, 0, 232, 240
@@ -131,12 +131,12 @@ END
IDD_CLASSICSTART_CUSTOMIZE DIALOGEX 0, 0, 232, 240, 0
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_DLGFRAME
CAPTION "自定义经典开始菜单"
CAPTION "自定义经典开始菜单"
FONT 9, "宋体"
BEGIN
GROUPBOX "开始菜单", IDC_STATIC, 8, 7, 218, 114
GROUPBOX "开始菜单", IDC_STATIC, 8, 7, 218, 114
ICON IDI_STARTMENU2, IDC_STATIC, 19, 17, 20, 20
LTEXT "您可以通过添加或删除项目来自定义开始菜单。", IDC_STATIC, 48, 17, 108, 39
LTEXT "您可以通过添加或删除项目来自定义开始菜单。", IDC_STATIC, 48, 17, 108, 39
PUSHBUTTON "添加(&D)...", IDC_CLASSICSTART_ADD, 162, 18, 53, 14
PUSHBUTTON "删除(&R)...", IDC_CLASSICSTART_REMOVE, 162, 33, 53, 14
PUSHBUTTON "高级(&V)", IDC_CLASSICSTART_ADVANCED, 162, 49, 53, 14
@@ -144,8 +144,8 @@ BEGIN
ICON IDI_RECYCLEBIN, IDC_STATIC, 20, 85, 20, 20
LTEXT "要删除最近访问过的文档、程序和网站记录,单击清除。", IDC_STATIC, 49, 85, 108, 33
PUSHBUTTON "清除(&C)", IDC_CLASSICSTART_CLEAR, 162, 94, 53, 14
LTEXT "开始菜单中的高级的选项:(&T)", IDC_STATIC, 8, 129, 150, 8
CONTROL "开始菜单设置(&T)", IDC_CLASSICSTART_SETTINGS, "SysTreeView32", TVS_HASBUTTONS | WS_BORDER, 8, 139, 218, 72, WS_EX_CLIENTEDGE
LTEXT "开始菜单中的高级的选项:(&T)", IDC_STATIC, 8, 129, 150, 8
CONTROL "开始菜单设置(&T)", IDC_CLASSICSTART_SETTINGS, "SysTreeView32", TVS_HASBUTTONS | WS_BORDER, 8, 139, 218, 72, WS_EX_CLIENTEDGE
DEFPUSHBUTTON "确定", IDOK, 122, 220, 50, 14
PUSHBUTTON "取消", IDCANCEL, 176, 220, 50, 14
END
@@ -168,11 +168,11 @@ STYLE DS_SETFONT | WS_CAPTION | WS_CHILD | WS_DISABLED
CAPTION "高级"
FONT 9, "宋体"
BEGIN
GROUPBOX "开始菜单设置 ", IDC_STATIC, 7, 7, 238, 42
GROUPBOX "开始菜单设置 ", IDC_STATIC, 7, 7, 238, 42
AUTOCHECKBOX "当我用鼠标暂停它们时打开子菜单(&O)", IDC_AUTOOPEN, 14, 21, 224, 10
AUTOCHECKBOX "突出显示新安装的程序(&N)", IDC_HIGHLIGHT, 14, 35, 224, 10
LTEXT "开始菜单项(&M)", IDC_STATIC, 7, 53, 238, 8
CONTROL "开始菜单设置(&T)", IDC_ITEMS, "SysTreeView32", WS_BORDER | 0x00000001, 7, 63, 238, 67, WS_EX_CLIENTEDGE
LTEXT "开始菜单项(&M)", IDC_STATIC, 7, 53, 238, 8
CONTROL "开始菜单设置(&T)", IDC_ITEMS, "SysTreeView32", WS_BORDER | 0x00000001, 7, 63, 238, 67, WS_EX_CLIENTEDGE
GROUPBOX "最近使用的文档", IDC_STATIC, 7, 133, 238, 56
LTEXT "选择此选项来提供对您最近打开的文档的快速访问。清除此列表并不会删除文件。", IDC_STATIC, 14, 144, 224, 21
AUTOCHECKBOX "列出我最近打开的文档(&R)", IDC_RECENTLY, 14, 168, 147, 10
@@ -190,12 +190,12 @@ BEGIN
AUTORADIOBUTTON "大图标(&L)", IDC_CHOOSELARGE, 43, 25, 53, 10
AUTORADIOBUTTON "小图标(&S)", IDC_CHOOSESMALL, 177, 25, 51, 10, NOT WS_TABSTOP
GROUPBOX "程序 ", IDC_STATIC, 7, 49, 238, 70
LTEXT "开始菜单包含您最常使用的程序的快捷方式。清除快捷方式列表并不会删除程序。", IDC_STATIC, 14, 63, 224, 20
LTEXT "开始菜单上的程序的数目(&N)", IDC_STATIC, 14, 86, 112, 8
LTEXT "开始菜单包含您最常使用的程序的快捷方式。清除快捷方式列表并不会删除程序。", IDC_STATIC, 14, 63, 224, 20
LTEXT "开始菜单上的程序的数目(&N)", IDC_STATIC, 14, 86, 112, 8
EDITTEXT IDC_NUMBEROFPROGRAMS, 133, 84, 27, 12, ES_LEFT | ES_RIGHT | ES_NUMBER
CONTROL "", IDC_NUMBERUPDOWN, "msctls_updown32", WS_BORDER | 0x000000B6, 160, 84, 11, 12
PUSHBUTTON "清除列表(&C)", IDC_CLEARLIST, 182, 98, 57, 14
GROUPBOX "在开始菜单上显示 ", IDC_STATIC, 7, 126, 238, 63
GROUPBOX "在开始菜单上显示 ", IDC_STATIC, 7, 126, 238, 63
AUTOCHECKBOX "Internet(&I)", IDC_SHOWINTERNET, 14, 140, 42, 10
COMBOBOX IDC_INTERNETDEFAULTAPP, 98, 138, 140, 200, CBS_DROPDOWNLIST | WS_VSCROLL
AUTOCHECKBOX "电子邮件(&E)", IDC_SHOWEMAIL, 14, 157, 37, 10
@@ -213,7 +213,7 @@ END
STRINGTABLE
BEGIN
IDS_TASKBAR_STARTMENU_PROP_CAPTION "任务栏和开始菜单"
IDS_TASKBAR_STARTMENU_PROP_CAPTION "任务栏和开始菜单"
IDS_RESTORE_ALL "显示打开的窗口(&S)"
IDS_TRAYWND_UNDO_CASCADE "撤销层叠(&U)"
IDS_TRAYWND_UNDO_TILE "撤销平铺(&U)"

View File

@@ -376,7 +376,7 @@ ATOM GROUP_RegisterGroupWinClass(VOID)
wndClass.cbWndExtra = sizeof(LONG_PTR);
wndClass.hInstance = Globals.hInstance;
wndClass.hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCEW(IDI_GROUP_ICON));
wndClass.hCursor = LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_ARROW));
wndClass.hCursor = LoadCursorW(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = STRING_GROUP_WIN_CLASS_NAME;

View File

@@ -1061,7 +1061,7 @@ static ATOM MAIN_RegisterMainWinClass(VOID)
wndClass.cbWndExtra = 0;
wndClass.hInstance = Globals.hInstance;
wndClass.hIcon = Globals.hMainIcon;
wndClass.hCursor = LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_ARROW));
wndClass.hCursor = LoadCursorW(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = STRING_MAIN_WIN_CLASS_NAME;

View File

@@ -1,3 +1,12 @@
/*
* PROJECT: ReactOS Winlogon
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Czech resource file
* TRANSLATORS: Copyright 2005 Jirka Ďoubek (potapnik) <jirka@studioprojekt.cz>
* Copyright 2011 Kamil Hornicek <kamil.hornicek@reactos.org>
* Copyright 2024 Václav Zouzalík (Venca24) <vaclav.zouzalik@seznam.cz>
*/
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
IDD_SHUTDOWNCOMPUTER DIALOGEX 45, 22, 164, 52
@@ -15,21 +24,21 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPT
CAPTION "Chyba uživatelského rozhraní"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Dynamická knihovna %s selhala při nahrávaní.", IDC_GINALOADFAILED, 39, 16, 156, 24
LTEXT "Dynamická knihovna %s selhala při nahrávání.", IDC_GINALOADFAILED, 39, 16, 156, 24
LTEXT "Kontaktujte správce počítače pro nahrazení dynamickě knihovny nebo obnovte původní dynamickou knihovnu.", IDC_GINALOADFAILEDCONTACT, 39, 53, 151, 25
DEFPUSHBUTTON "&Restart", 1, 80, 91, 68, 14
END
IDD_SYSSHUTDOWN DIALOGEX 50, 50, 180, 140
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_CAPTION | WS_POPUP
CAPTION "System Shutdown"
CAPTION "Vypínání systému"
FONT 8, "MS Shell Dlg"
BEGIN
ICON IDI_WARNING, IDC_SYSSHUTDOWNICON, 6, 7, 18, 20
LTEXT "A system shutdown has been initiated. Please save all your work and terminate your session. All unsaved work will be lost when the system shuts down.", -1, 38, 7, 135, 40
LTEXT "The system shuts down in:", -1, 38, 50, 90, 8
LTEXT "Byl zahájen proces vypínání systému. Uložte prosím svoji práci a ukončete sezení. Veškerá neuložená data budou po vypnutí systému ztracena.", -1, 38, 7, 135, 40
LTEXT "Systém se vypne za:", -1, 38, 50, 90, 8
LTEXT "00:00:00", IDC_SYSSHUTDOWNTIMELEFT, 132, 50, 41, 8
LTEXT "Message:", -1, 38, 65, 135, 8
LTEXT "Zpráva:", -1, 38, 65, 135, 8
EDITTEXT IDC_SYSSHUTDOWNMESSAGE, 34, 75, 139, 58, ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP, WS_EX_STATICEDGE
END
@@ -44,14 +53,14 @@ BEGIN
IDS_RUNNINGLOGONSCRIPTS "Skripty po přihlášení..."
IDS_LOADINGYOURPERSONALSETTINGS "Nahrávání osobního nastavení..."
IDS_CLOSINGNETWORKCONNECTIONS "Ukončení síťových připojení..."
IDS_REACTOSISRESTARTING "Restarting..."
IDS_REACTOSISSHUTTINGDOWN "Shutting down..."
IDS_REACTOSISRESTARTING "Restartování..."
IDS_REACTOSISSHUTTINGDOWN "Vypínání..."
IDS_PREPARETOSTANDBY "Příprava k přechodu do úsporného režimu..."
IDS_PREPARETOHIBERNATE "Příprava k přechodu do režimu hibernace..."
IDS_SAVEYOURSETTINGS "Ukládání osobního nastavení..."
IDS_REACTOSISSTARTINGUP "ReactOS se spouští..."
IDS_TIMEOUTSHORTFORMAT "%02d:%02d:%02d"
IDS_TIMEOUTLONGFORMAT "%d days"
IDS_TIMEOUTLONGFORMAT "%d d"
END
STRINGTABLE

View File

@@ -100,7 +100,7 @@ function(add_user_profile_dirs _image_filelist _rootdir _username)
file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Recent=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
file(APPEND ${_image_filelist} "${_rootdir}/${_username}/SendTo=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
#file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/Administrative Tools=${CMAKE_CURRENT_BINARY_DIR}/empty\n") # CORE-12328
file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/Administrative Tools=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/StartUp=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Templates=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
endfunction()

View File

@@ -1308,4 +1308,45 @@ UNINSTALL="アンインストール"
REPAIR="修復"
TEST="テスト"
;------------------------------------------------------------------------
; LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED
[Strings.0804]
;; In shell32.dll
CPLFILE_OPENWITH="用控制面板打开"
;; In hhctrl.ocx
CHMFILE="已编译的 HTML 帮助文件"
;; In msxml3r.dll
XMLFILE="XML 文档"
XSLFILE="XSL 样式表"
;; In msi.dll
MSIPACK="ReactOS Installer 软件包"
;; In themeui.dll
MSSTYLESFILE="可视化风格文件"
THEMEFILE="主题文件"
;; In some multimedia exe/dll
WAVFILE="波形声音"
MIDFILE="MIDI 序列"
CDAFILE="CD 音频曲目"
AVIFILE="视频剪辑"
;; Misc file types without friendly (localized in .dll resources) name
CSSFILE="层叠样式表文档"
SCFFILE="ReactOS Explorer Command"
;WMZFILE="Compressed Enhanced Metafile"
;; For .reg files, right-click menu
MERGE="合并"
;; For screensaver (*.scr) and MSI install package (*.msi) files, right-click menu
CONFIGURE="配置"
INSTALL="安装"
UNINSTALL="卸载"
REPAIR="修复"
TEST="测试"
; EOF

View File

@@ -4124,34 +4124,34 @@ TEMP_DIR="%USERPROFILE%\Lokal konfigurazioa\\Temp"
; Simplified Chinese (LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED)
[Strings.0804]
EVENT_LABEL_0 = "Default Beep"
EVENT_LABEL_1 = "Program error"
EVENT_LABEL_2 = "Close program"
EVENT_LABEL_3 = "Critical Battery Alarm"
EVENT_LABEL_4 = "Device Connect"
EVENT_LABEL_5 = "Device Disconnect"
EVENT_LABEL_6 = "Device Failed to Connect"
EVENT_LABEL_7 = "Empty Recycle Bin"
EVENT_LABEL_8 = "Low Battery Alarm"
EVENT_LABEL_9 = "Maximize"
EVENT_LABEL_10 = "Menu command"
EVENT_LABEL_11 = "Menu popup"
EVENT_LABEL_12 = "Minimize"
EVENT_LABEL_13 = "New Mail Notification"
EVENT_LABEL_14 = "Start Navigation"
EVENT_LABEL_15 = "Open program"
EVENT_LABEL_16 = "Print Complete"
EVENT_LABEL_17 = "Restore Down"
EVENT_LABEL_18 = "Restore Up"
EVENT_LABEL_19 = "Asterisk"
EVENT_LABEL_20 = "Exclamation"
EVENT_LABEL_21 = "Exit ReactOS"
EVENT_LABEL_22 = "Critical Stop"
EVENT_LABEL_23 = "System Notification"
EVENT_LABEL_24 = "Question"
EVENT_LABEL_25 = "Start ReactOS"
EVENT_LABEL_26 = "ReactOS Logoff"
EVENT_LABEL_27 = "ReactOS Logon"
EVENT_LABEL_0 = "默认响声"
EVENT_LABEL_1 = "程序出错"
EVENT_LABEL_2 = "关闭程序"
EVENT_LABEL_3 = "电池严重短缺警报"
EVENT_LABEL_4 = "设备连接"
EVENT_LABEL_5 = "设备中断连接"
EVENT_LABEL_6 = "设备未能连接"
EVENT_LABEL_7 = "清空回收站"
EVENT_LABEL_8 = "电池不足警报"
EVENT_LABEL_9 = "最大化"
EVENT_LABEL_10 = "菜单命令"
EVENT_LABEL_11 = "弹出菜单"
EVENT_LABEL_12 = "最小化"
EVENT_LABEL_13 = "新邮件通知"
EVENT_LABEL_14 = "启动导航"
EVENT_LABEL_15 = "打开程序"
EVENT_LABEL_16 = "打印结束"
EVENT_LABEL_17 = "向下还原"
EVENT_LABEL_18 = "向上还原"
EVENT_LABEL_19 = "星号"
EVENT_LABEL_20 = "感叹号"
EVENT_LABEL_21 = "退出 ReactOS"
EVENT_LABEL_22 = "关键性停止"
EVENT_LABEL_23 = "系统通知"
EVENT_LABEL_24 = "问题"
EVENT_LABEL_25 = "启动 ReactOS"
EVENT_LABEL_26 = "ReactOS 注销"
EVENT_LABEL_27 = "ReactOS 登录"
POWERCFG_NAME_0="家庭/办公桌"
POWERCFG_DESC_0="此方案适合大多数一直插电的台式计算机。"
POWERCFG_NAME_1="便携式/笔记本电脑"
@@ -4167,7 +4167,7 @@ POWERCFG_DESC_5="此方案能有效节省电池电力。"
DESKTOP_SCHEME_0="ReactOS 标准"
DESKTOP_SCHEME_1="红砖色"
DESKTOP_SCHEME_2="茄子"
DESKTOP_SCHEME_3="绿色橄榄"
DESKTOP_SCHEME_3="橄榄绿"
DESKTOP_SCHEME_4="高对比度 1"
DESKTOP_SCHEME_5="高对比度 2"
DESKTOP_SCHEME_6="高对比度(黑)"
@@ -4180,13 +4180,13 @@ DESKTOP_SCHEME_12="南瓜"
DESKTOP_SCHEME_13="雨天"
DESKTOP_SCHEME_14="ReactOS 经典"
DESKTOP_SCHEME_15="玫瑰"
DESKTOP_SCHEME_16="沙"
DESKTOP_SCHEME_16="沙"
DESKTOP_SCHEME_17="天空"
DESKTOP_SCHEME_18="石板"
DESKTOP_SCHEME_19="风暴"
DESKTOP_SCHEME_20="青色"
DESKTOP_SCHEME_21="麦色"
DESKTOP_SCHEME_22="Red, White, and Blue"
DESKTOP_SCHEME_22="红白蓝色"
DESKTOP_SCHEME_SIZE_0="默认大小"
TEMP_DIR="%USERPROFILE%\Local Settings\Temp"

View File

@@ -5529,6 +5529,593 @@ GMT_PLUS_13_A_DESC ="(GMT+13:00) ヌクアロファ"
GMT_PLUS_13_A_DAYLIGHT="トンガ夏時間"
GMT_PLUS_13_A_STANDARD="トンガ標準時"
; LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED
[Strings.0804]
COUNTRY_AD="安道尔"
COUNTRY_AE="阿拉伯联合酋长国"
COUNTRY_AF="阿富汗"
COUNTRY_AG="安提瓜和巴布达"
COUNTRY_AI="安圭拉"
COUNTRY_AL="阿尔巴尼亚"
COUNTRY_AM="亚美尼亚"
COUNTRY_AO="安哥拉"
COUNTRY_AQ="南极洲"
COUNTRY_AR="阿根廷"
COUNTRY_AS="美属萨摩亚"
COUNTRY_AT="奥地利"
COUNTRY_AU="澳洲"
COUNTRY_AW="阿鲁巴"
COUNTRY_AX="奥兰群岛"
COUNTRY_AZ="阿塞拜疆"
COUNTRY_BA="波斯尼亚和黑塞哥维那"
COUNTRY_BB="巴巴多斯"
COUNTRY_BD="孟加拉"
COUNTRY_BE="比利时"
COUNTRY_BF="布基纳法索"
COUNTRY_BG="保加利亚"
COUNTRY_BH="巴林"
COUNTRY_BI="布隆迪"
COUNTRY_BJ="贝宁"
COUNTRY_BL="圣巴泰勒米岛"
COUNTRY_BM="百慕大"
COUNTRY_BN="文莱"
COUNTRY_BO="玻利维亚"
COUNTRY_BQ="荷兰加勒比区"
COUNTRY_BR="巴西"
COUNTRY_BS="巴哈马"
COUNTRY_BT="不丹"
COUNTRY_BV="布韦岛"
COUNTRY_BW="博茨瓦纳"
COUNTRY_BY="白俄罗斯"
COUNTRY_BZ="伯利兹"
COUNTRY_CA="加拿大"
COUNTRY_CC="科科斯(基林)群岛"
COUNTRY_CD="刚果(金)"
COUNTRY_CF="中非共和国"
COUNTRY_CG="刚果(布)"
COUNTRY_CH="瑞士"
COUNTRY_CI="科特迪瓦"
COUNTRY_CK="库克群岛"
COUNTRY_CL="智利"
COUNTRY_CM="喀麦隆"
COUNTRY_CN="中国"
COUNTRY_CO="哥伦比亚"
COUNTRY_CR="哥斯达黎加"
COUNTRY_CU="古巴"
COUNTRY_CV="佛得角"
COUNTRY_CW="库拉索"
COUNTRY_CX="圣诞岛"
COUNTRY_CY="塞浦路斯"
COUNTRY_CZ="捷克共和国"
COUNTRY_DE="德国"
COUNTRY_DJ="吉布提"
COUNTRY_DK="丹麦"
COUNTRY_DM="多米尼克"
COUNTRY_DO="多米尼加共和国"
COUNTRY_DZ="阿尔及利亚"
COUNTRY_EC="厄瓜多尔"
COUNTRY_EE="爱沙尼亚"
COUNTRY_EG="埃及"
COUNTRY_EH="西撒哈拉"
COUNTRY_ER="厄立特里亚"
COUNTRY_ES="西班牙"
COUNTRY_ET="埃塞俄比亚"
COUNTRY_FI="芬兰"
COUNTRY_FJ="斐济"
COUNTRY_FK="福克兰群岛"
COUNTRY_FM="密克罗尼西亚"
COUNTRY_FO="法罗群岛"
COUNTRY_FR="法国"
COUNTRY_GA="加蓬"
COUNTRY_GD="格林纳达"
COUNTRY_GE="格鲁吉亚"
COUNTRY_GF="法属圭亚那"
COUNTRY_GG="根西岛"
COUNTRY_GH="加纳"
COUNTRY_GI="直布罗陀"
COUNTRY_GL="格陵兰"
COUNTRY_GM="冈比亚"
COUNTRY_GN="几内亚"
COUNTRY_GP="瓜德罗普"
COUNTRY_GQ="赤道几内亚"
COUNTRY_GR="希腊"
COUNTRY_GS="南乔治亚和南德桑威奇群岛"
COUNTRY_GT="危地马拉"
COUNTRY_GU="关岛"
COUNTRY_GW="几内亚比绍"
COUNTRY_GY="圭亚那"
COUNTRY_HK="香港特别行政区"
COUNTRY_HM="赫德岛和麦克唐纳群岛"
COUNTRY_HN="洪都拉斯"
COUNTRY_HR="克罗地亚"
COUNTRY_HT="海地"
COUNTRY_HU="匈牙利"
COUNTRY_ID="印度尼西亚"
COUNTRY_IE="爱尔兰"
COUNTRY_IL="以色列"
COUNTRY_IM="曼岛"
COUNTRY_IN="印度"
COUNTRY_IO="英属印度洋领地"
COUNTRY_IQ="伊拉克"
COUNTRY_IR="伊朗"
COUNTRY_IS="冰岛"
COUNTRY_IT="意大利"
COUNTRY_JE="泽西"
COUNTRY_JM="牙买加"
COUNTRY_JO="约旦"
COUNTRY_JP="日本"
COUNTRY_KE="肯尼亚"
COUNTRY_KG="吉尔吉斯斯坦"
COUNTRY_KH="柬埔寨"
COUNTRY_KI="基里巴斯"
COUNTRY_KM="科摩罗联盟"
COUNTRY_KN="圣基茨和尼维斯"
COUNTRY_KP="朝鲜民主主义人民共和国"
COUNTRY_KR="韩国"
COUNTRY_KW="科威特"
COUNTRY_KY="开曼群岛"
COUNTRY_KZ="哈萨克斯坦"
COUNTRY_LA="老挝"
COUNTRY_LB="黎巴嫩"
COUNTRY_LC="圣卢西亚"
COUNTRY_LI="列支敦士登"
COUNTRY_LK="斯里兰卡"
COUNTRY_LR="利比里亚"
COUNTRY_LS="莱索托"
COUNTRY_LT="立陶宛"
COUNTRY_LU="卢森堡"
COUNTRY_LV="拉脱维亚"
COUNTRY_LY="利比亚"
COUNTRY_MA="摩洛哥"
COUNTRY_MC="摩纳哥"
COUNTRY_MD="摩尔多瓦"
COUNTRY_ME="黑山"
COUNTRY_MF="法属圣马丁"
COUNTRY_MG="马达加斯加"
COUNTRY_MH="马绍尔群岛"
COUNTRY_MK="北马其顿"
COUNTRY_ML="马里"
COUNTRY_MM="缅甸"
COUNTRY_MN="蒙古"
COUNTRY_MO="澳门特别行政区"
COUNTRY_MP="北马里亚纳群岛"
COUNTRY_MQ="马提尼克"
COUNTRY_MR="毛里塔尼亚"
COUNTRY_MS="蒙特塞拉特"
COUNTRY_MT="马耳他"
COUNTRY_MU="毛里求斯"
COUNTRY_MV="马尔代夫"
COUNTRY_MW="马拉维"
COUNTRY_MX="墨西哥"
COUNTRY_MY="马来西亚"
COUNTRY_MZ="莫桑比克"
COUNTRY_NA="纳米比亚"
COUNTRY_NC="新喀里多尼亚"
COUNTRY_NE="尼日尔"
COUNTRY_NF="诺福克岛"
COUNTRY_NG="尼日利亚"
COUNTRY_NI="尼加拉瓜"
COUNTRY_NL="荷兰"
COUNTRY_NO="挪威"
COUNTRY_NP="尼泊尔"
COUNTRY_NR="瑙鲁"
COUNTRY_NU="纽埃"
COUNTRY_NZ="新西兰"
COUNTRY_OM="阿曼"
COUNTRY_PA="巴拿马"
COUNTRY_PE="秘鲁"
COUNTRY_PF="法属波利尼西亚"
COUNTRY_PG="巴布亚新几内亚"
COUNTRY_PH="菲律宾"
COUNTRY_PK="巴基斯坦"
COUNTRY_PL="波兰"
COUNTRY_PM="圣皮埃尔和密克隆群岛"
COUNTRY_PN="皮特凯恩群岛"
COUNTRY_PR="波多黎各"
COUNTRY_PS="巴勒斯坦"
COUNTRY_PT="葡萄牙"
COUNTRY_PW="帕劳"
COUNTRY_PY="巴拉圭"
COUNTRY_QA="卡塔尔"
COUNTRY_RE="留尼汪"
COUNTRY_RO="罗马尼亚"
COUNTRY_RS="塞尔维亚共和国"
COUNTRY_RU="俄罗斯"
COUNTRY_RW="卢旺达"
COUNTRY_SA="沙特阿拉伯"
COUNTRY_SB="所罗门群岛"
COUNTRY_SC="塞舌尔"
COUNTRY_SD="苏丹"
COUNTRY_SE="瑞典"
COUNTRY_SG="新加坡"
COUNTRY_SH="圣赫勒拿、阿森松与特里斯坦达库尼亚"
COUNTRY_SI="斯洛文尼亚"
COUNTRY_SJ="斯瓦尔巴和扬马延"
COUNTRY_SK="斯洛伐克"
COUNTRY_SL="塞拉利昂"
COUNTRY_SM="圣马力诺"
COUNTRY_SN="塞内加尔"
COUNTRY_SO="索马里"
COUNTRY_SR="苏里南"
COUNTRY_ST="圣多美和普林西比"
COUNTRY_SV="萨尔瓦多"
COUNTRY_SX="荷属圣马丁"
COUNTRY_SY="叙利亚"
COUNTRY_SZ="斯威士兰"
COUNTRY_TC="特克斯和凯科斯群岛"
COUNTRY_TD="乍得"
COUNTRY_TF="法属南部地区"
COUNTRY_TG="多哥"
COUNTRY_TH="泰国"
COUNTRY_TJ="塔吉克斯坦"
COUNTRY_TK="托克劳"
COUNTRY_TL="东帝汶"
COUNTRY_TM="土库曼斯坦"
COUNTRY_TN="突尼斯"
COUNTRY_TO="汤加"
COUNTRY_TR="土耳其"
COUNTRY_TT="特立尼达和多巴哥"
COUNTRY_TV="图瓦卢"
COUNTRY_TW="台湾"
COUNTRY_TZ="坦桑尼亚"
COUNTRY_UA="乌克兰"
COUNTRY_UG="乌干达"
COUNTRY_UK="英国"
COUNTRY_UM="美国本土外小岛屿"
COUNTRY_US="美国"
COUNTRY_UY="乌拉圭"
COUNTRY_UZ="乌兹别克斯坦"
COUNTRY_VA="梵蒂冈"
COUNTRY_VC="圣文森特和格林纳丁斯"
COUNTRY_VE="委内瑞拉"
COUNTRY_VG="英属维尔京群岛"
COUNTRY_VI="美属维尔京群岛"
COUNTRY_VN="越南"
COUNTRY_VU="瓦努阿图"
COUNTRY_WF="瓦利斯和富图纳"
COUNTRY_WS="萨摩亚"
COUNTRY_YE="也门"
COUNTRY_YT="马约特"
COUNTRY_ZA="南非"
COUNTRY_ZM="赞比亚"
COUNTRY_ZW="津巴布韦"
GMT_MINUS_12_A_DESC ="(GMT-12:00) 国际日期变更线西"
GMT_MINUS_12_A_DAYLIGHT="国际日期变更线夏令时"
GMT_MINUS_12_A_STANDARD="国际日期变更线标准时间"
GMT_MINUS_11_A_DESC ="(GMT-11:00) 中途岛,萨摩亚群岛"
GMT_MINUS_11_A_DAYLIGHT="萨摩亚群岛夏令时"
GMT_MINUS_11_A_STANDARD="萨摩亚群岛标准时间"
GMT_MINUS_10_A_DESC ="(GMT-10:00) 夏威夷"
GMT_MINUS_10_A_DAYLIGHT="夏威夷夏令时"
GMT_MINUS_10_A_STANDARD="夏威夷标准时间"
GMT_MINUS_09_A_DESC ="(GMT-09:00) 阿拉斯加"
GMT_MINUS_09_A_DAYLIGHT="阿拉斯加夏令时"
GMT_MINUS_09_A_STANDARD="阿拉斯加标准时间"
GMT_MINUS_08_A_DESC ="(GMT-08:00) 太平洋时间(美国和加拿大)"
GMT_MINUS_08_A_DAYLIGHT="太平洋夏令时"
GMT_MINUS_08_A_STANDARD="太平洋标准时间"
GMT_MINUS_07_A_DESC ="(GMT-07:00) 山地时间(美国和加拿大)"
GMT_MINUS_07_A_DAYLIGHT="山地夏令时"
GMT_MINUS_07_A_STANDARD="山地标准时间"
GMT_MINUS_07_B_DESC ="(GMT-07:00) 奇瓦瓦,拉巴斯,马萨特兰"
GMT_MINUS_07_B_DAYLIGHT="山地夏令时(墨西哥)"
GMT_MINUS_07_B_STANDARD="山地标准时间(墨西哥)"
GMT_MINUS_07_C_DESC ="(GMT-07:00) 亚利桑那"
GMT_MINUS_07_C_DAYLIGHT="美国山地夏令时"
GMT_MINUS_07_C_STANDARD="美国山地标准时间"
GMT_MINUS_06_A_DESC ="(GMT-06:00) 中部时间(美国和加拿大)"
GMT_MINUS_06_A_DAYLIGHT="中部夏令时"
GMT_MINUS_06_A_STANDARD="中部标准时间"
GMT_MINUS_06_B_DESC ="(GMT-06:00) 萨斯喀彻温"
GMT_MINUS_06_B_DAYLIGHT="加拿大中部夏令时"
GMT_MINUS_06_B_STANDARD="加拿大中部标准时间"
GMT_MINUS_06_C_DESC ="(GMT-06:00) 瓜达拉哈拉,墨西哥城,蒙特雷"
GMT_MINUS_06_C_DAYLIGHT="中部夏令时(墨西哥)"
GMT_MINUS_06_C_STANDARD="中部标准时间(墨西哥)"
GMT_MINUS_06_D_DESC ="(GMT-06:00) 中美洲"
GMT_MINUS_06_D_DAYLIGHT="中美洲夏令时"
GMT_MINUS_06_D_STANDARD="中美洲标准时间"
GMT_MINUS_05_A_DESC ="(GMT-05:00) 东部时间(美国和加拿大)"
GMT_MINUS_05_A_DAYLIGHT="东部夏令时"
GMT_MINUS_05_A_STANDARD="东部标准时间"
GMT_MINUS_05_B_DESC ="(GMT-05:00) 印第安纳州(东部)"
GMT_MINUS_05_B_DAYLIGHT="美国东部夏令时"
GMT_MINUS_05_B_STANDARD="美国东部标准时间"
GMT_MINUS_05_C_DESC ="(GMT-05:00) 波哥大,利马,基多,里奥布朗库"
GMT_MINUS_05_C_DAYLIGHT="南美洲太平洋夏令时"
GMT_MINUS_05_C_STANDARD="南美洲太平洋标准时间"
GMT_MINUS_04_A_DESC ="(GMT-04:00) 大西洋时间(加拿大)"
GMT_MINUS_04_A_DAYLIGHT="大西洋夏令时"
GMT_MINUS_04_A_STANDARD="大西洋标准时间"
GMT_MINUS_04_B_DESC ="(GMT-04:00) 加拉加斯,拉巴斯"
GMT_MINUS_04_B_DAYLIGHT="南美洲西部夏令时"
GMT_MINUS_04_B_STANDARD="南美洲西部标准时间"
GMT_MINUS_0330_A_DESC ="(GMT-03:30) 纽芬兰"
GMT_MINUS_0330_A_DAYLIGHT="纽芬兰夏令时"
GMT_MINUS_0330_A_STANDARD="纽芬兰标准时间"
GMT_MINUS_03_A_DESC ="(GMT-03:00) 圣地亚哥"
GMT_MINUS_03_A_DAYLIGHT="太平洋南美洲夏令时"
GMT_MINUS_03_A_STANDARD="太平洋南美洲标准时间"
GMT_MINUS_03_B_DESC ="(GMT-03:00) 巴西利亚"
GMT_MINUS_03_B_DAYLIGHT="东部南美洲夏令时"
GMT_MINUS_03_B_STANDARD="东部南美洲标准时间"
GMT_MINUS_03_C_DESC ="(GMT-03:00) 布宜诺斯艾利斯,乔治敦"
GMT_MINUS_03_C_DAYLIGHT="南美洲东部夏令时"
GMT_MINUS_03_C_STANDARD="南美洲东部标准时间"
GMT_MINUS_03_D_DESC ="(GMT-03:00) 格陵兰"
GMT_MINUS_03_D_DAYLIGHT="格陵兰夏令时"
GMT_MINUS_03_D_STANDARD="格陵兰标准时间"
GMT_MINUS_02_A_DESC ="(GMT-02:00) 中大西洋"
GMT_MINUS_02_A_DAYLIGHT="中大西洋夏令时"
GMT_MINUS_02_A_STANDARD="中大西洋标准时间"
GMT_MINUS_01_A_DESC ="(GMT-01:00) 亚速尔群岛"
GMT_MINUS_01_A_DAYLIGHT="亚速尔群岛夏令时"
GMT_MINUS_01_A_STANDARD="亚速尔群岛标准时间"
GMT_MINUS_01_B_DESC ="(GMT-01:00) 佛得角群岛"
GMT_MINUS_01_B_DAYLIGHT="佛得角群岛夏令时"
GMT_MINUS_01_B_STANDARD="佛得角群岛标准时间"
GMT_PLUS_00_A_DESC ="(GMT+00:00) 格林威治标准时间:都柏林,爱丁堡,里斯本,伦敦"
GMT_PLUS_00_A_DAYLIGHT="GMT 夏令时"
GMT_PLUS_00_A_STANDARD="GMT 标准时间"
GMT_PLUS_00_B_DESC ="(GMT+00:00) 卡萨布兰卡,蒙多维亚,雷克雅未克"
GMT_PLUS_00_B_DAYLIGHT="格林威治夏令时"
GMT_PLUS_00_B_STANDARD="格林威治标准时间"
GMT_PLUS_01_A_DESC ="(GMT+01:00) 贝尔格莱德,布拉迪斯拉发,布达佩斯,卢布尔雅那,布拉格"
GMT_PLUS_01_A_DAYLIGHT="中欧夏令时"
GMT_PLUS_01_A_STANDARD="中欧标准时间"
GMT_PLUS_01_B_DESC ="(GMT+01:00) 萨拉热窝,斯科普里,华沙,萨格勒布"
GMT_PLUS_01_B_DAYLIGHT="中欧的夏令时"
GMT_PLUS_01_B_STANDARD="中欧的标准时间"
GMT_PLUS_01_C_DESC ="(GMT+01:00) 布鲁塞尔,哥本哈根,马德里,巴黎"
GMT_PLUS_01_C_DAYLIGHT="罗马夏令时"
GMT_PLUS_01_C_STANDARD="罗马标准时间"
GMT_PLUS_01_D_DESC ="(GMT+01:00) 阿姆斯特丹,柏林,伯尔尼,罗马,斯德哥尔摩,维也纳"
GMT_PLUS_01_D_DAYLIGHT="西欧夏令时"
GMT_PLUS_01_D_STANDARD="西欧标准时间"
GMT_PLUS_02_A_DESC ="(GMT+02:00) 基希讷乌"
GMT_PLUS_02_A_DAYLIGHT="东欧夏令时"
GMT_PLUS_02_A_STANDARD="东欧标准时间"
GMT_PLUS_02_B_DESC ="(GMT+02:00) 开罗"
GMT_PLUS_02_B_DAYLIGHT="埃及夏令时"
GMT_PLUS_02_B_STANDARD="埃及标准时间"
GMT_PLUS_02_C_DESC ="(GMT+02:00) 赫尔辛基,基辅,里加,索菲亚,塔林,维尔纽斯"
GMT_PLUS_02_C_DAYLIGHT="FLE 夏令时"
GMT_PLUS_02_C_STANDARD="FLE 标准时间"
GMT_PLUS_02_D_DESC ="(GMT+02:00) 雅典,布加勒斯特"
GMT_PLUS_02_D_DAYLIGHT="GTB 夏令时"
GMT_PLUS_02_D_STANDARD="GTB 标准时间"
GMT_PLUS_02_E_DESC ="(GMT+02:00) 耶路撒冷"
GMT_PLUS_02_E_DAYLIGHT="耶路撒冷夏令时"
GMT_PLUS_02_E_STANDARD="耶路撒冷标准时间"
GMT_PLUS_02_F_DESC ="(GMT+02:00) 哈拉雷,比勒陀利亚"
GMT_PLUS_02_F_DAYLIGHT="南非夏令时"
GMT_PLUS_02_F_STANDARD="南非标准时间"
GMT_PLUS_02_G_DESC ="(GMT+02:00) 加里宁格勒"
GMT_PLUS_02_G_DAYLIGHT="RTZ 1 夏令时"
GMT_PLUS_02_G_STANDARD="RTZ 1 标准时间"
GMT_PLUS_03_A_DESC ="(GMT+03:00) 明斯克"
GMT_PLUS_03_A_DAYLIGHT="白俄罗斯夏令时"
GMT_PLUS_03_A_STANDARD="白俄罗斯标准时间"
GMT_PLUS_03_B_DESC ="(GMT+03:00) 莫斯科,圣彼得堡"
GMT_PLUS_03_B_DAYLIGHT="RTZ 2 夏令时"
GMT_PLUS_03_B_STANDARD="RTZ 2 标准时间"
GMT_PLUS_03_C_DESC ="(GMT+03:00) 科威特,利雅得"
GMT_PLUS_03_C_DAYLIGHT="阿拉伯Arab夏令时"
GMT_PLUS_03_C_STANDARD="阿拉伯Arab标准时间"
GMT_PLUS_03_D_DESC ="(GMT+03:00) 内罗毕"
GMT_PLUS_03_D_DAYLIGHT="东非夏令时"
GMT_PLUS_03_D_STANDARD="东非标准时间"
GMT_PLUS_03_E_DESC ="(GMT+03:00) 巴格达"
GMT_PLUS_03_E_DAYLIGHT="阿拉伯Arabic夏令时"
GMT_PLUS_03_E_STANDARD="阿拉伯Arabic标准时间"
GMT_PLUS_03_F_DESC ="(GMT+03:00) 伊斯坦布尔"
GMT_PLUS_03_F_DAYLIGHT="土耳其夏令时"
GMT_PLUS_03_F_STANDARD="土耳其标准时间"
GMT_PLUS_0330_A_DESC ="(GMT+03:30) 德黑兰"
GMT_PLUS_0330_A_DAYLIGHT="伊朗夏令时"
GMT_PLUS_0330_A_STANDARD="伊朗标准时间"
GMT_PLUS_04_A_DESC ="(GMT+04:00) 阿布扎比,马斯喀特"
GMT_PLUS_04_A_DAYLIGHT="阿拉伯半岛夏令时"
GMT_PLUS_04_A_STANDARD="阿拉伯半岛标准时间"
GMT_PLUS_04_B_DESC ="(GMT+04:00) 埃里温"
GMT_PLUS_04_B_DAYLIGHT="高加索夏令时"
GMT_PLUS_04_B_STANDARD="高加索标准时间"
GMT_PLUS_04_C_DESC ="(GMT+04:00) 伊热夫斯克,萨马拉,伏尔加格勒"
GMT_PLUS_04_C_DAYLIGHT="RTZ 3 夏令时"
GMT_PLUS_04_C_STANDARD="RTZ 3 标准时间"
GMT_PLUS_0430_A_DESC ="(GMT+04:30) 喀布尔"
GMT_PLUS_0430_A_DAYLIGHT="阿富汗夏令时"
GMT_PLUS_0430_A_STANDARD="阿富汗标准时间"
GMT_PLUS_05_A_DESC ="(GMT+05:00) 叶卡捷琳堡"
GMT_PLUS_05_A_DAYLIGHT="RTZ 4 夏令时"
GMT_PLUS_05_A_STANDARD="RTZ 4 标准时间"
GMT_PLUS_05_B_DESC ="(GMT+05:00) 伊斯兰堡,卡拉奇,塔什干"
GMT_PLUS_05_B_DAYLIGHT="西亚夏令时"
GMT_PLUS_05_B_STANDARD="西亚标准时间"
GMT_PLUS_0530_A_DESC ="(GMT+05:30) 钦奈,加尔各答,孟买,新德里"
GMT_PLUS_0530_A_DAYLIGHT="印度夏令时"
GMT_PLUS_0530_A_STANDARD="印度标准时间"
GMT_PLUS_0530_B_DESC ="(GMT+05:30) 斯里贾亚瓦德纳普拉"
GMT_PLUS_0530_B_DAYLIGHT="斯里兰卡夏令时"
GMT_PLUS_0530_B_STANDARD="斯里兰卡标准时间"
GMT_PLUS_0545_A_DESC ="(GMT+05:45) 加德满都"
GMT_PLUS_0545_A_DAYLIGHT="尼泊尔夏令时"
GMT_PLUS_0545_A_STANDARD="尼泊尔标准时间"
GMT_PLUS_06_A_DESC ="(GMT+06:00) 阿斯塔纳,达卡"
GMT_PLUS_06_A_DAYLIGHT="中亚夏令时"
GMT_PLUS_06_A_STANDARD="中亚标准时间"
GMT_PLUS_06_B_DESC ="(GMT+06:00) 鄂木斯克"
GMT_PLUS_06_B_DAYLIGHT="鄂木斯克夏令时"
GMT_PLUS_06_B_STANDARD="鄂木斯克标准时间"
GMT_PLUS_0630_A_DESC ="(GMT+06:30) 仰光"
GMT_PLUS_0630_A_DAYLIGHT="缅甸夏令时"
GMT_PLUS_0630_A_STANDARD="缅甸标准时间"
GMT_PLUS_07_A_DESC ="(GMT+07:00) 新西伯利亚"
GMT_PLUS_07_A_DAYLIGHT="新西伯利亚夏令时"
GMT_PLUS_07_A_STANDARD="新西伯利亚标准时间"
GMT_PLUS_07_B_DESC ="(GMT+07:00) 曼谷,河内,雅加达"
GMT_PLUS_07_B_DAYLIGHT="东南亚夏令时"
GMT_PLUS_07_B_STANDARD="东南亚标准时间"
GMT_PLUS_07_C_DESC ="(GMT+07:00) 克拉斯诺亚尔斯克"
GMT_PLUS_07_C_DAYLIGHT="RTZ 6 夏令时"
GMT_PLUS_07_C_STANDARD="RTZ 6 标准时间"
GMT_PLUS_07_D_DESC ="(GMT+07:00) 托木斯克"
GMT_PLUS_07_D_DAYLIGHT="托木斯克夏令时"
GMT_PLUS_07_D_STANDARD="托木斯克标准时间"
GMT_PLUS_08_A_DESC ="(GMT+08:00) 北京,重庆,香港特别行政区,乌鲁木齐"
GMT_PLUS_08_A_DAYLIGHT="中国夏令时"
GMT_PLUS_08_A_STANDARD="中国标准时间"
GMT_PLUS_08_B_DESC ="(GMT+08:00) 吉隆坡,新加坡"
GMT_PLUS_08_B_DAYLIGHT="新加坡夏令时"
GMT_PLUS_08_B_STANDARD="新加坡标准时间"
GMT_PLUS_08_C_DESC ="(GMT+08:00) 台北"
GMT_PLUS_08_C_DAYLIGHT="台北夏令时"
GMT_PLUS_08_C_STANDARD="台北标准时间"
GMT_PLUS_08_D_DESC ="(GMT+08:00) 珀斯"
GMT_PLUS_08_D_DAYLIGHT="澳大利亚西部夏令时"
GMT_PLUS_08_D_STANDARD="澳大利亚西部标准时间"
GMT_PLUS_08_E_DESC ="(GMT+08:00) 乌兰巴托"
GMT_PLUS_08_E_DAYLIGHT="乌兰巴托夏令时"
GMT_PLUS_08_E_STANDARD="乌兰巴托标准时间"
GMT_PLUS_08_F_DESC ="(GMT+08:00) 伊尔库茨克"
GMT_PLUS_08_F_DAYLIGHT="RTZ 7 夏令时"
GMT_PLUS_08_F_STANDARD="RTZ 7 标准时间"
GMT_PLUS_09_A_DESC ="(GMT+09:00) 首尔"
GMT_PLUS_09_A_DAYLIGHT="韩国夏令时"
GMT_PLUS_09_A_STANDARD="韩国标准时间"
GMT_PLUS_09_B_DESC ="(GMT+09:00) 大阪,札幌,东京"
GMT_PLUS_09_B_DAYLIGHT="东京夏令时"
GMT_PLUS_09_B_STANDARD="东京标准时间"
GMT_PLUS_09_C_DESC ="(GMT+09:00) 雅库茨克"
GMT_PLUS_09_C_DAYLIGHT="RTZ 8 夏令时"
GMT_PLUS_09_C_STANDARD="RTZ 8 标准时间"
GMT_PLUS_0930_A_DESC ="(GMT+09:30) 达尔文"
GMT_PLUS_0903_A_DAYLIGHT="澳大利亚中部夏令时"
GMT_PLUS_0930_A_STANDARD="澳大利亚中部标准时间"
GMT_PLUS_0930_B_DESC ="(GMT+09:30) 阿德莱德"
GMT_PLUS_0930_B_DAYLIGHT="中部澳大利亚夏令时"
GMT_PLUS_0930_B_STANDARD="中部澳大利亚标准时间"
GMT_PLUS_10_A_DESC ="(GMT+10:00) 堪培拉,墨尔本,悉尼"
GMT_PLUS_10_A_DAYLIGHT="澳大利亚东部夏令时"
GMT_PLUS_10_A_STANDARD="澳大利亚东部标准时间"
GMT_PLUS_10_B_DESC ="(GMT+10:00) 布里斯班"
GMT_PLUS_10_B_DAYLIGHT="东部澳大利亚夏令时"
GMT_PLUS_10_B_STANDARD="东部澳大利亚标准时间"
GMT_PLUS_10_C_DESC ="(GMT+10:00) 霍巴特"
GMT_PLUS_10_C_DAYLIGHT="塔斯马尼亚岛夏令时"
GMT_PLUS_10_C_STANDARD="塔斯马尼亚岛标准时间"
GMT_PLUS_10_D_DESC ="(GMT+10:00) 符拉迪沃斯托克(海参崴)"
GMT_PLUS_10_D_DAYLIGHT="RTZ 9 夏令时"
GMT_PLUS_10_D_STANDARD="RTZ 9 标准时间"
GMT_PLUS_10_E_DESC ="(GMT+10:00) 关岛,莫尔兹比港"
GMT_PLUS_10_E_DAYLIGHT="太平洋西部夏令时"
GMT_PLUS_10_E_STANDARD="太平洋西部标准时间"
GMT_PLUS_11_A_DESC ="(GMT+11:00) 所罗门群岛,新喀里多尼亚"
GMT_PLUS_11_A_DAYLIGHT="太平洋中部夏令时"
GMT_PLUS_11_A_STANDARD="太平洋中部标准时间"
GMT_PLUS_11_B_DESC ="(GMT+11:00) 乔库尔达赫"
GMT_PLUS_11_B_DAYLIGHT="RTZ 10 夏令时"
GMT_PLUS_11_B_STANDARD="RTZ 10 标准时间"
GMT_PLUS_11_C_DESC ="(GMT+11:00) 马加丹"
GMT_PLUS_11_C_DAYLIGHT="马加丹夏令时"
GMT_PLUS_11_C_STANDARD="马加丹标准时间"
GMT_PLUS_12_A_DESC ="(GMT+12:00) 斐济,勘察加半岛,马绍尔群岛"
GMT_PLUS_12_A_DAYLIGHT="斐济夏令时"
GMT_PLUS_12_A_STANDARD="斐济标准时间"
GMT_PLUS_12_B_DESC ="(GMT+12:00) 阿纳德尔,堪察加彼得罗巴甫洛夫斯克"
GMT_PLUS_12_B_DAYLIGHT="RTZ 11 夏令时"
GMT_PLUS_12_B_STANDARD="RTZ 11 标准时间"
GMT_PLUS_12_C_DESC ="(GMT+12:00) 奥克兰,惠灵顿"
GMT_PLUS_12_C_DAYLIGHT="新西兰夏令时"
GMT_PLUS_12_C_STANDARD="新西兰标准时间"
GMT_PLUS_13_A_DESC ="(GMT+13:00) 努库阿洛法"
GMT_PLUS_13_A_DAYLIGHT="汤加夏令时"
GMT_PLUS_13_A_STANDARD="汤加标准时间"
; LANG_PORTUGUESE SUBLANG_NEUTRAL
[Strings.0816]
COUNTRY_AD="Andorra"

View File

@@ -1,4 +1,11 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
/*
* PROJECT: ReactOS Accessibility Control Panel
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2019-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
IDD_PROPPAGEKEYBOARD DIALOGEX 0, 0, 246, 220
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
@@ -6,21 +13,21 @@ CAPTION "Teclado"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Teclas presas", -1, 6, 11, 234, 57
LTEXT "Utilize as ""Teclas presas"" se deseja utilizar SHIFT, CTRL, ALT pressionando uma tecla de cada vez.",
LTEXT "Utilize as ""Teclas presas"" se deseja utilizar SHIFT, CTRL, ou ALT pressionando uma tecla de cada vez.",
-1, 12, 20, 222, 29
AUTOCHECKBOX "&Utilizar ""Teclas presas""", IDC_STICKY_BOX, 12, 49, 126, 14
AUTOCHECKBOX "Utilizar ""Teclas &presas""", IDC_STICKY_BOX, 12, 49, 126, 14
PUSHBUTTON "&Definições", IDC_STICKY_BUTTON, 144, 49, 90, 14
GROUPBOX "Teclas lentas", -1, 6, 79, 234, 62
LTEXT "Utilize as ""Teclas lentas"" para que o ReactOS ignore os batimentos breves ou repetidos de teclas ou diminua a taxa de repetição.",
-1, 12, 89, 222, 29
AUTOCHECKBOX "Utilizar as ""Teclas lentas""", IDC_FILTER_BOX, 12, 121, 126, 14
AUTOCHECKBOX "Utilizar ""Teclas &lentas""", IDC_FILTER_BOX, 12, 121, 126, 14
PUSHBUTTON "D&efinições", IDC_FILTER_BUTTON, 144, 121, 90, 14
GROUPBOX "Teclas sonoras", -1, 6, 148, 234, 55
LTEXT "Utilize ""Teclas sonoras"" para ouvir sinais quando pressionar CAPS LOCK, NUM LOCK e SCROLL LOCK.",
LTEXT "Utilize as ""Teclas sonoras"" para ouvir sinais quando pressionar CAPS LOCK, NUM LOCK ou SCROLL LOCK.",
-1, 12, 161, 222, 20
AUTOCHECKBOX "Utilizar ""Teclas sonoras""", IDC_TOGGLE_BOX, 12, 184, 126, 14
AUTOCHECKBOX "Utilizar ""Teclas &sonoras""", IDC_TOGGLE_BOX, 12, 184, 126, 14
PUSHBUTTON "De&finições", IDC_TOGGLE_BUTTON, 144, 184, 90, 14
AUTOCHECKBOX "Fornecer a&juda adicional do teclado nos programas", IDC_KEYBOARD_EXTRA,
AUTOCHECKBOX "&Mostrar ajuda adicional do teclado nos programas", IDC_KEYBOARD_EXTRA,
6, 207, 234, 14
END
@@ -32,14 +39,14 @@ BEGIN
GROUPBOX "Sons visuais", -1, 6, 11, 234, 98
LTEXT "Utilize ""Sons visuais"" se pretender que o ReactOS crie avisos visuais quando o sistema emitir um som.",
-1, 12, 20, 222, 29
AUTOCHECKBOX "&Utilizar ""Sons visuais""", IDC_SENTRY_BOX, 12, 49, 90, 14
AUTOCHECKBOX "Utilizar ""&Sons visuais""", IDC_SENTRY_BOX, 12, 49, 90, 14
LTEXT "Escolha o aviso visual:", IDC_SENTRY_TEXT, 12, 72, 222, 11
COMBOBOX IDC_SENTRY_COMBO, 12, 83, 222, 56,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_TABSTOP
GROUPBOX "Legendas para sons", -1, 6, 115, 234, 67
LTEXT "Utilize este recurso para que os programas mostrem legendas da fala e dos sons emitidos.",
LTEXT "Utilize ""Sons visuais"" para que os programas mostrem legendas da fala e dos sons emitidos.",
-1, 12, 125, 222, 29
AUTOCHECKBOX "&Utilizar ""Legendas para sons""", IDC_SSHOW_BOX, 12, 148, 222, 14
AUTOCHECKBOX "Utilizar ""&Legendas para sons""", IDC_SSHOW_BOX, 12, 148, 222, 14
END
IDD_PROPPAGEDISPLAY DIALOGEX 0, 0, 246, 220
@@ -48,7 +55,7 @@ CAPTION "Visualização"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Alto contraste", -1, 6, 11, 234, 62
LTEXT "Use esta opção para que o ReactOS utilize cores e tipos de letra concebidos para uma leitura fácil.",
LTEXT "Utilize esta opção se pretender que o ReactOS utilize cores e tipos de letra concebidos para uma leitura fácil.",
-1, 12, 20, 222, 29
AUTOCHECKBOX "&Utilizar ""Alto contraste""", IDC_CONTRAST_BOX, 12, 49, 126, 14
PUSHBUTTON "&Definições", IDC_CONTRAST_BUTTON, 144, 49, 90, 14
@@ -60,7 +67,7 @@ BEGIN
LTEXT "Rápida", -1, 192, 130, 36, 11
CONTROL "", IDC_CURSOR_BLINK_TRACK, "msctls_trackbar32", TBS_AUTOTICKS | WS_TABSTOP,
60, 124, 126, 20
CTEXT "La&rgura:", -1, 12, 151, 222, 11
CTEXT "&Largura:", -1, 12, 151, 222, 11
LTEXT "Estreita", -1, 18, 171, 36, 11
LTEXT "Larga", -1, 192, 171, 36, 11
CONTROL "", IDC_CURSOR_WIDTH_TRACK, "msctls_trackbar32", TBS_AUTOTICKS | WS_TABSTOP,
@@ -74,9 +81,9 @@ CAPTION "Rato"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Rato por teclado", -1, 6, 11, 234, 62
LTEXT "Use ""Rato por teclado"" para controlar o ponteiro com o teclado numérico.",
LTEXT "Utilize ""Rato por teclado"" para controlar o ponteiro com o teclado numérico.",
-1, 12, 20, 222, 29
AUTOCHECKBOX "Utilizar ""Rato por teclado""", IDC_MOUSE_BOX, 12, 49, 126, 14
AUTOCHECKBOX "Utilizar ""&Rato por teclado""", IDC_MOUSE_BOX, 12, 49, 126, 14
PUSHBUTTON "&Definições", IDC_MOUSE_BUTTON, 144, 49, 90, 14
END
@@ -86,24 +93,24 @@ CAPTION "Geral"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Repor automáticamente", -1, 6, 11, 234, 47
AUTOCHECKBOX "&Desactivar recursos de acessibilidade se inactivas durante:",
AUTOCHECKBOX "Desacti&var recursos de acessibilidade se inactivas durante:",
IDC_RESET_BOX, 12, 18, 222, 14
COMBOBOX IDC_RESET_COMBO, 24, 38, 60, 47,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_TABSTOP
GROUPBOX "Notificação", -1, 6, 63, 234, 47
AUTOCHECKBOX "&Emitir uma mensagem de aviso ao activar um recurso", IDC_NOTIFICATION_MESSAGE,
AUTOCHECKBOX "&Mostrar uma mensagem de aviso ao activar um recurso", IDC_NOTIFICATION_MESSAGE,
12, 72, 222, 14
AUTOCHECKBOX "Emitir um &som ao activar ou desactivar um recurso", IDC_NOTIFICATION_SOUND,
12, 90, 222, 14
GROUPBOX "Dispositivos ""Teclas série""", -1, 6, 115, 234, 47
LTEXT "Os dispositivos ""Teclas série"" permitem o acesso alternativo aos recursos do teclado e do rato.",
-1, 12, 124, 222, 20
AUTOCHECKBOX "&Utilizar as ""Teclas série""", IDC_SERIAL_BOX, 12, 142, 126, 14
AUTOCHECKBOX "Utilizar ""&Teclas série""", IDC_SERIAL_BOX, 12, 142, 126, 14
PUSHBUTTON "&Definições", IDC_SERIAL_BUTTON, 144, 142, 90, 14
GROUPBOX "Opções administrativas", -1, 6, 169, 234, 47
AUTOCHECKBOX "&Aplicar todas as definições ao ambiente de trabalho do início de sessão", IDC_ADMIN_LOGON_BOX,
AUTOCHECKBOX "&Aplicar as definições ao ambiente de trabalho do início de sessão", IDC_ADMIN_LOGON_BOX,
12, 178, 222, 14
AUTOCHECKBOX "Aplicar &todas as predefinições para novos utilizadores", IDC_ADMIN_USERS_BOX,
AUTOCHECKBOX "Ap&licar as predefinições para novos utilizadores", IDC_ADMIN_USERS_BOX,
12, 196, 222, 14
END
@@ -124,7 +131,7 @@ BEGIN
GROUPBOX "Notificação", -1, 6, 133, 234, 44
AUTOCHECKBOX "&Emitir sons quando a tecla modificadora for pressionada", IDC_STICKY_SOUND_CHECK,
12, 148, 222, 14
AUTOCHECKBOX "Mostrar no ecrã o &estado de ""Teclas de presas""", IDC_STICKY_STATUS_CHECK,
AUTOCHECKBOX "&Mostrar no ecrã o estado de ""Teclas de presas""", IDC_STICKY_STATUS_CHECK,
12, 160, 222, 14
DEFPUSHBUTTON "OK", IDOK, 135, 207, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 189, 207, 50, 14
@@ -146,7 +153,7 @@ BEGIN
12, 106, 152, 20, BS_TOP | BS_MULTILINE
PUSHBUTTON "&Definições", IDC_FILTER_BOUNCE_BUTTON, 168, 88, 66, 14, WS_GROUP
PUSHBUTTON "De&finições", IDC_FILTER_REPEAT_BUTTON, 168, 106, 66, 14, WS_GROUP
LTEXT "C&lique e digite para testar as definições de ""Teclas lentas"":", -1, 12, 129, 222, 11
LTEXT "&Clique e digite para testar as definições de ""Teclas lentas"":", -1, 12, 129, 222, 11
EDITTEXT IDC_FILTER_TEST_EDIT, 12, 138, 222, 14, WS_GROUP | ES_AUTOHSCROLL
GROUPBOX "Notificação", -1, 6, 161, 234, 41
AUTOCHECKBOX "&Emitir alarme sonoro quando as teclas são premidas ou aceites", IDC_FILTER_SOUND_CHECK,
@@ -282,7 +289,7 @@ STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Acessibilidade"
IDS_CPLSYSTEMDESCRIPTION "Ajustar as definições do computador para visão, audição e mobilidade."
IDS_SENTRY_NONE "[Nenhuma]"
IDS_SENTRY_NONE "[Nenhum]"
IDS_SENTRY_TITLE "Piscar a barra de legenda activa"
IDS_SENTRY_WINDOW "Piscar a janela activa"
IDS_SENTRY_DISPLAY "Piscar a área de trabalho"

View File

@@ -1,4 +1,10 @@
/* Translation and UTF-8 Conversion by mkbu95 <mkbu95@gmail.com> (May, 2012) */
/*
* PROJECT: ReactOS Software Control Panel
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATORS: Copyright 2012 Matheus Macabu <mkbu95@gmail.com>
* Copyright 2019-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
@@ -26,7 +32,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Criar Atalho"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Este assitente irá ajudá-lo a criar atalhos para\nprogramas, arquivos, pastas, computadores ou endereços\nde Internet, ambos locais ou de rede.", -1, 120, 15, 200, 30
LTEXT "Este assitente irá ajudá-lo a criar atalhos para\nprogramas, ficheiros, pastas, computadores ou endereços\nde Internet, ambos locais ou de rede.", -1, 120, 15, 200, 30
LTEXT "Digite a localização do item:", -1, 120, 50, 120, 10
EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL
PUSHBUTTON "Procurar...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT
@@ -88,5 +94,5 @@ BEGIN
IDS_NO_DIRECTORY "Sem directoria!"
IDS_INVALID_PATH "O caminho é invalido!"
IDS_INVALID_NAME "O nome do atalho contém caracteres inválidos para nomes de ficheiro ou é muito longo."
IDS_BROWSE_FOR_TARGET "Please select the target of the shortcut below:"
IDS_BROWSE_FOR_TARGET "Por favor seleccione o destino do atalho abaixo:"
END

View File

@@ -55,7 +55,7 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS
CAPTION "删除快捷方式/文件夹"
FONT 9, "宋体"
BEGIN
LTEXT "从开始菜单中删除项目,选择项目并单击删除。(&T)", -1, 10, 10, 192, 16
LTEXT "从开始菜单中删除项目,选择项目并单击删除。(&T)", -1, 10, 10, 192, 16
CONTROL "List1", IDC_STARTMENU_TREE, "SysListView32", LVS_REPORT | LVS_SHOWSELALWAYS |
LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP, 10, 32, 192, 138
PUSHBUTTON "删除(&R)", IDC_REMOVE_ENTRIES, 98, 176, 50, 14, WS_GROUP | WS_TABSTOP

View File

@@ -1,3 +1,10 @@
/*
* PROJECT: ReactOS Console Configuration DLL
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2019 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 253, 220

View File

@@ -39,7 +39,7 @@ RegisterWinPrevClass(
WndClass.style = 0;
WndClass.hInstance = hInstance;
WndClass.hIcon = NULL;
WndClass.hCursor = LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_ARROW));
WndClass.hCursor = LoadCursorW(NULL, IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)(COLOR_BACKGROUND + 1);
WndClass.lpszMenuName = NULL;
WndClass.cbClsExtra = 0;

View File

@@ -1,7 +1,8 @@
/* Portuguese Language resource file
*
* Traduzido por: Jose Carlos Jesus 03-08-2019 zecarlos1957@hotmail.com
/*
* PROJECT: ReactOS Add hardware control panel
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2019 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

View File

@@ -1,3 +1,10 @@
/*
* PROJECT: Safely Remove Hardware Applet
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2020-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
IDD_SAFE_REMOVE_HARDWARE_DIALOG DIALOGEX 0, 0, 278, 245
@@ -6,7 +13,7 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS
FONT 8, "MS Shell Dlg"
BEGIN
ICON IDI_HOTPLUG, IDC_SAFE_REMOVE_ICON, 7, 10, 20, 20
LTEXT "Seleccione o dispositivo que quer desligar ou ejectar e em seguida clique em ""Parar"". Quando o ReactOS o avisar que o pode fazer, desligue o dispositivo do seu computador.", IDC_STATIC, 36, 10, 234, 24, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "Seleccione o dispositivo que quer desligar ou ejectar e em seguida clique em ""Parar"". Quando o ReactOS o avisar que o pode fazer, remova o dispositivo do seu computador.", IDC_STATIC, 36, 10, 234, 24, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "Dispositivos de &hardware:", IDC_STATIC, 7, 42, 248, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
CONTROL "", IDC_SAFE_REMOVE_DEVICE_TREE, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP, 7, 52, 264, 102
LTEXT "", IDC_SAFE_REMOVE_TEXT, 7, 156, 264, 16, WS_CHILD | WS_VISIBLE | WS_GROUP
@@ -18,15 +25,15 @@ BEGIN
END
IDD_CONFIRM_STOP_HARDWARE_DIALOG DIALOGEX 32, 10, 256, 148
CAPTION "Stop a Hardware Device"
CAPTION "Desligar dispositivo de Hardware"
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Confirm devices to be stopped, choose OK to continue.", IDC_STATIC, 7, 8, 241, 14, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "ReactOS will attempt to stop the following devices. After the devices are stopped they may be removed safely.", IDC_STATIC, 7, 22, 240, 18, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "Confirme os dispositivos a serem desligados e escolha OK para continuar.", IDC_STATIC, 7, 8, 241, 14, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "O ReactOS tentará desligar os seguintes dispositivos. Depois que os dispositivos forem desligados, poderão ser removidos com segurança.", IDC_STATIC, 7, 22, 240, 18, WS_CHILD | WS_VISIBLE | WS_GROUP
CONTROL "", IDC_CONFIRM_STOP_DEVICE_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP, 8, 45, 240, 78
DEFPUSHBUTTON "OK", IDOK, 144, 127, 50, 14
PUSHBUTTON "Cancel", IDCANCEL, 198, 127, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 198, 127, 50, 14
END
@@ -47,7 +54,7 @@ END
STRINGTABLE
BEGIN
IDS_CPLNAME "Remover Hardware com segurança"
IDS_CPLDESCRIPTION "Safely unplug or eject devices from your computer."
IDS_UNKNOWN_DEVICE "Unknown Device"
IDS_EJECT_ERROR_FORMAT "Failed to remove device (0x%x)\0"
IDS_CPLDESCRIPTION "Desligar ou ejectar dispositivos do seu computador com segurança."
IDS_UNKNOWN_DEVICE "Dispositivo desconhecido"
IDS_EJECT_ERROR_FORMAT "Falha ao remover o dispositivo (0x%x)\0"
END

View File

@@ -2,6 +2,7 @@
* Portuguese resources for the Internet control panel applet
*
* Copyright 2010 Gustavo Henrique Milaré
* Copyright 2024 Jose Carlos Jesus
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -76,7 +77,7 @@ BEGIN
IDC_DELETE_HISTORY, 10, 88, 230, 40, BS_TOP | BS_MULTILINE
AUTOCHECKBOX "Dados de formulário\nNomes de utilizador e outras informações que inseriu nos formulários.",
IDC_DELETE_FORM_DATA, 10, 128, 230, 40, BS_TOP | BS_MULTILINE
AUTOCHECKBOX "Passwords\n Passwords que inseriu em formulários",
AUTOCHECKBOX "Palavras-passe\nPalavras-passe que inseriu em formulários",
IDC_DELETE_PASSWORDS, 10, 168, 230, 40, BS_TOP | BS_MULTILINE
DEFPUSHBUTTON "Cancelar", IDCANCEL, 185, 230, 60, 15, WS_GROUP
PUSHBUTTON "Apagar", IDOK, 120, 230, 60, 15

View File

@@ -1,4 +1,11 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
/*
* PROJECT: ReactOS Language Control Panel
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2020-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
IDD_PROPPAGESETTINGS DIALOGEX 0, 0, 254, 228
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION

View File

@@ -7,17 +7,17 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "设置"
FONT 9, "宋体"
BEGIN
GROUPBOX "Default input &language", -1, 5, 5, 246, 55
LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23
GROUPBOX "默认输入语言(&L)", -1, 5, 5, 246, 55
LTEXT "选择计算机启动时要使用的一个已安装的输入语言。", -1, 15, 15, 230, 23
COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
GROUPBOX "&Installed services", -1, 5, 65, 246, 125
GROUPBOX "已安装的服务(&I)", -1, 5, 65, 246, 125
LTEXT "为列表中显示的每个输入语言选择服务。使用“添加”和“删除”按钮来修改这个列表。", -1, 15, 78, 230, 25
CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80
PUSHBUTTON "添加(&D)...", IDC_ADD_BUTTON, 175, 105, 70, 14
PUSHBUTTON "删除(&R)", IDC_REMOVE_BUTTON, 175, 125, 70, 14
PUSHBUTTON "属性(&P)...", IDC_PROP_BUTTON, 175, 145, 70, 14
GROUPBOX "首选项", -1, 5, 195, 245, 30
PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14
PUSHBUTTON "语言栏(&B)...", IDC_LANGUAGE_BAR, 15, 205, 110, 14
PUSHBUTTON "键设置(&K)...", IDC_KEY_SET_BTN, 133, 205, 110, 14
END

View File

@@ -1,3 +1,10 @@
/*
* PROJECT: ReactOS Control Panel for Game Controllers
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2019-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
IDD_PROPPAGEMAIN DIALOGEX 0, 0, 252, 205
@@ -8,14 +15,14 @@ FONT 8, "MS Shell Dlg"
BEGIN
ICON IDI_CPLSYSTEM, -1, 7, 7, 20, 20
LTEXT "Estas configurações ajudam-no a configurar os controladores de jogos instalados no computador.", -1, 33, 7, 214, 20, NOT WS_GROUP
GROUPBOX "Controladores de jogos instalados", -1, 7, 34, 238, 117
GROUPBOX "&Controladores de jogos instalados", -1, 7, 34, 238, 117
CONTROL "List1", IDC_CONTROLLER_LIST, "SysListView32", WS_BORDER | WS_GROUP | WS_TABSTOP | 0x0000808D, 14, 44, 224, 80
PUSHBUTTON "&Adicionar...", IDC_ADD_BUTTON, 35, 129, 65, 14
PUSHBUTTON "&Remover", IDC_REMOVE_BUTTON, 104, 129, 65, 14, WS_DISABLED
PUSHBUTTON "&Propriedades", IDC_PROPERTIES_BUTTON, 173, 129, 65, 14, WS_DISABLED
PUSHBUTTON "A&vançadas...", IDC_ADVANCED_BUTTON, 80, 157, 65, 14
PUSHBUTTON "Reso&lução de problemas...", IDC_TROUBLESHOOT_BUTTON, 150, 157, 95, 14
PUSHBUTTON "&OK", IDOK, 195, 185, 50, 14
PUSHBUTTON "OK", IDOK, 195, 185, 50, 14
END
IDD_ADD DIALOGEX 0, 0, 265, 200
@@ -26,15 +33,15 @@ FONT 8, "MS Shell Dlg"
BEGIN
ICON IDI_CPLSYSTEM, -1, 8, 7, 20, 20
LTEXT "Seleccione um controlador de jogos na lista abaixo e em seguida clique em ""OK"". Se o controlador não aparecer na lista, clique em ""Personalizar"".", -1, 35, 7, 210, 33
LTEXT "Controladores de jogos:", -1, 8, 45, 126, 8
LTEXT "&Controladores de jogos:", -1, 8, 45, 126, 8
LISTBOX IDC_GAME_CONTROLLERS_LIST, 7, 55, 251, 57, LBS_STANDARD | LBS_NOINTEGRALHEIGHT | LBS_WANTKEYBOARDINPUT | WS_HSCROLL | WS_TABSTOP
AUTOCHECKBOX "&Activar lemes de direcção e pedais", IDC_ENABLE_RUDDERS_CHECKBOX, 7, 114, 130, 10, WS_GROUP
LTEXT "Porta de jogos:", -1, 7, 134, 38, 8, NOT WS_VISIBLE
COMBOBOX IDC_GAME_PORT_COMBO, 7, 147, 140, 50, CBS_DROPDOWNLIST | CBS_SORT | NOT WS_VISIBLE | WS_VSCROLL
PUSHBUTTON "&Personalizar...", IDC_CUSTOM_BUTTON, 208, 147, 50, 14
CONTROL "", -25525, "STATIC", SS_ETCHEDHORZ, 7, 170, 251, 1
DEFPUSHBUTTON "&OK", IDOK, 155, 179, 50, 14
PUSHBUTTON "&Cancelar", IDCANCEL, 208, 179, 50, 14
DEFPUSHBUTTON "OK", IDOK, 155, 179, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 208, 179, 50, 14
END
IDD_CUSTOM DIALOGEX 0, 0, 265, 183, 0
@@ -46,19 +53,19 @@ BEGIN
GROUPBOX "Características especiais", -1, 7, 7, 245, 52
AUTORADIOBUTTON "&Joystick", IDC_JOYSTICK_RADIO, 17, 23, 55, 10
AUTORADIOBUTTON "&Manche ou punho", IDC_FLIGHT_YOKE_RADIO, 130, 23, 89, 10
AUTORADIOBUTTON "Consola de j&ogos", IDC_GAME_PAD_RADIO, 17, 40, 65, 10
AUTORADIOBUTTON "&Consola de jogos", IDC_GAME_PAD_RADIO, 17, 40, 65, 10
AUTORADIOBUTTON "Contro&lador de carro de corrida", IDC_RACE_CAR_RADIO, 130, 40, 115, 10
GROUPBOX "Eixos", -1, 7, 67, 116, 44, WS_GROUP
GROUPBOX "&Eixos", -1, 7, 67, 116, 44, WS_GROUP
COMBOBOX IDC_AXES_COMBO, 37, 79, 48, 50, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
AUTORADIOBUTTON "Leme/pedais", IDC_RUDDER_PEDALS_RADIO, 14, 97, 63, 10, NOT WS_VISIBLE
AUTORADIOBUTTON "Eixo Z", IDC_Z_AXIS_RADIO, 81, 97, 35, 10, NOT WS_VISIBLE
GROUPBOX "Butões", -1, 137, 67, 116, 44
GROUPBOX "&Botões", -1, 137, 67, 116, 44
COMBOBOX IDC_BUTTONS_COMBO, 178, 79, 48, 50, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL, WS_EX_CLIENTEDGE
AUTOCHECKBOX "Inclui um controle de ponto de &mira", IDC_INC_POINT_CHECKBOX, 7, 123, 125, 10
LTEXT "Nome do controlador:", -1, 7, 139, 200, 9
AUTOCHECKBOX "Inclui um controle de &ponto de mira", IDC_INC_POINT_CHECKBOX, 7, 123, 125, 10
LTEXT "&Nome do controlador:", -1, 7, 139, 200, 9
EDITTEXT IDC_CONTROLLER_NAME_EDIT, 7, 150, 116, 15, ES_AUTOHSCROLL, WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
DEFPUSHBUTTON "&OK", IDOK, 137, 150, 50, 14
PUSHBUTTON "&Cancelar", IDCANCEL, 203, 150, 50, 14
DEFPUSHBUTTON "OK", IDOK, 137, 150, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 203, 150, 50, 14
END
IDD_ADVANCED DIALOGEX 0, 0, 240, 86
@@ -68,10 +75,10 @@ CAPTION "Definições avançadas"
FONT 8, "MS Shell Dlg"
BEGIN
ICON IDI_CPLSYSTEM, -1, 7, 24, 20, 20
DEFPUSHBUTTON "&OK", IDOK, 106, 65, 50, 14
PUSHBUTTON "&Cancelar", IDCANCEL, 163, 65, 50, 14
LTEXT "Seleccione o dispositivo que deseja usar com programas mais antigos.", -1, 7, 7, 228, 10
LTEXT "Dispositivo perferido:", -1, 34, 24, 70, 10
DEFPUSHBUTTON "OK", IDOK, 106, 65, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 163, 65, 50, 14
LTEXT "Seleccione o dispositivo que pretende utilizar com programas mais antigos.", -1, 7, 7, 228, 10
LTEXT "&Dispositivo perferencial:", -1, 34, 24, 70, 10
COMBOBOX IDC_PREFERRED_DEV_COMBO, 34, 38, 179, 75, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
END
@@ -81,5 +88,5 @@ BEGIN
IDS_CPLSYSTEMDESCRIPTION "Adicionar, remover e configurar o hardware controlador de jogos, tais como joysticks e consolas de jogos."
IDS_CONTROLLER "Controlador"
IDS_STATUS "Status"
IDS_NONE "(None)"
IDS_NONE "(Nenhum)"
END

View File

@@ -277,7 +277,7 @@ BEGIN
5848 "系统通知"
5849 "问题"
5850 "启动 ReactOS"
5851 "开始菜单"
5851 "开始菜单"
IDS_REACTOS_LOGOFF "ReactOS 注销"
IDS_REACTOS_LOGON "ReactOS 登录"
5854 "ReactOS 资源管理器"

View File

@@ -6,5 +6,5 @@ add_library(ncpa MODULE
${CMAKE_CURRENT_BINARY_DIR}/ncpa.def)
set_module_type(ncpa cpl UNICODE)
add_importlibs(ncpa advapi32 shell32 msvcrt kernel32)
add_importlibs(ncpa user32 advapi32 shell32 msvcrt kernel32)
add_cd_file(TARGET ncpa DESTINATION reactos/system32 FOR all)

View File

@@ -20,7 +20,10 @@ DisplayApplet(VOID)
{
WCHAR szParameters[] = L"/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}";
return (INT_PTR) ShellExecuteW(NULL, L"open", L"explorer.exe", szParameters, NULL, SW_SHOWDEFAULT) > 32;
/* NOTE: If Explorer shell is not available, use ReactOS's alternative file browser instead */
return (INT_PTR) ShellExecuteW(NULL, L"open",
GetShellWindow() ? L"explorer.exe" : L"filebrowser.exe",
szParameters, NULL, SW_SHOWDEFAULT) > 32;
}
/* Control Panel Callback */

View File

@@ -144,9 +144,9 @@ BEGIN
IDS_SHV_COLUMN_TYPE "类型"
IDS_SHV_COLUMN_STATE "状态"
IDS_SHV_COLUMN_DEVNAME "设备名称"
IDS_SHV_COLUMN_PHONE "电话 # 或主机地址"
IDS_SHV_COLUMN_PHONE "电话号码或主机地址"
IDS_SHV_COLUMN_OWNER "所有者"
IDS_TYPE_ETHERNET "局域网或高速互联网"
IDS_TYPE_ETHERNET "LAN 或高速 Internet"
IDS_STATUS_NON_OPERATIONAL "已禁用"
IDS_STATUS_UNREACHABLE "未连接"
IDS_STATUS_DISCONNECTED "网络电缆没插好"

View File

@@ -75,6 +75,19 @@ TODO:
extern HRESULT WINAPI SHBindToFolder(LPCITEMIDLIST path, IShellFolder **newFolder);
struct ITBARSTATE
{
static const UINT SIG = ('R' << 0) | ('O' << 8) | ('S' << 16) | (('i' ^ 't' ^ 'b') << 24);
UINT cbSize;
UINT Signature; // Note: Windows has something else here (12 bytes)
UINT StdToolbar : 1;
UINT Addressbar : 1;
UINT Linksbar : 1;
UINT Throbber : 1; // toastytech.com/files/throboff.html
UINT Menubar : 1; // ..\Explorer\Advanced\AlwaysShowMenus for NT6?
// Note: Windows 8/10 stores the Ribbon state in ..\Explorer\Ribbon
};
HRESULT IUnknown_RelayWinEvent(IUnknown * punk, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{
CComPtr<IWinEventHandler> menuWinEventHandler;
@@ -147,6 +160,7 @@ public:
~CDockSite();
HRESULT Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags);
HRESULT GetRBBandInfo(REBARBANDINFOW &bandInfo);
IUnknown* GetContainedBand() const { return fContainedBand.p; } // Not ref. counted
private:
// *** IOleWindow methods ***
@@ -274,7 +288,7 @@ HRESULT CDockSite::GetRBBandInfo(REBARBANDINFOW &bandInfo)
bandInfo.cyMaxChild = fDeskBandInfo.ptMaxSize.y;
bandInfo.cyIntegral = fDeskBandInfo.ptIntegral.y;
bandInfo.cxIdeal = fDeskBandInfo.ptActual.x;
bandInfo.lParam = reinterpret_cast<LPARAM>(this);
bandInfo.lParam = reinterpret_cast<LPARAM>(static_cast<CDockSite*>(this));
return S_OK;
}
@@ -614,6 +628,7 @@ CInternetToolbar::CInternetToolbar()
fToolbarWindow = NULL;
fAdviseCookie = 0;
pSettings = NULL;
fIgnoreChanges = FALSE;
}
CInternetToolbar::~CInternetToolbar()
@@ -628,6 +643,21 @@ void CInternetToolbar::AddDockItem(IUnknown *newItem, int bandID, int flags)
newSite->Initialize(newItem, this, fMainReBar, bandID, flags);
}
HRESULT CInternetToolbar::EnumBands(UINT Index, int *pBandId, IUnknown **ppUnkBand)
{
REBARBANDINFOW rbbi;
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_ID | RBBIM_LPARAM;
rbbi.cch = 0;
if (!::SendMessageW(fMainReBar, RB_GETBANDINFOW, Index, (LPARAM)&rbbi))
return HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS);
*pBandId = rbbi.wID;
if (!rbbi.lParam)
return E_UNEXPECTED;
*ppUnkBand = ((CDockSite*)(rbbi.lParam))->GetContainedBand(); // Not ref. counted
return *ppUnkBand ? S_OK : S_FALSE;
}
HRESULT CInternetToolbar::ReserveBorderSpace(LONG maxHeight)
{
CComPtr<IDockingWindowSite> dockingWindowSite;
@@ -893,30 +923,16 @@ HRESULT STDMETHODCALLTYPE CInternetToolbar::ShowDW(BOOL fShow)
return hResult;
}
if (fMenuBar)
// TODO: Why should showing the IDockingWindow change all bands? Related to CORE-17236 and CORE-19659.
int id;
IUnknown *pUnk;
for (UINT i = 0; SUCCEEDED(EnumBands(i, &id, &pUnk)); ++i)
{
hResult = IUnknown_ShowDW(fMenuBar, fShow);
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
}
if (fControlsBar)
{
hResult = IUnknown_ShowDW(fControlsBar, fShow);
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
}
if (fNavigationBar)
{
hResult = IUnknown_ShowDW(fNavigationBar, fShow);
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
}
if (fLogoBar)
{
hResult = IUnknown_ShowDW(fLogoBar, fShow);
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
if (!pUnk)
continue;
BOOL visible = fShow && IsBandVisible(id) != S_FALSE;
hResult = IUnknown_ShowDW(pUnk, visible);
FAILED_UNEXPECTEDLY(hResult);
}
return S_OK;
}
@@ -1001,6 +1017,14 @@ HRESULT STDMETHODCALLTYPE CInternetToolbar::GetClassID(CLSID *pClassID)
return S_OK;
}
HRESULT CInternetToolbar::SetDirty()
{
if (fIgnoreChanges)
return S_OK;
IUnknown_Exec(fSite, CGID_ShellBrowser, IDM_NOTIFYITBARDIRTY, 0, NULL, NULL);
return S_OK;
}
HRESULT STDMETHODCALLTYPE CInternetToolbar::IsDirty()
{
return E_NOTIMPL;
@@ -1008,12 +1032,35 @@ HRESULT STDMETHODCALLTYPE CInternetToolbar::IsDirty()
HRESULT STDMETHODCALLTYPE CInternetToolbar::Load(IStream *pStm)
{
return E_NOTIMPL;
fIgnoreChanges = TRUE;
HRESULT hr = InitNew();
ITBARSTATE state;
if (SUCCEEDED(hr))
{
hr = S_FALSE;
ULONG cb = sizeof(state);
if (pStm->Read(&state, cb, &cb) == S_OK && state.Signature == state.SIG)
{
SetBandVisibility(ITBBID_MENUBAND, state.Menubar);
SetBandVisibility(ITBBID_TOOLSBAND, state.StdToolbar);
SetBandVisibility(ITBBID_ADDRESSBAND, state.Addressbar);
//SetBandVisibility(ITBBID_?, state.Linksbar);
//SetBandVisibility(ITBBID_?, state.Throbber);
hr = S_OK;
}
}
fIgnoreChanges = FALSE;
return hr;
}
HRESULT STDMETHODCALLTYPE CInternetToolbar::Save(IStream *pStm, BOOL fClearDirty)
{
return E_NOTIMPL;
ITBARSTATE state = { sizeof(state), state.SIG };
state.Menubar = IsBandVisible(ITBBID_MENUBAND) == S_OK;
state.StdToolbar = IsBandVisible(ITBBID_TOOLSBAND) == S_OK;
state.Addressbar = IsBandVisible(ITBBID_ADDRESSBAND) == S_OK;
state.Linksbar = FALSE;
return pStm->Write(&state, sizeof(state), NULL);
}
HRESULT STDMETHODCALLTYPE CInternetToolbar::GetSizeMax(ULARGE_INTEGER *pcbSize)
@@ -1080,24 +1127,34 @@ HRESULT CInternetToolbar::IsBandVisible(int BandID)
return (bandInfo.fStyle & RBBS_HIDDEN) ? S_FALSE : S_OK;
}
HRESULT CInternetToolbar::ToggleBandVisibility(int BandID)
HRESULT CInternetToolbar::SetBandVisibility(int BandID, int Show)
{
int index = (int)SendMessage(fMainReBar, RB_IDTOINDEX, BandID, 0);
REBARBANDINFOW bandInfo = {sizeof(REBARBANDINFOW), RBBIM_STYLE | RBBIM_CHILD};
if (!SendMessage(fMainReBar, RB_GETBANDINFOW, index, (LPARAM)&bandInfo))
return E_FAIL;
REBARBANDINFOW bandInfo = {sizeof(REBARBANDINFOW), RBBIM_STYLE};
SendMessage(fMainReBar, RB_GETBANDINFOW, index, (LPARAM)&bandInfo);
if (bandInfo.fStyle & RBBS_HIDDEN)
if (Show < 0)
bandInfo.fStyle ^= RBBS_HIDDEN; // Toggle
else if (Show)
bandInfo.fStyle &= ~RBBS_HIDDEN;
else
bandInfo.fStyle |= RBBS_HIDDEN;
bandInfo.fMask &= ~RBBIM_CHILD;
::ShowWindow(bandInfo.hwndChild, (bandInfo.fStyle & RBBS_HIDDEN) ? SW_HIDE : SW_SHOW); // CORE-17236
SendMessage(fMainReBar, RB_SETBANDINFOW, index, (LPARAM)&bandInfo);
ReserveBorderSpace(0);
SetDirty();
return S_OK;
}
HRESULT CInternetToolbar::ToggleBandVisibility(int BandID)
{
return SetBandVisibility(BandID, -1);
}
HRESULT STDMETHODCALLTYPE CInternetToolbar::QueryStatus(const GUID *pguidCmdGroup,
ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
@@ -1305,6 +1362,13 @@ HRESULT STDMETHODCALLTYPE CInternetToolbar::GetBitmapSize(long *paramC)
HRESULT STDMETHODCALLTYPE CInternetToolbar::SendToolbarMsg(const GUID *pguidCmdGroup, UINT uMsg,
WPARAM wParam, LPARAM lParam, LRESULT *result)
{
if (fToolbarWindow)
{
LRESULT res = ::SendMessageW(fToolbarWindow, uMsg, wParam, lParam);
if (result)
*result = res;
return S_OK;
}
return E_NOTIMPL;
}
@@ -1447,8 +1511,14 @@ HRESULT STDMETHODCALLTYPE CInternetToolbar::AddBand(IUnknown *punk)
HRESULT STDMETHODCALLTYPE CInternetToolbar::EnumBands(UINT uBand, DWORD *pdwBandID)
{
UNIMPLEMENTED;
return E_NOTIMPL;
if (uBand == ~0ul)
return ::SendMessage(fMainReBar, RB_GETBANDCOUNT, 0, 0);
int id;
IUnknown *pUnkUnused;
HRESULT hr = EnumBands(uBand, &id, &pUnkUnused);
if (SUCCEEDED(hr))
*pdwBandID = id;
return hr;
}
HRESULT STDMETHODCALLTYPE CInternetToolbar::QueryBand(DWORD dwBandID,
@@ -1685,7 +1755,6 @@ LRESULT CInternetToolbar::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam,
if (hitTestInfo.iBand == -1)
return 0;
pSettings->Load();
rebarBandInfo.cbSize = sizeof(rebarBandInfo);
rebarBandInfo.fMask = RBBIM_ID;
SendMessage(fMainReBar, RB_GETBANDINFOW, hitTestInfo.iBand, (LPARAM)&rebarBandInfo);
@@ -1930,3 +1999,19 @@ LRESULT CInternetToolbar::OnSettingsChange(UINT uMsg, WPARAM wParam, LPARAM lPar
return 0;
}
HRESULT CInternetToolbar::GetStream(UINT StreamFor, DWORD Stgm, IStream **ppS)
{
WCHAR path[MAX_PATH];
LPCWSTR subkey = NULL;
switch (StreamFor)
{
case ITBARSTREAM_SHELLBROWSER: subkey = L"ShellBrowser"; break;
case ITBARSTREAM_WEBBROWSER: subkey = L"WebBrowser"; break;
case ITBARSTREAM_EXPLORER: subkey = L"Explorer"; break;
default: return E_INVALIDARG;
}
wsprintfW(path, L"Software\\Microsoft\\Internet Explorer\\Toolbar\\%s", subkey);
*ppS = SHOpenRegStream2W(HKEY_CURRENT_USER, path, L"RosITBarLayout", Stgm); // ROS prefix until we figure out the correct format
return *ppS ? S_OK : E_FAIL;
}

View File

@@ -20,6 +20,10 @@
#pragma once
#define ITBARSTREAM_SHELLBROWSER 0
#define ITBARSTREAM_WEBBROWSER 1
#define ITBARSTREAM_EXPLORER 2
static const int gSearchCommandID = 1003;
static const int gFoldersCommandID = 1004;
static const int gMoveToCommandID = FCIDM_SHVIEW_MOVETO;
@@ -93,10 +97,12 @@ public:
POINT fStartPosition;
LONG fStartHeight;
ShellSettings *pSettings;
BOOL fIgnoreChanges;
public:
CInternetToolbar();
virtual ~CInternetToolbar();
void AddDockItem(IUnknown *newItem, int bandID, int flags);
HRESULT EnumBands(UINT Index, int *pBandId, IUnknown **ppUnkBand);
HRESULT ReserveBorderSpace(LONG maxHeight = -1);
HRESULT CreateMenuBar(IShellMenu **menuBar);
HRESULT CreateToolsBar(IUnknown **toolsBar);
@@ -104,9 +110,13 @@ public:
HRESULT CommandStateChanged(bool newValue, int commandID);
HRESULT CreateAndInitBandProxy();
HRESULT IsBandVisible(int BandID);
HRESULT SetBandVisibility(int BandID, int Show);
HRESULT ToggleBandVisibility(int BandID);
HRESULT SetState(const GUID *pguidCmdGroup, long commandID, OLECMD* pcmd);
void RefreshLockedToolbarState();
HRESULT SetDirty();
static HRESULT GetStream(UINT StreamFor, DWORD Stgm, IStream **ppS);
public:
// *** IInputObject specific methods ***

View File

@@ -73,6 +73,7 @@
/* Random id for band close button, feel free to change it */
#define IDM_BASEBAR_CLOSE 0xA200
#define IDM_NOTIFYITBARDIRTY 0xA239 /* Arbitrary id */
/* User-installed explorer band IDs according to API Monitor traces */
#define IDM_EXPLORERBAND_BEGINCUSTOM 0xA240

View File

@@ -35,6 +35,7 @@ void ShellSettings::Load()
void CabinetStateSettings::Load()
{
this->cLength = sizeof(CABINETSTATE);
ReadCabinetState(this, this->cLength);
/* Overrides */

View File

@@ -351,8 +351,10 @@ public:
HRESULT UpdateUpState();
void UpdateGotoMenu(HMENU theMenu);
void UpdateViewMenu(HMENU theMenu);
HRESULT IsInternetToolbarBandShown(UINT ITId);
void RefreshCabinetState();
void UpdateWindowTitle();
void SaveITBarLayout();
/* // *** IDockingWindowFrame methods ***
STDMETHOD(AddToolbar)(IUnknown *punkSrc, LPCWSTR pwszItem, DWORD dwAddFlags) override;
@@ -771,19 +773,11 @@ HRESULT CShellBrowser::Initialize()
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
// TODO: create settingsStream from registry entry
//if (settingsStream.p)
//{
// hResult = persistStreamInit->Load(settingsStream);
// if (FAILED_UNEXPECTEDLY(hResult))
// return hResult;
//}
//else
{
hResult = persistStreamInit->InitNew();
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
}
CComPtr<IStream> pITBarStream;
hResult = CInternetToolbar::GetStream(ITBARSTREAM_EXPLORER, STGM_READ, &pITBarStream);
hResult = SUCCEEDED(hResult) ? persistStreamInit->Load(pITBarStream) : persistStreamInit->InitNew();
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
hResult = IUnknown_ShowDW(clientBar, TRUE);
if (FAILED_UNEXPECTEDLY(hResult))
@@ -2136,6 +2130,9 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::Exec(const GUID *pguidCmdGroup, DWORD n
{
case 40994:
return NavigateToParent();
case IDM_NOTIFYITBARDIRTY:
SaveITBarLayout();
break;
}
}
else if (IsEqualIID(*pguidCmdGroup, CGID_IExplorerToolbar))
@@ -2383,7 +2380,7 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::QueryService(REFGUID guidService, REFII
return this->QueryInterface(riid, ppvObject);
if (IsEqualIID(guidService, SID_SProxyBrowser))
return this->QueryInterface(riid, ppvObject);
if (IsEqualIID(guidService, SID_IExplorerToolbar))
if (IsEqualIID(guidService, SID_IExplorerToolbar) && fClientBars[BIInternetToolbar].clientBar.p)
return fClientBars[BIInternetToolbar].clientBar->QueryInterface(riid, ppvObject);
if (IsEqualIID(riid, IID_IShellBrowser))
return this->QueryInterface(riid, ppvObject);
@@ -2495,6 +2492,9 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::ShowControlWindow(UINT id, BOOL fShow)
return S_OK;
case FCW_TREE:
return Exec(&CGID_Explorer, SBCMDID_EXPLORERBARFOLDERS, 0, NULL, NULL);
case FCW_ADDRESSBAR:
return IUnknown_Exec(fClientBars[BIInternetToolbar].clientBar,
CGID_PrivCITCommands, ITID_ADDRESSBANDSHOWN, 0, NULL, NULL);
}
return E_NOTIMPL;
}
@@ -2515,6 +2515,10 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::IsControlWindowShown(UINT id, BOOL *pfS
shown = cmd.cmdf & OLECMDF_LATCHED;
break;
}
case FCW_ADDRESSBAR:
hr = IsInternetToolbarBandShown(ITID_ADDRESSBANDSHOWN);
shown = hr == S_OK;
break;
default:
hr = E_NOTIMPL;
}
@@ -2526,6 +2530,14 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::IsControlWindowShown(UINT id, BOOL *pfS
return SUCCEEDED(hr) ? (shown ? S_OK : S_FALSE) : hr;
}
HRESULT CShellBrowser::IsInternetToolbarBandShown(UINT ITId)
{
OLECMD cmd = { ITId };
HRESULT hr = IUnknown_QueryStatus(fClientBars[BIInternetToolbar].clientBar,
CGID_PrivCITCommands, 1, &cmd, NULL);
return SUCCEEDED(hr) ? (cmd.cmdf & OLECMDF_LATCHED) ? S_OK : S_FALSE : hr;
}
HRESULT STDMETHODCALLTYPE CShellBrowser::IEGetDisplayName(LPCITEMIDLIST pidl, LPWSTR pwszName, UINT uFlags)
{
return E_NOTIMPL;
@@ -3986,3 +3998,25 @@ void CShellBrowser::UpdateWindowTitle()
if (SUCCEEDED(IEGetNameAndFlags(fCurrentDirectoryPIDL, flags, title, _countof(title), NULL)))
SetWindowText(title);
}
void CShellBrowser::SaveITBarLayout()
{
if (!gCabinetState.fSaveLocalView)
return;
#if 0 // If CDesktopBrowser aggregates us, skip saving
FOLDERSETTINGS fs;
if (fCurrentShellView && SUCCEEDED(fCurrentShellView->GetCurrentInfo(&fs)) && (fs.fFlags & FWF_DESKTOP))
return;
#endif
CComPtr<IPersistStreamInit> pPSI;
CComPtr<IStream> pITBarStream;
if (!fClientBars[BIInternetToolbar].clientBar.p)
return;
HRESULT hr = fClientBars[BIInternetToolbar].clientBar->QueryInterface(IID_PPV_ARG(IPersistStreamInit, &pPSI));
if (FAILED(hr))
return;
if (FAILED(hr = CInternetToolbar::GetStream(ITBARSTREAM_EXPLORER, STGM_WRITE, &pITBarStream)))
return;
pPSI->Save(pITBarStream, TRUE);
}

View File

@@ -155,7 +155,11 @@ DragList_SubclassWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
SetCursor(data->cursor);
break;
case DL_COPYCURSOR:
#ifndef __REACTOS__
data->cursor = LoadCursorW(COMCTL32_hModule, (LPCWSTR)IDC_COPY);
#else
data->cursor = LoadCursorW(COMCTL32_hModule, MAKEINTRESOURCEW(IDC_COPY));
#endif
SetCursor(data->cursor);
break;
case DL_MOVECURSOR:

View File

@@ -5812,7 +5812,11 @@ TOOLBAR_LButtonDown (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
/* If drag cursor has not been loaded, load it.
* Note: it doesn't need to be freed */
if (!hCursorDrag)
#ifndef __REACTOS__
hCursorDrag = LoadCursorW(COMCTL32_hModule, (LPCWSTR)IDC_MOVEBUTTON);
#else
hCursorDrag = LoadCursorW(COMCTL32_hModule, MAKEINTRESOURCEW(IDC_MOVEBUTTON));
#endif
SetCursor(hCursorDrag);
}
else

View File

@@ -34,7 +34,7 @@ STRINGTABLE
IDS_OVERWRITEFILE "文件已经存在。\n\
是否替换?"
IDS_INVALID_FILENAME_TITLE "路径中包含无效字符"
IDS_INVALID_FILENAME "文件名不能包含任何以下字符::\n\
IDS_INVALID_FILENAME "文件名不能包含下列任何字符之一:\n\
/ : < > |"
IDS_PATHNOTEXISTING "路径不存在"
IDS_FILENOTEXISTING "文件不存在"

View File

@@ -83,7 +83,7 @@ BEGIN
IDS_DEV_FAILED_INSTALL "此设备的驱动程序未安装。"
IDS_DEV_HARDWARE_DISABLED "此设备被禁用,因为该设备的 BIOS 没有给它任何资源。"
IDS_DEV_CANT_SHARE_IRQ "此设备正在使用的另一个设备正在使用无法共享中断请求IRQ资源。\n您必须更改冲突的设置或删除造成冲突的实模式驱动程序。"
IDS_DEV_FAILED_ADD "This device is not working properly because ReactOS cannot load the drivers required for this device."
IDS_DEV_FAILED_ADD "此设备无法正常工作,因为 ReactOS 无法加载此设备所需驱动。"
IDS_DEV_DISABLED_SERVICE "ReactOS 不能安装此设备的驱动程序,因为它不能访问已安装文件的驱动器或网络上的位置。"
IDS_DEV_TRANSLATION_FAILED "此设备对驱动程序没有响应。"
IDS_DEV_NO_SOFTCONFIG "ReactOS 不能确定此设备的设置。请参考此设备附带的文档,使用资源选项卡来设置配置。"

View File

@@ -183,7 +183,7 @@ END
IDD_PLEASE_WAIT_2 DIALOGEX 0, 0, 195, 72
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "请稍"
CAPTION "请稍候..."
FONT 9, "宋体"
BEGIN
ICON 5100, -1, 9, 7, 20, 20

View File

@@ -541,7 +541,7 @@ OwnerDrawButtonSubclass(
{
pContext->bIsButtonHot[HIBERNATE_BUTTON_HOT] = TRUE;
}
SetCursor(LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_HAND)));
SetCursor(LoadCursorW(NULL, IDC_HAND));
}
ClientToScreen(hButton, &pt);

View File

@@ -0,0 +1,79 @@
/*
* PROJECT: ReactOS msutb.dll
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Portuguese (Portugal) resource file
* TRANSLATOR: Copyright 2023-2024 Jose Carlos Jesus <zecarlos1957@hotmail.com>
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_OK "OK"
IDS_CANCEL "Cancelar"
IDS_ABORT "&Abortar"
IDS_RETRY "&Retroceder"
IDS_IGNORE "&Ignorar"
IDS_YES "&Sim"
IDS_NO "&Não"
IDS_SETTINGS "&Definições..."
IDS_RESTORELANGBAR "Restaurar a barra de idiomas"
IDS_LANGUAGE "Linguagem"
IDS_LANGUAGEBUTTON "Botão Linguagem"
IDS_TRANSPARENCY "&Transparência"
IDS_TEXTLABELS "T&exto da etiqueta"
IDS_MINIMIZE "&Minimizar"
IDS_CLOSELANGBAR "&Fechar a barra de idiomas"
IDS_EXTRAICONS "Ícones adicionais na &barra de tarefas"
IDS_LANGUAGEBAR "A barra de idiomas"
IDS_RESTORELANGBAR2 "&Restaurar a barra de idiomas"
IDS_MENUWND "Menu Window"
IDS_VERTICAL "&Vertical"
IDS_ADJUSTLANGBAND "&Ajuste a posição da banda de idioma"
IDS_LEFTCLICK "Click esquerdo"
END
IDD_CLOSELANGBARNOBAND DIALOGEX 0, 0, 200, 105
CAPTION "Barra de idiomas"
STYLE WS_POPUPWINDOW | WS_CAPTION | DS_MODALFRAME
FONT 8, "MS Shell Dlg"
{
LTEXT "Fechou a barra de idiomas.\n\nPara utilizar a barra de idiomas posteriormente, marque ""Mostrar a barra de idiomas na área de trabalho"" na caixa de diálogo Configurações da barra de idiomas, no painel de controle dos Serviços de Texto.", -1, 5, 5, 190, 60
AUTOCHECKBOX "&Não mostrar esta mensagem novamente.", IDC_CLOSELANGBAR_CHECK, 5, 70, 145, 10
DEFPUSHBUTTON "OK", IDOK, 80, 85, 55, 15
PUSHBUTTON "Cancelar", IDCANCEL, 140, 85, 55, 15
}
IDD_CLOSELANGBAR DIALOGEX 0, 0, 200, 105
CAPTION "Barra de idiomas"
STYLE WS_POPUPWINDOW | WS_CAPTION | DS_MODALFRAME
FONT 8, "MS Shell Dlg"
{
LTEXT "Fechou a barra de idiomas.\n\nPara utilizar a barra de idiomas posteriormente, marque ""Mostrar a barra de idiomas na área de trabalho"" na caixa de diálogo Configurações da barra de idiomas, no painel de controle Opções regionais e de idioma.", -1, 5, 5, 190, 60
AUTOCHECKBOX "&Não mostrar esta mensagem novamente.", IDC_CLOSELANGBAR_CHECK, 5, 70, 145, 10
DEFPUSHBUTTON "OK", IDOK, 80, 85, 55, 15
PUSHBUTTON "Cancelar", IDCANCEL, 140, 85, 55, 15
}
IDD_MINIMIZELANGBARNOBAND DIALOGEX 0, 0, 205, 124
CAPTION "Barra de idiomas"
STYLE WS_POPUPWINDOW | WS_CAPTION | DS_MODALFRAME
FONT 8, "MS Shell Dlg"
{
LTEXT "Minimizou a barra de idiomas. Para restaurá-la, click no ícone da barra de idiomas (próximo ao relógio) e seleccione ""Restaurar a barra de idiomas"" no menu pop-up.", -1, 5, 5, 190, 50
CONTROL IDB_BITMAP154, -1, "STATIC", SS_BITMAP, 72, 63, 60, 60, WS_EX_STATICEDGE
AUTOCHECKBOX "Não mostrar esta mensagem novamente.", IDC_MINIMIZELANGBAR_CHECK, 5, 105, 125, 10
DEFPUSHBUTTON "OK", IDOK, 140, 105, 60, 15
}
IDD_MINIMIZELANGBAR DIALOGEX 0, 0, 205, 124
CAPTION "Barra de idiomas"
STYLE WS_POPUPWINDOW | WS_CAPTION | DS_MODALFRAME
FONT 8, "MS Shell Dlg"
{
LTEXT "Minimizou a barra de idiomas. Para restaurá-la, click no ícone da barra de idiomas (próximo ao relógio) e seleccione ""Restaurar a barra de idiomas"" no menu pop-up.", -1, 5, 5, 190, 50
CONTROL IDB_BITMAP155, -1, "STATIC", SS_BITMAP, 53, 67, 60, 60, WS_EX_STATICEDGE
AUTOCHECKBOX "Não mostrar esta mensagem novamente.", IDC_MINIMIZELANGBAR_CHECK, 5, 105, 125, 10
DEFPUSHBUTTON "OK", IDOK, 140, 105, 60, 15
}

View File

@@ -31,3 +31,6 @@ IDB_BITMAP155 BITMAP "res/Bitmap-155.bmp"
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_PT_PT
#include "lang/pt-PT.rc"
#endif

View File

@@ -60,19 +60,19 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
CAPTION "IP 设置"
FONT 9, "宋体"
BEGIN
GROUPBOX "IP 地址", -1, 5, 5, 240, 83
GROUPBOX "IP 地址(&R)", -1, 5, 5, 240, 83
CONTROL "", IDC_IPLIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 15, 215, 50
PUSHBUTTON "添加...", IDC_IPADD, 60, 67, 50, 14
PUSHBUTTON "编辑...", IDC_IPMOD, 120, 67, 50, 14
PUSHBUTTON "删除", IDC_IPDEL, 180, 67, 50, 14
PUSHBUTTON "添加(&A)...", IDC_IPADD, 60, 67, 50, 14
PUSHBUTTON "编辑(&E)...", IDC_IPMOD, 120, 67, 50, 14
PUSHBUTTON "删除(&V)", IDC_IPDEL, 180, 67, 50, 14
GROUPBOX "默认网关:", -1, 5, 93, 240, 83
CONTROL "", IDC_GWLIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 103, 215, 50
PUSHBUTTON "添加...", IDC_GWADD, 60, 155, 50, 14
PUSHBUTTON "编辑...", IDC_GWMOD, 120, 155, 50, 14
PUSHBUTTON "删除", IDC_GWDEL, 180, 155, 50, 14
PUSHBUTTON "添加(&D)...", IDC_GWADD, 60, 155, 50, 14
PUSHBUTTON "编辑(&T)...", IDC_GWMOD, 120, 155, 50, 14
PUSHBUTTON "删除(&M)", IDC_GWDEL, 180, 155, 50, 14
GROUPBOX "", -1, 5, 181, 240, 30
CHECKBOX "自动跃点计数", IDC_AUTOMETRIC, 9, 179, 90, 12, BS_AUTOCHECKBOX | WS_TABSTOP
LTEXT "接口跃点数:", -1, 15, 195, 90, 12
CHECKBOX "自动跃点计数(&U)", IDC_AUTOMETRIC, 9, 179, 90, 12, BS_AUTOCHECKBOX | WS_TABSTOP
LTEXT "接口跃点数(&N)", -1, 15, 195, 90, 12
EDITTEXT IDC_METRIC, 110, 193, 50, 12, WS_TABSTOP | ES_NUMBER
END
@@ -85,9 +85,9 @@ BEGIN
LTEXT "DNS 服务器地址,按使用顺序排列(&N)", -1, 5, 5, 180, 12
PUSHBUTTON "向上", IDC_DNSADDRUP, 190, 18, 50, 14
PUSHBUTTON "向下", IDC_DNSADDRDOWN, 190, 35, 50, 14
PUSHBUTTON "添加...(&A)", IDC_DNSADDRADD, 15, 53, 50, 14 //FIXME: accelerator collision &A
PUSHBUTTON "编辑...(&E)", IDC_DNSADDRMOD, 75, 53, 50, 14 //FIXME: accelerator collision &E
PUSHBUTTON "删除(&V)", IDC_DNSADDRDEL, 135, 53, 50, 14 //FIXME: accelerator collision &V
PUSHBUTTON "添加(&A)...", IDC_DNSADDRADD, 15, 53, 50, 14
PUSHBUTTON "编辑(&E)...", IDC_DNSADDRMOD, 75, 53, 50, 14
PUSHBUTTON "删除(&V)", IDC_DNSADDRDEL, 135, 53, 50, 14
LTEXT "以下三种设置被应用到所有连接启用 TCP/IP。解析不合格的名称", -1, 5, 70, 220, 24
CONTROL "附加主要的和连接特定的 DNS 后缀(&P)", IDC_PRIMSUFFIX, "BUTTON", BS_AUTORADIOBUTTON, 5, 90, 220, 12
CHECKBOX "附加主 DNS 后缀的父后缀(&X)", IDC_TOPPRIMSUFFIX, 15, 102, 220, 12, BS_AUTOCHECKBOX | WS_TABSTOP
@@ -95,9 +95,9 @@ BEGIN
LISTBOX IDC_DNSSUFFIXLIST, 5, 127, 180, 34, LBS_NOTIFY | LBS_NOINTEGRALHEIGHT
PUSHBUTTON "上", IDC_DNSSUFFIXUP, 190, 128, 50, 14
PUSHBUTTON "下", IDC_DNSSUFFIXDOWN, 190, 145, 50, 14
PUSHBUTTON "添加...(&A)", IDC_DNSSUFFIXADD, 15, 163, 50, 14 //FIXME: accelerator collision &A
PUSHBUTTON "编辑...(&E)", IDC_DNSSUFFIXMOD, 75, 163, 50, 14 //FIXME: accelerator collision &E
PUSHBUTTON "删除(&V)", IDC_DNSSUFFIXDEL, 135, 163, 50, 14 //FIXME: accelerator collision &V
PUSHBUTTON "添加(&D)...", IDC_DNSSUFFIXADD, 15, 163, 50, 14
PUSHBUTTON "编辑(&T)...", IDC_DNSSUFFIXMOD, 75, 163, 50, 14
PUSHBUTTON "删除(&M)", IDC_DNSSUFFIXDEL, 135, 163, 50, 14
LTEXT "用于此连接的 DNS 后缀(&S)", -1, 5, 183, 110, 14
EDITTEXT IDC_SUFFIX, 120, 180, 100, 12, WS_TABSTOP
CHECKBOX "在 DNS 中注册此连接的地址(&R)", IDC_REGSUFFIX, 15, 195, 190, 12, BS_AUTOCHECKBOX | WS_TABSTOP
@@ -145,7 +145,7 @@ END
IDD_TCPIPDNS_DLG DIALOGEX 0, 0, 200, 80
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "TCP/IP DNS Server"
CAPTION "TCP/IP DNS 服务器"
FONT 9, "宋体"
BEGIN
CONTROL "", IDC_IPADDR, "SysIPAddress32", WS_TABSTOP, 5, 25, 85, 12
@@ -170,25 +170,25 @@ STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "TCP/IP 筛选"
FONT 9, "宋体"
BEGIN
CHECKBOX "启用 TCP/IP 筛选(所有适配器)", IDC_USE_FILTER, 15, 5, 190, 12, BS_AUTOCHECKBOX | WS_TABSTOP
CHECKBOX "启用 TCP/IP 筛选(所有适配器)(&E)", IDC_USE_FILTER, 15, 5, 190, 12, BS_AUTOCHECKBOX | WS_TABSTOP
GROUPBOX "", -1, 5, 30, 90, 150
CONTROL "全部允许", IDC_TCP_ALLOW_ALL, "BUTTON", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 15, 30, 70, 12
CONTROL "仅允许", IDC_TCP_RESTRICT, "BUTTON", BS_AUTORADIOBUTTON | WS_TABSTOP, 15, 44, 70, 12
CONTROL "全部允许(&P)", IDC_TCP_ALLOW_ALL, "BUTTON", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 15, 30, 70, 12
CONTROL "仅允许(&Y)", IDC_TCP_RESTRICT, "BUTTON", BS_AUTORADIOBUTTON | WS_TABSTOP, 15, 44, 70, 12
CONTROL "", IDC_TCP_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 11, 62, 72, 75
PUSHBUTTON "添加", IDC_TCP_ADD, 15, 141, 50, 14
PUSHBUTTON "删除", IDC_TCP_DEL, 15, 161, 50, 14
PUSHBUTTON "添加...", IDC_TCP_ADD, 15, 141, 50, 14
PUSHBUTTON "删除(&R)", IDC_TCP_DEL, 15, 161, 50, 14
GROUPBOX "", -1, 105, 30, 90, 150
CONTROL "全部允许", IDC_UDP_ALLOW_ALL, "BUTTON", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 115, 30, 70, 12
CONTROL "仅允许", IDC_UDP_RESTRICT, "BUTTON", BS_AUTORADIOBUTTON | WS_TABSTOP, 115, 44, 70, 12
CONTROL "全部允许(&M)", IDC_UDP_ALLOW_ALL, "BUTTON", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 115, 30, 70, 12
CONTROL "仅允许(&N)", IDC_UDP_RESTRICT, "BUTTON", BS_AUTORADIOBUTTON | WS_TABSTOP, 115, 44, 70, 12
CONTROL "", IDC_UDP_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 111, 62, 72, 75
PUSHBUTTON "添加", IDC_UDP_ADD, 115, 141, 50, 14
PUSHBUTTON "删除", IDC_UDP_DEL, 115, 161, 50, 14
PUSHBUTTON "添加...", IDC_UDP_ADD, 115, 141, 50, 14
PUSHBUTTON "删除(&O)", IDC_UDP_DEL, 115, 161, 50, 14
GROUPBOX "", -1, 205, 30, 90, 150
CONTROL "全部允许", IDC_IP_ALLOW_ALL, "BUTTON", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 215, 30, 70, 12
CONTROL "仅允许", IDC_IP_RESTRICT, "BUTTON", BS_AUTORADIOBUTTON | WS_TABSTOP, 215, 44, 70, 12
CONTROL "全部允许(&I)", IDC_IP_ALLOW_ALL, "BUTTON", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 215, 30, 70, 12
CONTROL "仅允许(&L)", IDC_IP_RESTRICT, "BUTTON", BS_AUTORADIOBUTTON | WS_TABSTOP, 215, 44, 70, 12
CONTROL "", IDC_IP_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 211, 62, 72, 75
PUSHBUTTON "添加", IDC_IP_ADD, 215, 141, 50, 14
PUSHBUTTON "删除", IDC_IP_DEL, 215, 161, 50, 14
PUSHBUTTON "添加...", IDC_IP_ADD, 215, 141, 50, 14
PUSHBUTTON "删除(&V)", IDC_IP_DEL, 215, 161, 50, 14
PUSHBUTTON "确定", IDC_OK, 150, 190, 50, 14
PUSHBUTTON "取消", IDCANCEL, 210, 190, 50, 14
END

View File

@@ -96,5 +96,5 @@ BEGIN
IDS_CHSOURCE_TITLE "选择搜索和安装选项"
IDS_SEARCHDRV_TITLE "正在搜索..."
IDS_INSTALLDRV_TITLE "正在安装..."
IDS_BROWSE_FOR_FOLDER_TITLE "Select the folder containing proper drivers for this hardware."
IDS_BROWSE_FOR_FOLDER_TITLE "选择包含您硬件驱动程序的文件夹。"
END

View File

@@ -9,10 +9,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(shell);
enum { IDC_ACTION = 0 };
CCopyMoveToMenu::CCopyMoveToMenu() :
m_idCmdFirst(0),
m_idCmdLast(0),
m_idCmdAction(-1),
m_fnOldWndProc(NULL),
m_bIgnoreTextBoxChange(FALSE)
{
@@ -106,7 +105,7 @@ BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
SHGetPathFromIDListW(pidl, szPath);
if (ILIsEqual(pidl, this_->m_pidlFolder))
PostMessageW(hwnd, BFFM_ENABLEOK, 0, FALSE);
PostMessageW(hwnd, BFFM_ENABLEOK, 0, this_->GetFileOp() == FO_COPY);
else if (PathFileExistsW(szPath) || _ILIsDesktop(pidl))
PostMessageW(hwnd, BFFM_ENABLEOK, 0, TRUE);
else
@@ -122,32 +121,18 @@ BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
}
HRESULT
CCopyMoveToMenu::DoRealFileOp(LPCMINVOKECOMMANDINFO lpici, LPCITEMIDLIST pidl)
CCopyMoveToMenu::DoRealFileOp(const CIDA *pCIDA, LPCMINVOKECOMMANDINFO lpici, PCUIDLIST_ABSOLUTE pidlDestination)
{
CDataObjectHIDA pCIDA(m_pDataObject);
if (FAILED_UNEXPECTEDLY(pCIDA.hr()))
return pCIDA.hr();
PCUIDLIST_ABSOLUTE pidlParent = HIDA_GetPIDLFolder(pCIDA);
if (!pidlParent)
{
ERR("HIDA_GetPIDLFolder failed\n");
return E_FAIL;
}
CStringW strFiles;
WCHAR szPath[MAX_PATH];
for (UINT n = 0; n < pCIDA->cidl; ++n)
{
PCUIDLIST_RELATIVE pidlRelative = HIDA_GetPIDLItem(pCIDA, n);
if (!pidlRelative)
continue;
CComHeapPtr<ITEMIDLIST> pidlCombine(ILCombine(pidlParent, pidlRelative));
if (!pidl)
CComHeapPtr<ITEMIDLIST> pidlCombine(SHELL_CIDA_ILCloneFull(pCIDA, n));
if (!pidlCombine)
return E_FAIL;
SHGetPathFromIDListW(pidlCombine, szPath);
if (!SHGetPathFromIDListW(pidlCombine, szPath))
return E_FAIL;
if (n > 0)
strFiles += L'|';
@@ -157,10 +142,10 @@ CCopyMoveToMenu::DoRealFileOp(LPCMINVOKECOMMANDINFO lpici, LPCITEMIDLIST pidl)
strFiles += L'|'; // double null-terminated
strFiles.Replace(L'|', L'\0');
if (_ILIsDesktop(pidl))
SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, FALSE);
if (_ILIsDesktop(pidlDestination))
SHGetSpecialFolderPathW(lpici->hwnd, szPath, CSIDL_DESKTOPDIRECTORY, TRUE);
else
SHGetPathFromIDListW(pidl, szPath);
SHGetPathFromIDListW(pidlDestination, szPath);
INT cchPath = lstrlenW(szPath);
if (cchPath + 1 < MAX_PATH)
{
@@ -184,60 +169,44 @@ CCopyMoveToMenu::DoRealFileOp(LPCMINVOKECOMMANDINFO lpici, LPCITEMIDLIST pidl)
}
static HRESULT
DoGetFileTitle(CStringW& strTitle, IDataObject *pDataObject)
DoGetFileTitle(const CIDA *pCIDA, CStringW& strTitle)
{
CDataObjectHIDA pCIDA(pDataObject);
if (FAILED_UNEXPECTEDLY(pCIDA.hr()))
return E_FAIL;
PCUIDLIST_ABSOLUTE pidlParent = HIDA_GetPIDLFolder(pCIDA);
if (!pidlParent)
{
ERR("HIDA_GetPIDLFolder failed\n");
return E_FAIL;
}
CComHeapPtr<ITEMIDLIST> pidlCombine(SHELL_CIDA_ILCloneFull(pCIDA, 0));
if (!pidlCombine)
return E_OUTOFMEMORY;
WCHAR szPath[MAX_PATH];
PCUIDLIST_RELATIVE pidlRelative = HIDA_GetPIDLItem(pCIDA, 0);
if (!pidlRelative)
{
ERR("HIDA_GetPIDLItem failed\n");
return E_FAIL;
}
CComHeapPtr<ITEMIDLIST> pidlCombine(ILCombine(pidlParent, pidlRelative));
if (!SHGetPathFromIDListW(pidlCombine, szPath))
{
ERR("Cannot get path\n");
return E_FAIL;
}
strTitle = PathFindFileNameW(szPath);
HRESULT hr = SHGetNameAndFlagsW(pidlCombine, SHGDN_INFOLDER, szPath, _countof(szPath), NULL);
strTitle = SUCCEEDED(hr) ? szPath : L"";
if (strTitle.IsEmpty())
return E_FAIL;
if (pCIDA->cidl > 1)
strTitle += L" ...";
return S_OK;
}
HRESULT CCopyMoveToMenu::DoAction(LPCMINVOKECOMMANDINFO lpici)
{
WCHAR wszPath[MAX_PATH];
HRESULT hr = E_FAIL;
TRACE("(%p)\n", lpici);
CDataObjectHIDA pCIDA(m_pDataObject);
HRESULT hr = pCIDA.hr();
if (FAILED_UNEXPECTEDLY(hr))
{
ERR("Failed to get CIDA, %#x\n", hr);
return hr;
}
if (!SHGetPathFromIDListW(m_pidlFolder, wszPath))
{
ERR("SHGetPathFromIDListW failed\n");
return hr;
return E_FAIL;
}
CStringW strFileTitle;
hr = DoGetFileTitle(strFileTitle, m_pDataObject);
hr = DoGetFileTitle(pCIDA, strFileTitle);
if (FAILED(hr))
return hr;
@@ -252,7 +221,7 @@ HRESULT CCopyMoveToMenu::DoAction(LPCMINVOKECOMMANDINFO lpici)
info.lParam = reinterpret_cast<LPARAM>(this);
CComHeapPtr<ITEMIDLIST> pidl(SHBrowseForFolder(&info));
if (pidl)
hr = DoRealFileOp(lpici, pidl);
hr = DoRealFileOp(pCIDA, lpici, pidl);
return hr;
}
@@ -279,52 +248,9 @@ CCopyToMenu::QueryContextMenu(HMENU hMenu,
UINT idCmdLast,
UINT uFlags)
{
MENUITEMINFOW mii;
UINT Count = 0;
TRACE("CCopyToMenu::QueryContextMenu(%p, %u, %u, %u, %u)\n",
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
if (uFlags & (CMF_NOVERBS | CMF_VERBSONLY))
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdFirst);
m_idCmdFirst = m_idCmdLast = idCmdFirst;
// insert separator if necessary
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE;
if (GetPreviousMenuItemInfo(hMenu, indexMenu, &mii) &&
mii.fType != MFT_SEPARATOR)
{
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE;
mii.fType = MFT_SEPARATOR;
if (InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
{
++indexMenu;
++Count;
}
}
// insert "Copy to folder..."
CStringW strText(MAKEINTRESOURCEW(IDS_COPYTOMENU));
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_ID | MIIM_TYPE;
mii.fType = MFT_STRING;
mii.dwTypeData = strText.GetBuffer();
mii.cch = wcslen(mii.dwTypeData);
mii.wID = m_idCmdLast;
if (InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
{
m_idCmdAction = m_idCmdLast++;
++indexMenu;
++Count;
}
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdFirst + Count);
return QueryContextMenuImpl(TRUE, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
}
STDMETHODIMP
@@ -334,57 +260,56 @@ CMoveToMenu::QueryContextMenu(HMENU hMenu,
UINT idCmdLast,
UINT uFlags)
{
MENUITEMINFOW mii;
UINT Count = 0;
TRACE("CMoveToMenu::QueryContextMenu(%p, %u, %u, %u, %u)\n",
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
return QueryContextMenuImpl(FALSE, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
}
STDMETHODIMP
CCopyMoveToMenu::QueryContextMenuImpl(BOOL IsCopyOp, HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
{
if (uFlags & (CMF_NOVERBS | CMF_VERBSONLY))
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdFirst);
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0);
m_idCmdFirst = m_idCmdLast = idCmdFirst;
UINT idHighest = 0;
CStringW strCopyTo(MAKEINTRESOURCEW(IDS_COPYTOMENU)), strMoveTo;
LPWSTR itemText = strCopyTo.GetBuffer();
if (!IsCopyOp)
{
strMoveTo.LoadString(IDS_MOVETOMENU);
itemText = strMoveTo.GetBuffer();
}
// insert separator if necessary
CStringW strCopyTo(MAKEINTRESOURCEW(IDS_COPYTOMENU));
// Insert separator if necessary
WCHAR szBuff[128];
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE;
MENUITEMINFOW mii = { sizeof(mii), MIIM_TYPE };
mii.dwTypeData = szBuff;
mii.cch = _countof(szBuff);
if (GetPreviousMenuItemInfo(hMenu, indexMenu, &mii) &&
mii.fType != MFT_SEPARATOR &&
!(mii.fType == MFT_STRING && CStringW(szBuff) == strCopyTo))
(IsCopyOp || !(mii.fType == MFT_STRING && !wcscmp(szBuff, strCopyTo.GetBuffer()))))
{
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE;
mii.fType = MFT_SEPARATOR;
mii.dwTypeData = NULL;
mii.cch = 0;
if (InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
{
++indexMenu;
++Count;
}
}
// insert "Move to folder..."
CStringW strText(MAKEINTRESOURCEW(IDS_MOVETOMENU));
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
// Insert the menu item
mii.fMask = MIIM_ID | MIIM_TYPE;
mii.fType = MFT_STRING;
mii.dwTypeData = strText.GetBuffer();
mii.cch = wcslen(mii.dwTypeData);
mii.wID = m_idCmdLast;
mii.dwTypeData = itemText;
mii.wID = idCmdFirst + IDC_ACTION;
if (InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
{
m_idCmdAction = m_idCmdLast++;
idHighest = max(idHighest, mii.wID);
++indexMenu;
++Count;
}
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdFirst + Count);
return idHighest >= idCmdFirst ? MAKE_HRESULT(SEVERITY_SUCCESS, 0, idHighest - idCmdFirst + 1) : E_FAIL;
}
STDMETHODIMP
@@ -395,7 +320,7 @@ CCopyMoveToMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
if (IS_INTRESOURCE(lpici->lpVerb))
{
if (m_idCmdFirst + LOWORD(lpici->lpVerb) == m_idCmdAction)
if (LOWORD(lpici->lpVerb) == IDC_ACTION)
hr = DoAction(lpici);
}
else
@@ -415,6 +340,12 @@ CCopyMoveToMenu::GetCommandString(
LPSTR pszName,
UINT cchMax)
{
if ((uType | GCS_UNICODE) == GCS_VALIDATEW)
return idCmd == IDC_ACTION ? S_OK : S_FALSE;
if (uType == GCS_VERBW && idCmd == IDC_ACTION)
return SHAnsiToUnicode(GetVerb(), (LPWSTR)pszName, cchMax);
FIXME("%p %lu %u %p %p %u\n", this,
idCmd, uType, pwReserved, pszName, cchMax);
@@ -431,9 +362,25 @@ CCopyMoveToMenu::HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
STDMETHODIMP
CCopyMoveToMenu::Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
{
m_pidlFolder.Attach(ILClone(pidlFolder));
m_pDataObject = pdtobj;
return S_OK;
HRESULT hr = E_FAIL;
if (pidlFolder)
{
hr = SHILClone(pidlFolder, &pidlFolder);
}
else
{
pidlFolder = SHELL_DataObject_ILCloneFullItem(pdtobj, 0);
if (pidlFolder)
{
ILRemoveLastID((LPITEMIDLIST)pidlFolder);
hr = S_OK;
}
}
if (SUCCEEDED(hr))
m_pidlFolder.Attach(const_cast<PIDLIST_ABSOLUTE>(pidlFolder));
return hr;
}
STDMETHODIMP

View File

@@ -13,11 +13,10 @@ class CCopyMoveToMenu :
public IShellExtInit
{
protected:
UINT m_idCmdFirst, m_idCmdLast, m_idCmdAction;
CComPtr<IDataObject> m_pDataObject;
CComPtr<IUnknown> m_pSite;
HRESULT DoRealFileOp(LPCMINVOKECOMMANDINFO lpici, PCUIDLIST_ABSOLUTE pidl);
HRESULT DoRealFileOp(const CIDA *pCIDA, LPCMINVOKECOMMANDINFO lpici, PCUIDLIST_ABSOLUTE pidlDestination);
HRESULT DoAction(LPCMINVOKECOMMANDINFO lpici);
public:
@@ -32,6 +31,7 @@ public:
virtual UINT GetActionTitleStringID() const = 0;
virtual UINT GetFileOp() const = 0;
virtual LPCSTR GetVerb() const = 0;
STDMETHODIMP QueryContextMenuImpl(BOOL IsCopyOp, HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
// IContextMenu
STDMETHODIMP GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen) override;

View File

@@ -723,6 +723,17 @@ void CDefView::UpdateStatusbar()
m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETICON, 2, pIcon, &lResult);
m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 2, (LPARAM)szPartText, &lResult);
}
SFGAOF att = 0;
if (cSelectedItems > 0)
{
UINT maxquery = 42; // Checking the attributes can be slow, only check small selections (_DoCopyToMoveToFolder will verify the full array)
att = SFGAO_CANCOPY | SFGAO_CANMOVE;
if (cSelectedItems <= maxquery && (!GetSelections() || FAILED(m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &att))))
att = 0;
}
m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON, FCIDM_SHVIEW_COPYTO, (att & SFGAO_CANCOPY) != 0, &lResult);
m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON, FCIDM_SHVIEW_MOVETO, (att & SFGAO_CANMOVE) != 0, &lResult);
}
LRESULT CDefView::OnUpdateStatusbar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
@@ -1947,15 +1958,18 @@ LRESULT CDefView::DoColumnContextMenu(LPARAM lParam)
*/
UINT CDefView::GetSelections()
{
SHFree(m_apidl);
m_cidl = m_ListView.GetSelectedCount();
m_apidl = static_cast<PCUITEMID_CHILD*>(SHAlloc(m_cidl * sizeof(PCUITEMID_CHILD)));
if (!m_apidl)
UINT count = m_ListView.GetSelectedCount();
if (count > m_cidl || !count || !m_apidl) // !count to free possibly large cache, !m_apidl to make sure m_apidl is a valid pointer
{
m_cidl = 0;
return 0;
SHFree(m_apidl);
m_apidl = static_cast<PCUITEMID_CHILD*>(SHAlloc(count * sizeof(PCUITEMID_CHILD)));
if (!m_apidl)
{
m_cidl = 0;
return 0;
}
}
m_cidl = count;
TRACE("-- Items selected =%u\n", m_cidl);
@@ -2025,8 +2039,7 @@ HRESULT CDefView::OpenSelectedItems()
UINT uCommand;
HRESULT hResult;
m_cidl = m_ListView.GetSelectedCount();
if (m_cidl == 0)
if (m_ListView.GetSelectedCount() == 0)
return S_OK;
hResult = OnDefaultCommand();
@@ -2100,9 +2113,9 @@ LRESULT CDefView::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &b
}
}
m_cidl = m_ListView.GetSelectedCount();
UINT count = m_ListView.GetSelectedCount();
// In case we still have this left over, clean it up
hResult = GetItemObject(m_cidl ? SVGIO_SELECTION : SVGIO_BACKGROUND, IID_PPV_ARG(IContextMenu, &m_pCM));
hResult = GetItemObject(count ? SVGIO_SELECTION : SVGIO_BACKGROUND, IID_PPV_ARG(IContextMenu, &m_pCM));
MenuCleanup _(m_pCM, m_hContextMenu);
if (FAILED_UNEXPECTEDLY(hResult))
return 0;
@@ -3382,7 +3395,7 @@ HRESULT STDMETHODCALLTYPE CDefView::SelectAndPositionItems(UINT cidl, PCUITEMID_
m_ListView.SetItemState(-1, 0, LVIS_SELECTED);
int lvIndex;
for (UINT i = 0 ; i < m_cidl; i++)
for (UINT i = 0 ; i < cidl; i++)
{
lvIndex = LV_FindItemByPidl(apidl[i]);
if (lvIndex != -1)

View File

@@ -207,6 +207,11 @@ CDefaultContextMenu::CDefaultContextMenu() :
CDefaultContextMenu::~CDefaultContextMenu()
{
for (POSITION it = m_DynamicEntries.GetHeadPosition(); it != NULL;)
{
const DynamicShellEntry& info = m_DynamicEntries.GetNext(it);
IUnknown_SetSite(info.pCM.p, NULL);
}
m_DynamicEntries.RemoveAll();
m_StaticEntries.RemoveAll();
@@ -389,7 +394,7 @@ CDefaultContextMenu::LoadDynamicContextMenuHandler(HKEY hKey, REFCLSID clsid)
return hr;
}
hr = pExtInit->Initialize(m_pidlFolder, m_pDataObj, hKey);
hr = pExtInit->Initialize(m_pDataObj ? NULL : m_pidlFolder, m_pDataObj, hKey);
if (FAILED(hr))
{
WARN("IShellExtInit::Initialize failed.clsid %s hr 0x%x\n", wine_dbgstr_guid(&clsid), hr);
@@ -459,7 +464,7 @@ CDefaultContextMenu::EnumerateDynamicContextHandlerForKey(HKEY hRootKey)
}
}
hr = LoadDynamicContextMenuHandler(hKey, clsid);
hr = LoadDynamicContextMenuHandler(hRootKey, clsid);
if (FAILED(hr))
WARN("Failed to get context menu entires from shell extension! clsid: %S\n", pwszClsid);
}

View File

@@ -140,6 +140,7 @@ private:
CSimpleArray<STGMEDIUM> m_Storage;
UINT m_cfShellIDList;
BOOL m_doasync;
bool m_FailGetHDrop;
public:
CIDLDataObj();
~CIDLDataObj();
@@ -173,6 +174,7 @@ CIDLDataObj::CIDLDataObj()
{
m_cfShellIDList = 0;
m_doasync = FALSE;
m_FailGetHDrop = false;
}
CIDLDataObj::~CIDLDataObj()
@@ -205,6 +207,15 @@ HRESULT WINAPI CIDLDataObj::Initialize(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl
HRESULT hr = SetData(&Format, &medium, TRUE);
if (!FAILED_UNEXPECTEDLY(hr) && bAddAdditionalFormats)
{
/* The Windows default shell IDataObject::GetData fails with DV_E_CLIPFORMAT if the desktop is present.
* Windows does return HDROP in EnumFormatEtc and does not fail until GetData is called.
* Failing GetData causes 7-Zip 23.01 to not add its menu to the desktop folder. */
for (UINT i = 0; i < cidlx; ++i)
{
if (ILIsEmpty(apidlx[i]) && ILIsEmpty(pMyPidl))
m_FailGetHDrop = true;
}
Format.cfFormat = CF_HDROP;
medium.hGlobal = RenderHDROP((LPITEMIDLIST)pMyPidl, (LPITEMIDLIST*)apidlx, cidlx);
hr = SetData(&Format, &medium, TRUE);
@@ -245,6 +256,9 @@ HRESULT WINAPI CIDLDataObj::GetData(LPFORMATETC pformatetcIn, STGMEDIUM *pmedium
fmt.dwAspect == pformatetcIn->dwAspect &&
fmt.tymed == pformatetcIn->tymed)
{
if (m_FailGetHDrop && fmt.cfFormat == CF_HDROP)
return DV_E_CLIPFORMAT;
if (pformatetcIn->tymed != TYMED_HGLOBAL)
{
UNIMPLEMENTED;

View File

@@ -911,8 +911,6 @@ BrFolder_OnContextMenu(BrFolder &info, LPARAM lParam)
enum { IDC_TOGGLE = 1, ID_FIRSTCMD, ID_LASTCMD = 0xffff };
HTREEITEM hSelected = TreeView_GetSelection(info.hwndTreeView);
CMINVOKECOMMANDINFOEX ici = { sizeof(ici), CMIC_MASK_PTINVOKE, info.hWnd };
ici.fMask |= (GetKeyState(VK_SHIFT) < 0) ? CMIC_MASK_SHIFT_DOWN : 0;
ici.fMask |= (GetKeyState(VK_CONTROL) < 0) ? CMIC_MASK_CONTROL_DOWN : 0;
ici.nShow = SW_SHOW;
ici.ptInvoke.x = GET_X_LPARAM(lParam);
ici.ptInvoke.y = GET_Y_LPARAM(lParam);
@@ -946,8 +944,8 @@ BrFolder_OnContextMenu(BrFolder &info, LPARAM lParam)
if (!hMenu)
return;
info.pContextMenu = pcm;
UINT cmf = ((ici.fMask & CMIC_MASK_SHIFT_DOWN) ? CMF_EXTENDEDVERBS : 0) | CMF_CANRENAME;
hr = pcm->QueryContextMenu(hMenu, 0, ID_FIRSTCMD, ID_LASTCMD, CMF_NODEFAULT | cmf);
UINT cmf = ((GetKeyState(VK_SHIFT) < 0) ? CMF_EXTENDEDVERBS : 0) | CMF_CANRENAME;
hr = pcm->QueryContextMenu(hMenu, 0, ID_FIRSTCMD, ID_LASTCMD, CMF_EXPLORE | cmf);
if (hr > 0)
_InsertMenuItemW(hMenu, 0, TRUE, 0, MFT_SEPARATOR, NULL, 0);
_InsertMenuItemW(hMenu, 0, TRUE, IDC_TOGGLE, MFT_STRING,
@@ -963,11 +961,14 @@ BrFolder_OnContextMenu(BrFolder &info, LPARAM lParam)
}
else if (cmd != 0 && GetDfmCmd(pcm, ici.lpVerb) == DFM_CMD_RENAME)
{
TreeView_SelectItem(info.hwndTreeView, hSelected);
TreeView_EditLabel(info.hwndTreeView, hSelected);
BrFolder_Rename(&info, hSelected);
}
else if (cmd != 0)
{
if (GetKeyState(VK_SHIFT) < 0)
ici.fMask |= CMIC_MASK_SHIFT_DOWN;
if (GetKeyState(VK_CONTROL) < 0)
ici.fMask |= CMIC_MASK_CONTROL_DOWN;
pcm->InvokeCommand((CMINVOKECOMMANDINFO*)&ici);
}
info.pContextMenu = NULL;

View File

@@ -1242,7 +1242,7 @@ INT_PTR CALLBACK OwnerDrawButtonSubclass(HWND hButton, UINT uMsg, WPARAM wParam,
break;
}
}
SetCursor(LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_HAND)));
SetCursor(LoadCursorW(NULL, IDC_HAND));
}
ClientToScreen(hButton, &pt);

View File

@@ -238,7 +238,6 @@ ShowFolderOptionsDialogThreadProc(LPVOID param)
HPROPSHEETPAGE hppages[3];
HPROPSHEETPAGE hpage;
UINT num_pages = 0;
WCHAR szOptions[100];
hpage = SH_CreatePropertySheetPage(IDD_FOLDER_OPTIONS_GENERAL, FolderOptionsGeneralDlg, 0, NULL);
if (hpage)
@@ -252,10 +251,6 @@ ShowFolderOptionsDialogThreadProc(LPVOID param)
if (hpage)
hppages[num_pages++] = hpage;
szOptions[0] = 0;
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;
@@ -272,8 +267,9 @@ ShowFolderOptionsDialogThreadProc(LPVOID param)
pinfo.hwndParent = stub;
pinfo.nPages = num_pages;
pinfo.phpage = hppages;
pinfo.hInstance = shell32_hInstance;
pinfo.pszIcon = MAKEINTRESOURCEW(IDI_SHELL_FOLDER_OPTIONS);
pinfo.pszCaption = szOptions;
pinfo.pszCaption = MAKEINTRESOURCEW(IDS_FOLDER_OPTIONS);
pinfo.pfnCallback = PropSheetProc;
pinfo.nStartPage = PtrToUlong(param);

View File

@@ -25,6 +25,11 @@
WINE_DEFAULT_DEBUG_CHANNEL(shell);
static BOOL IsSelf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl)
{
return cidl == 0 || (cidl == 1 && apidl && _ILIsEmpty(apidl[0]));
}
STDMETHODIMP
CDesktopFolder::ShellUrlParseDisplayName(
HWND hwndOwner,
@@ -810,10 +815,10 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
if (!ppvOut)
return hr;
*ppvOut = NULL;
if (cidl == 1 && !_ILIsSpecialFolder(apidl[0]))
BOOL self = IsSelf(cidl, apidl);
if (cidl == 1 && !_ILIsSpecialFolder(apidl[0]) && !self)
{
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(apidl[0], &psf);
@@ -825,7 +830,8 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
if (IsEqualIID (riid, IID_IContextMenu))
{
if (cidl > 0 && _ILIsSpecialFolder(apidl[0]))
// FIXME: m_regFolder vs AddFSClassKeysToArray is incorrect when the selection includes both regitems and FS items
if (!self && cidl > 0 && _ILIsSpecialFolder(apidl[0]))
{
hr = m_regFolder->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, &pObj);
}
@@ -836,7 +842,12 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
/* Otherwise operations like that involve items from both user and shared desktop will not work */
HKEY hKeys[16];
UINT cKeys = 0;
if (cidl > 0)
if (self)
{
AddClsidKeyToArray(CLSID_ShellDesktop, hKeys, &cKeys);
AddClassKeyToArray(L"Folder", hKeys, &cKeys);
}
else if (cidl > 0)
{
AddFSClassKeysToArray(cidl, apidl, hKeys, &cKeys);
}
@@ -1075,22 +1086,18 @@ HRESULT WINAPI CDesktopFolder::GetCurFolder(PIDLIST_ABSOLUTE * pidl)
HRESULT WINAPI CDesktopFolder::CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
enum { IDC_PROPERTIES };
/* no data object means no selection */
if (!pdtobj)
if (uMsg == DFM_INVOKECOMMAND && wParam == (pdtobj ? DFM_CMD_PROPERTIES : IDC_PROPERTIES))
{
if (uMsg == DFM_INVOKECOMMAND && wParam == IDC_PROPERTIES)
{
return SHELL_ExecuteControlPanelCPL(hwndOwner, L"desk.cpl") ? S_OK : E_FAIL;
}
else if (uMsg == DFM_MERGECONTEXTMENU)
{
QCMINFO *pqcminfo = (QCMINFO *)lParam;
HMENU hpopup = CreatePopupMenu();
_InsertMenuItemW(hpopup, 0, TRUE, IDC_PROPERTIES, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED);
pqcminfo->idCmdFirst = Shell_MergeMenus(pqcminfo->hmenu, hpopup, pqcminfo->indexMenu, pqcminfo->idCmdFirst, pqcminfo->idCmdLast, MM_ADDSEPARATOR);
DestroyMenu(hpopup);
return S_OK;
}
return SHELL_ExecuteControlPanelCPL(hwndOwner, L"desk.cpl") ? S_OK : E_FAIL;
}
else if (uMsg == DFM_MERGECONTEXTMENU && !pdtobj) // Add Properties item when called for directory background
{
QCMINFO *pqcminfo = (QCMINFO *)lParam;
HMENU hpopup = CreatePopupMenu();
_InsertMenuItemW(hpopup, 0, TRUE, IDC_PROPERTIES, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED);
pqcminfo->idCmdFirst = Shell_MergeMenus(pqcminfo->hmenu, hpopup, pqcminfo->indexMenu, pqcminfo->idCmdFirst, pqcminfo->idCmdLast, MM_ADDSEPARATOR);
DestroyMenu(hpopup);
return S_OK;
}
return SHELL32_DefaultContextMenuCallBack(psf, pdtobj, uMsg);
}

View File

@@ -57,13 +57,13 @@ static int iDriveTypeIds[7] = { IDS_DRIVE_FIXED, /* DRIVE_UNKNOWN */
BOOL _ILGetDriveType(LPCITEMIDLIST pidl)
{
char szDrive[8];
WCHAR szDrive[8];
if (!_ILGetDrive(pidl, szDrive, _countof(szDrive)))
{
ERR("pidl %p is not a drive\n", pidl);
return DRIVE_UNKNOWN;
}
return ::GetDriveTypeA(szDrive);
return ::GetDriveTypeW(szDrive);
}
/***********************************************************************
@@ -285,16 +285,16 @@ HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf,
if (FAILED_UNEXPECTEDLY(hr))
return hr;
char szDrive[8] = {0};
if (!_ILGetDrive(apidl[0], szDrive, sizeof(szDrive)))
WCHAR szDrive[8] = {0};
if (!_ILGetDrive(apidl[0], szDrive, _countof(szDrive)))
{
ERR("pidl is not a drive\n");
SHFree(pidlFolder);
_ILFreeaPidl(apidl, cidl);
return E_FAIL;
}
nDriveType = GetDriveTypeA(szDrive);
GetVolumeInformationA(szDrive, NULL, 0, NULL, NULL, &dwFlags, NULL, 0);
nDriveType = GetDriveTypeW(szDrive);
GetVolumeInformationW(szDrive, NULL, 0, NULL, NULL, &dwFlags, NULL, 0);
// custom command IDs
#if 0 // Disabled until our menu building system is fixed

View File

@@ -657,9 +657,9 @@ HRESULT SHELL32_GetFSItemAttributes(IShellFolder * psf, LPCITEMIDLIST pidl, LPDW
if (SFGAO_LINK & *pdwAttributes)
{
char ext[MAX_PATH];
WCHAR ext[MAX_PATH];
if (_ILGetExtension(pidl, ext, MAX_PATH) && !lstrcmpiA(ext, "lnk"))
if (_ILGetExtension(pidl, ext, _countof(ext)) && !lstrcmpiW(ext, L"lnk"))
dwShellAttributes |= SFGAO_LINK;
}
@@ -1598,7 +1598,8 @@ HRESULT WINAPI CFSFolder::GetDetailsOf(PCUITEMID_CHILD pidl,
else
{
hr = S_OK;
psd->str.uType = STRRET_CSTR;
psd->str.uType = STRRET_WSTR;
psd->str.pOleStr = (LPWSTR)CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR));
/* the data from the pidl */
switch (iColumn)
{
@@ -1606,19 +1607,19 @@ HRESULT WINAPI CFSFolder::GetDetailsOf(PCUITEMID_CHILD pidl,
hr = GetDisplayNameOf (pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case SHFSF_COL_SIZE:
_ILGetFileSize(pidl, psd->str.cStr, MAX_PATH);
_ILGetFileSize(pidl, psd->str.pOleStr, MAX_PATH);
break;
case SHFSF_COL_TYPE:
_ILGetFileType(pidl, psd->str.cStr, MAX_PATH);
_ILGetFileType(pidl, psd->str.pOleStr, MAX_PATH);
break;
case SHFSF_COL_MDATE:
_ILGetFileDate(pidl, psd->str.cStr, MAX_PATH);
_ILGetFileDate(pidl, psd->str.pOleStr, MAX_PATH);
break;
case SHFSF_COL_FATTS:
_ILGetFileAttributes(pidl, psd->str.cStr, MAX_PATH);
_ILGetFileAttributes(pidl, psd->str.pOleStr, MAX_PATH);
break;
case SHFSF_COL_COMMENT:
psd->str.cStr[0] = '\0'; // TODO: Extract comment from .lnk files? desktop.ini?
psd->str.pOleStr[0] = UNICODE_NULL; // TODO: Extract comment from .lnk files? desktop.ini?
break;
#if DBG
default:

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Самоподреждане", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Опресняване", FCIDM_SHVIEW_REFRESH
MENUITEM "&Опресняване", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Поставяне", FCIDM_SHVIEW_INSERT
MENUITEM "Поставяне като връзка", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Поставяне", FCIDM_SHVIEW_INSERT
MENUITEM "Поставяне като &връзка", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -48,8 +48,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Поставяне\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Поставяне като &връзка", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH
MENUITEM "R&efresh", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -41,10 +41,10 @@ BEGIN
MENUITEM "&Arrangere Automatisk", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Opfrisk", FCIDM_SHVIEW_REFRESH
MENUITEM "&Opfrisk", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Indsæt", FCIDM_SHVIEW_INSERT
MENUITEM "Indsæt som Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Ind&sæt", FCIDM_SHVIEW_INSERT
MENUITEM "Indsæt som &Link", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -55,8 +55,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Ind&sæt\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Indsæt som &Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Automatisch anordnen", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Am &Raster ausrichten", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Aktualisieren", FCIDM_SHVIEW_REFRESH
MENUITEM "A&ktualisieren", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Einfügen", FCIDM_SHVIEW_INSERT
MENUITEM "Einfügen als Verweis", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Einfügen", FCIDM_SHVIEW_INSERT
MENUITEM "&Verknüpfung einfügen", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -49,7 +49,7 @@ BEGIN
MENUITEM "&Ausschneiden\tStrg+X", FCIDM_SHVIEW_CUT
MENUITEM "&Kopieren\tStrg+C", FCIDM_SHVIEW_COPY
MENUITEM "&Einfügen\tStrg+V", FCIDM_SHVIEW_INSERT
MENUITEM "Verknüp&fung Einfügen", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Verknüp&fung einfügen", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "In &Ordner kopieren...", FCIDM_SHVIEW_COPYTO
MENUITEM "In Ordner &verschieben...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "Αυτόματη τακτοποίηση", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Ανανέωση", FCIDM_SHVIEW_REFRESH
MENUITEM "&Ανανέωση", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Επικόληση", FCIDM_SHVIEW_INSERT
MENUITEM "Επικόληση συντόμευσης", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Επικόληση", FCIDM_SHVIEW_INSERT
MENUITEM "Επικόληση &συντόμευσης", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -48,8 +48,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Επικόληση\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Επικόληση &συντόμευσης", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH
MENUITEM "R&efresh", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH
MENUITEM "R&efresh", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -43,10 +43,10 @@ BEGIN
MENUITEM "&Ordenar automáticamente", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Alinear a la &cuadrícula", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Actualizar", FCIDM_SHVIEW_REFRESH
MENUITEM "A&ctualizar", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Pegar", FCIDM_SHVIEW_INSERT
MENUITEM "Pegar acceso directo", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Pegar", FCIDM_SHVIEW_INSERT
MENUITEM "Pegar &acceso directo", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -41,10 +41,10 @@ BEGIN
MENUITEM "&Automaatkorralda", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Värskenda", FCIDM_SHVIEW_REFRESH
MENUITEM "Vä&rskenda", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Kleebi", FCIDM_SHVIEW_INSERT
MENUITEM "Kleebi otseteena", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Klee&bi", FCIDM_SHVIEW_INSERT
MENUITEM "Kleebi o&tseteena", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "Järjestä &Automaattisesti", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Päivitä", FCIDM_SHVIEW_REFRESH
MENUITEM "&Päivitä", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Liitä", FCIDM_SHVIEW_INSERT
MENUITEM "Liitä Linkiksi", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Liitä", FCIDM_SHVIEW_INSERT
MENUITEM "Liitä Li&nkiksi", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -48,8 +48,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Liitä\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Liitä Li&nkiksi", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "T&ri automatique", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Aligner sur la &grille", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Rafraîchir", FCIDM_SHVIEW_REFRESH
MENUITEM "&Rafraîchir", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Coll&er", FCIDM_SHVIEW_INSERT
MENUITEM "Coller comme un lien", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Coller comme un &lien", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -49,7 +49,7 @@ BEGIN
MENUITEM "C&ouper\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copier\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "Coll&er\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Créer un &lien", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Coller comme un &lien", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Co&pier vers le dossier...", FCIDM_SHVIEW_COPYTO
MENUITEM "&Déplacer vers le dossier...", FCIDM_SHVIEW_MOVETO

View File

@@ -41,10 +41,10 @@ BEGIN
MENUITEM "&ऑटो अरेंज", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "रिफ़्रिश", FCIDM_SHVIEW_REFRESH
MENUITEM "&रिफ़्रिश", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "पेस्ट", FCIDM_SHVIEW_INSERT
MENUITEM "लिंक के रूप में पेस्ट करें", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&पेस्ट", FCIDM_SHVIEW_INSERT
MENUITEM "&शॉर्टकट पेस्ट करें", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Automatikus elrendezés", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "&Rácshoz igazítás", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Frissítés", FCIDM_SHVIEW_REFRESH
MENUITEM "&Frissítés", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Beillesztés", FCIDM_SHVIEW_INSERT
MENUITEM "Parancsikon beillesztése", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Beillesztés", FCIDM_SHVIEW_INSERT
MENUITEM "&Parancsikon beillesztése", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "Otomatis &Urutkan", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Sejajarkan dengan &Kisi", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Segarkan", FCIDM_SHVIEW_REFRESH
MENUITEM "&Segarkan", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Tempel", FCIDM_SHVIEW_INSERT
MENUITEM "Tempel Pintasan", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Te&mpel", FCIDM_SHVIEW_INSERT
MENUITEM "Tempel &pintasan", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Disponi Automaticamente", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Aggiorna", FCIDM_SHVIEW_REFRESH
MENUITEM "&Aggiorna", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Incolla", FCIDM_SHVIEW_INSERT
MENUITEM "Crea Collegamento", FCIDM_SHVIEW_INSERTLINK
MENUITEM "I&ncolla", FCIDM_SHVIEW_INSERT
MENUITEM "Incolla &collegamento", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "アイコンの自動整列(&A)", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "アイコンを等間隔に整列(&G)", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "最新の情報に更新", FCIDM_SHVIEW_REFRESH
MENUITEM "最新の情報に更新(&E)", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "貼り付け", FCIDM_SHVIEW_INSERT
MENUITEM "ショートカット貼り付け", FCIDM_SHVIEW_INSERTLINK
MENUITEM "貼り付け(&P)", FCIDM_SHVIEW_INSERT
MENUITEM "ショートカット貼り付け(&S)", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -41,10 +41,10 @@ BEGIN
MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH
MENUITEM "R&efresh", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH
MENUITEM "R&efresh", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "Ordne &automatisk", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Oppdater", FCIDM_SHVIEW_REFRESH
MENUITEM "&Oppdater", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Lim inn", FCIDM_SHVIEW_INSERT
MENUITEM "Lim inn som snarvei", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Lim inn", FCIDM_SHVIEW_INSERT
MENUITEM "Lim inn som &snarvei", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -48,8 +48,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Lim inn\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Lim inn som &snarvei", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -45,7 +45,7 @@ BEGIN
END
MENUITEM "&Odśwież", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "W&klej", FCIDM_SHVIEW_INSERT
MENUITEM "Wkl&ej", FCIDM_SHVIEW_INSERT
MENUITEM "Wklej s&krót", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -48,8 +48,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Co&lar\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "C&olar atalho", FCIDM_SHVIEW_INSERTLINK // FIXME: accelerator might not match with Windows
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -45,7 +45,7 @@ BEGIN
END
MENUITEM "О&бновить", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "&Вставить", FCIDM_SHVIEW_INSERT
MENUITEM "Встав&ить", FCIDM_SHVIEW_INSERT
MENUITEM "Вставить &ярлык", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -48,8 +48,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Prilepiť\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Prilepiť od&kaz", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH
MENUITEM "R&efresh", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Paste", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -41,10 +41,10 @@ BEGIN
MENUITEM "Organizo &Auto", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Riresko", FCIDM_SHVIEW_REFRESH
MENUITEM "&Riresko", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Ngjit", FCIDM_SHVIEW_INSERT
MENUITEM "Ngjit si Lidhje", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Ngjit", FCIDM_SHVIEW_INSERT
MENUITEM "Ngjit si &Lidhje", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -55,8 +55,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT
MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK
MENUITEM "&Ngjit\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Ngjit si &Lidhje", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO
MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO

View File

@@ -34,10 +34,10 @@ BEGIN
MENUITEM "&Ordna automatiskt", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Uppdatera", FCIDM_SHVIEW_REFRESH
MENUITEM "&Uppdatera", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Klistra in", FCIDM_SHVIEW_INSERT
MENUITEM "Klistra in som genväg", FCIDM_SHVIEW_INSERTLINK //FIXME: should we use "Klistra in &genväg" here to sync it with the same string ~10 lines below? ATTENTION: There is also a IDM_CREATELINK and IDS_CREATELINK "Skapa &genväg" (not sure whether those can happen in the same menu or not)
MENUITEM "K&listra in", FCIDM_SHVIEW_INSERT
MENUITEM "Klistra in &genväg", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -47,8 +47,8 @@ BEGIN
MENUITEM "&Ångra\tCtrl+Z", FCIDM_SHVIEW_UNDO
MENUITEM SEPARATOR
MENUITEM "Kl&ipp ut\tCtrl+X", FCIDM_SHVIEW_CUT //FIXME: double-check this accelerator on Windows! Should it be &t maybe?
MENUITEM "&Kopiera\tCtrl+C", FCIDM_SHVIEW_COPY //FIXME: accelerator collision &K
MENUITEM "&Klistra in\tCtrl+V", FCIDM_SHVIEW_INSERT //FIXME: accelerator collision &K
MENUITEM "&Kopiera\tCtrl+C", FCIDM_SHVIEW_COPY
MENUITEM "K&listra in\tCtrl+V", FCIDM_SHVIEW_INSERT
MENUITEM "Klistra in &genväg", FCIDM_SHVIEW_INSERTLINK
MENUITEM SEPARATOR
MENUITEM "Kopiera till &mapp...", FCIDM_SHVIEW_COPYTO

View File

@@ -31,13 +31,13 @@ BEGIN
POPUP "&Упорядкувати значки", FCIDM_SHVIEW_ARRANGE
BEGIN
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "&автоматично", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "&Автоматично", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "Align to &Grid", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "Оновити", FCIDM_SHVIEW_REFRESH
MENUITEM "О&новити", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "Вставити", FCIDM_SHVIEW_INSERT
MENUITEM "Вставити ярлик", FCIDM_SHVIEW_INSERTLINK
MENUITEM "Встав&ити", FCIDM_SHVIEW_INSERT
MENUITEM "Вставити &ярлик", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -44,10 +44,10 @@ BEGIN
MENUITEM "自动排列(&A)", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "对齐网格(&G)", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "刷新", FCIDM_SHVIEW_REFRESH
MENUITEM "刷新(&E)", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "粘贴", FCIDM_SHVIEW_INSERT
MENUITEM "粘贴快捷方式", FCIDM_SHVIEW_INSERTLINK
MENUITEM "粘贴(&P)", FCIDM_SHVIEW_INSERT
MENUITEM "粘贴快捷方式(&S)", FCIDM_SHVIEW_INSERTLINK
END
END
@@ -805,7 +805,7 @@ BEGIN
IDS_DISCONNECT "断开"
IDS_OPENFILELOCATION "打开文件位置(&I)"
IDS_SENDTO_MENU "发送到(&N)"
IDS_COPYASPATHMENU "Copy as path"
IDS_COPYASPATHMENU "复制文件地址"
IDS_MOVEERRORTITLE "无法移动文件或文件夹"
IDS_COPYERRORTITLE "无法复制文件或文件夹"
@@ -817,8 +817,8 @@ BEGIN
IDS_MOVEERROR "无法移动“%s”%s"
IDS_COPYERROR "无法复制“%s”%s"
IDS_CREATEFILE_DENIED "Could not create file %1"
IDS_CREATEFILE_CAPTION "Error creating file"
IDS_CREATEFILE_DENIED "无法创建文件 %1"
IDS_CREATEFILE_CAPTION "创建文件出错"
IDS_CREATEFOLDER_DENIED "无法创建文件夹“%1”"
IDS_CREATEFOLDER_CAPTION "无法创建文件夹"
IDS_DELETEITEM_CAPTION "确认文件删除"
@@ -863,20 +863,20 @@ BEGIN
IDS_RUNDLG_BROWSE_FILTER "可执行文件 (*.exe)\0*.exe\0所有文件 (*.*)\0*.*\0"
/* Shortcut property sheet */
IDS_SHORTCUT_RUN_NORMAL "Normal window"
IDS_SHORTCUT_RUN_MIN "Minimized"
IDS_SHORTCUT_RUN_MAX "Maximized"
IDS_SHORTCUT_RUN_NORMAL "常规窗口"
IDS_SHORTCUT_RUN_MIN "最小化"
IDS_SHORTCUT_RUN_MAX "最大化"
/* Shell folder path default values. See also: dll/win32/userenv/lang */
/* ATTENTION: If there is no special situation, please DO NOT change
English folder names into Chinese, or it may cause problems in the system. */
IDS_PROGRAMS "开始菜单\\程序"
IDS_PROGRAMS "开始菜单\\程序"
IDS_PERSONAL "我的文档"
IDS_FAVORITES "收藏夹"
IDS_STARTUP "开始菜单\\程序\\启动"
IDS_STARTUP "开始菜单\\程序\\启动"
IDS_RECENT "Recent"
IDS_SENDTO "SendTo"
IDS_STARTMENU "开始菜单"
IDS_STARTMENU "开始菜单"
IDS_MYMUSIC "我的音乐"
IDS_MYVIDEO "我的视频"
IDS_DESKTOPDIRECTORY "桌面"
@@ -892,7 +892,7 @@ BEGIN
IDS_MYPICTURES "我的图片"
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
IDS_COMMON_DOCUMENTS "Documents"
IDS_ADMINTOOLS "开始菜单\\程序\\管理工具"
IDS_ADMINTOOLS "开始菜单\\程序\\管理工具"
IDS_COMMON_MUSIC "Documents\\我的音乐"
IDS_COMMON_PICTURES "Documents\\我的图片"
IDS_COMMON_VIDEO "Documents\\我的视频"
@@ -900,7 +900,7 @@ BEGIN
IDS_NETWORKPLACE "网上邻居"
IDS_NEWFOLDER "新建文件夹"
IDS_NEWITEMFORMAT "New %s"
IDS_NEWITEMFORMAT "新建 %s"
IDS_DRIVE_FIXED "本地磁盘"
IDS_DRIVE_CDROM "光盘驱动器"
@@ -923,7 +923,7 @@ BEGIN
IDS_FOLDER_OPTIONS "文件夹选项"
IDS_TASKBAR_OPTIONS "Taskbar and Start Menu"
IDS_TASKBAR_OPTIONS_INFOTIP "Customize the Start Menu and the taskbar, such as the types of items to be displayed and how they should appear."
IDS_RECYCLEBIN_LOCATION "回收位置"
IDS_RECYCLEBIN_LOCATION "回收位置"
IDS_RECYCLEBIN_DISKSPACE "可用空间"
IDS_EMPTY_BITBUCKET "清空回收站"
IDS_PICK_ICON_TITLE "选择图标"
@@ -1028,16 +1028,16 @@ BEGIN
IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "在我的电脑中显示控制面板"
IDS_ADVANCED_SHOW_COMP_COLOR "以彩色显示已被加密或压缩的 NTFS 文件"
IDS_ADVANCED_SHOW_INFO_TIP "显示文件夹和桌面项目的弹出描述"
IDS_ADVANCED_DISPLAY_FAVORITES "Display Favorites"
IDS_ADVANCED_DISPLAY_LOG_OFF "Display Log Off"
IDS_ADVANCED_EXPAND_CONTROL_PANEL "Expand Control Panel"
IDS_ADVANCED_EXPAND_MY_DOCUMENTS "Expand My Documents"
IDS_ADVANCED_EXPAND_PRINTERS "Expand Printers"
IDS_ADVANCED_EXPAND_MY_PICTURES "Expand My Pictures"
IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
IDS_ADVANCED_DISPLAY_RUN "Display Run"
IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
IDS_ADVANCED_DISPLAY_FAVORITES "显示收藏夹"
IDS_ADVANCED_DISPLAY_LOG_OFF "显示注销"
IDS_ADVANCED_EXPAND_CONTROL_PANEL "扩展控制面板"
IDS_ADVANCED_EXPAND_MY_DOCUMENTS "扩展我的文档"
IDS_ADVANCED_EXPAND_PRINTERS "扩展打印机"
IDS_ADVANCED_EXPAND_MY_PICTURES "扩展“图片收藏”"
IDS_ADVANCED_EXPAND_NET_CONNECTIONS "扩展网络连接"
IDS_ADVANCED_DISPLAY_RUN "显示运行"
IDS_ADVANCED_DISPLAY_ADMINTOOLS "显示管理工具"
IDS_ADVANCED_SMALL_START_MENU "在“开始”菜单中显示小图标"
IDS_NEWEXT_ADVANCED_LEFT "<< 高级(&V)"
IDS_NEWEXT_ADVANCED_RIGHT "高级(&V) >>"

View File

@@ -42,10 +42,10 @@ BEGIN
MENUITEM "自動排列(&A)", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "貼齊格線(&G)", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "重新整理", FCIDM_SHVIEW_REFRESH
MENUITEM "重新整理(&E)", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "貼上", FCIDM_SHVIEW_INSERT
MENUITEM "貼上捷徑", FCIDM_SHVIEW_INSERTLINK
MENUITEM "貼上(&P)", FCIDM_SHVIEW_INSERT
MENUITEM "貼上捷徑(&S)", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -43,10 +43,10 @@ BEGIN
MENUITEM "自動排列(&A)", FCIDM_SHVIEW_AUTOARRANGE
MENUITEM "貼齊格線(&G)", FCIDM_SHVIEW_ALIGNTOGRID
END
MENUITEM "重新整理", FCIDM_SHVIEW_REFRESH
MENUITEM "重新整理(&E)", FCIDM_SHVIEW_REFRESH
MENUITEM "", -1, MFT_SEPARATOR
MENUITEM "貼上", FCIDM_SHVIEW_INSERT
MENUITEM "貼上捷徑", FCIDM_SHVIEW_INSERTLINK
MENUITEM "貼上(&P)", FCIDM_SHVIEW_INSERT
MENUITEM "貼上捷徑(&S)", FCIDM_SHVIEW_INSERTLINK
END
END

View File

@@ -229,6 +229,9 @@ BOOL PathIsValidElement(_In_ LPCWSTR pszPath);
BOOL PathIsDosDevice(_In_ LPCWSTR pszName);
HRESULT SHILAppend(_Inout_ LPITEMIDLIST pidl, _Inout_ LPITEMIDLIST *ppidl);
PIDLIST_ABSOLUTE SHELL_CIDA_ILCloneFull(_In_ const CIDA *pCIDA, _In_ UINT Index);
PIDLIST_ABSOLUTE SHELL_DataObject_ILCloneFullItem(_In_ IDataObject *pDO, _In_ UINT Index);
EXTERN_C HRESULT
IUnknown_InitializeCommand(
_In_ IUnknown *pUnk,

View File

@@ -78,6 +78,7 @@ END
#include "rgs_res.rc"
#include <reactos/manifest_dll.rc>
#include <reactos/manifest_hosted.rc>
1 TYPELIB "shell32_shldisp.tlb"

View File

@@ -832,8 +832,12 @@ HRESULT CMenuBand::_TrackContextMenu(IContextMenu * contextMenu, INT x, INT y)
return E_FAIL;
TRACE("Before Query\n");
const INT idCmdFirst = 100;
hr = contextMenu->QueryContextMenu(popup, 0, idCmdFirst, UINT_MAX, CMF_NORMAL);
UINT cmf = CMF_NORMAL;
if (GetKeyState(VK_SHIFT) < 0)
cmf |= CMF_EXTENDEDVERBS;
const UINT idCmdFirst = 100, idCmdLast = 0xffff;
hr = contextMenu->QueryContextMenu(popup, 0, idCmdFirst, idCmdLast, cmf);
if (FAILED_UNEXPECTEDLY(hr))
{
TRACE("Query failed\n");
@@ -857,6 +861,10 @@ HRESULT CMenuBand::_TrackContextMenu(IContextMenu * contextMenu, INT x, INT y)
TRACE("Before InvokeCommand\n");
CMINVOKECOMMANDINFO cmi = { sizeof(cmi), 0, hwnd };
cmi.lpVerb = MAKEINTRESOURCEA(uCommand - idCmdFirst);
if (GetKeyState(VK_SHIFT) < 0)
cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
if (GetKeyState(VK_CONTROL) < 0)
cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
hr = contextMenu->InvokeCommand(&cmi);
TRACE("InvokeCommand returned hr=%08x\n", hr);
}

View File

@@ -113,6 +113,7 @@ void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags);
BOOL SHELL_FS_HideExtension(LPCWSTR pwszPath);
LSTATUS AddClassKeyToArray(const WCHAR* szClass, HKEY* array, UINT* cKeys);
LSTATUS AddClsidKeyToArray(REFCLSID clsid, HKEY* array, UINT* cKeys);
#ifdef __cplusplus

View File

@@ -101,3 +101,16 @@ HRESULT WINAPI SHGetAttributesFromDataObject(IDataObject* pDataObject, DWORD dwA
return hr;
}
PIDLIST_ABSOLUTE SHELL_CIDA_ILCloneFull(_In_ const CIDA *pCIDA, _In_ UINT Index)
{
if (Index < pCIDA->cidl)
return ILCombine(HIDA_GetPIDLFolder(pCIDA), HIDA_GetPIDLItem(pCIDA, Index));
return NULL;
}
PIDLIST_ABSOLUTE SHELL_DataObject_ILCloneFullItem(_In_ IDataObject *pDO, _In_ UINT Index)
{
CDataObjectHIDA cida(pDO);
return SUCCEEDED(cida.hr()) ? SHELL_CIDA_ILCloneFull(cida, Index) : NULL;
}

View File

@@ -289,6 +289,13 @@ LSTATUS AddClassKeyToArray(const WCHAR* szClass, HKEY* array, UINT* cKeys)
return result;
}
LSTATUS AddClsidKeyToArray(REFCLSID clsid, HKEY* array, UINT* cKeys)
{
WCHAR path[6 + 38 + 1] = L"CLSID\\";
StringFromGUID2(clsid, path + 6, 38 + 1);
return AddClassKeyToArray(path, array, cKeys);
}
void AddFSClassKeysToArray(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, HKEY* array, UINT* cKeys)
{
// This function opens the association array keys in canonical order for filesystem items.
@@ -500,7 +507,7 @@ SHELL32_ShowPropertiesDialog(IDataObject *pdtobj)
return E_INVALIDARG;
pdtobj->AddRef();
if (!SHCreateThread(_ShowPropertiesDialogThread, pdtobj, CTF_INSIST | CTF_COINIT, NULL))
if (!SHCreateThread(_ShowPropertiesDialogThread, pdtobj, CTF_INSIST | CTF_COINIT | CTF_PROCESS_REF, NULL))
{
pdtobj->Release();
return HResultFromWin32(GetLastError());

Some files were not shown because too many files have changed in this diff Show More