mirror of
https://github.com/reactos/reactos
synced 2025-10-06 08:22:58 +02:00
Compare commits
45 Commits
revert-655
...
LoadCursor
Author | SHA1 | Date | |
---|---|---|---|
|
2254d69b33 | ||
|
7e89227a00 | ||
|
5f26356079 | ||
|
2aad6b133f | ||
|
fc7a74506b | ||
|
d23d61b63f | ||
|
4879915e54 | ||
|
d24675b63d | ||
|
df5affedce | ||
|
2cdd5eca7b | ||
|
a2777cd828 | ||
|
63935f857f | ||
|
674136bcd0 | ||
|
75db8c633a | ||
|
7b7c378188 | ||
|
9cf9126191 | ||
|
99f0937fd0 | ||
|
cd88a97115 | ||
|
3fe12f1a7c | ||
|
5e3f3f59df | ||
|
85d338ed65 | ||
|
29a56f326a | ||
|
55898a7ffd | ||
|
91af99323f | ||
|
99c0d53413 | ||
|
32d615fc10 | ||
|
0abd920db9 | ||
|
c43a638fc1 | ||
|
18a3d21dd7 | ||
|
6aed3b5117 | ||
|
9164419c9c | ||
|
6190a97df4 | ||
|
365c2c1ce3 | ||
|
e8b88cf879 | ||
|
3e6f65ffcd | ||
|
2d9a4b4a87 | ||
|
8398c9fcfb | ||
|
48c036e7e7 | ||
|
ab0e04c81d | ||
|
50271949e7 | ||
|
6cd97d8423 | ||
|
113b3d6261 | ||
|
cbb6603460 | ||
|
67d5a53839 | ||
|
7c3d3851b8 |
@@ -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;
|
||||
|
@@ -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\
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
18
base/applications/kbswitch/lang/pt-PT.rc
Normal file
18
base/applications/kbswitch/lang/pt-PT.rc
Normal 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
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
|
@@ -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 "Ní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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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(
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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)"
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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 dní"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@@ -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()
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
||||
|
@@ -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"
|
||||
|
@@ -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"
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -277,7 +277,7 @@ BEGIN
|
||||
5848 "系统通知"
|
||||
5849 "问题"
|
||||
5850 "启动 ReactOS"
|
||||
5851 "「开始」菜单"
|
||||
5851 "“开始”菜单"
|
||||
IDS_REACTOS_LOGOFF "ReactOS 注销"
|
||||
IDS_REACTOS_LOGON "ReactOS 登录"
|
||||
5854 "ReactOS 资源管理器"
|
||||
|
@@ -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)
|
||||
|
@@ -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 */
|
||||
|
@@ -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 "网络电缆没插好"
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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 ***
|
||||
|
@@ -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
|
||||
|
@@ -35,6 +35,7 @@ void ShellSettings::Load()
|
||||
|
||||
void CabinetStateSettings::Load()
|
||||
{
|
||||
this->cLength = sizeof(CABINETSTATE);
|
||||
ReadCabinetState(this, this->cLength);
|
||||
|
||||
/* Overrides */
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -34,7 +34,7 @@ STRINGTABLE
|
||||
IDS_OVERWRITEFILE "文件已经存在。\n\
|
||||
是否替换?"
|
||||
IDS_INVALID_FILENAME_TITLE "路径中包含无效字符"
|
||||
IDS_INVALID_FILENAME "文件名中不能包含任何以下字符::\n\
|
||||
IDS_INVALID_FILENAME "文件名不能包含下列任何字符之一:\n\
|
||||
/ : < > |"
|
||||
IDS_PATHNOTEXISTING "路径不存在"
|
||||
IDS_FILENOTEXISTING "文件不存在"
|
||||
|
@@ -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 不能确定此设备的设置。请参考此设备附带的文档,使用资源选项卡来设置配置。"
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
79
dll/win32/msutb/lang/pt-PT.rc
Normal file
79
dll/win32/msutb/lang/pt-PT.rc
Normal 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
|
||||
}
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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) >>"
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -78,6 +78,7 @@ END
|
||||
#include "rgs_res.rc"
|
||||
|
||||
#include <reactos/manifest_dll.rc>
|
||||
#include <reactos/manifest_hosted.rc>
|
||||
|
||||
1 TYPELIB "shell32_shldisp.tlb"
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
Reference in New Issue
Block a user