From 0ec50cf0853b0b396d868abbeebcbfe79ea1e278 Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Mon, 1 May 2023 19:58:37 +0200 Subject: [PATCH] [0.4.9][REGEDIT] Port back several improvements and crash-fixes 0.4.15-dev-5985-g 31fdaca8c014ef916be824685e3af09712aef4dc [REGEDIT] Strip redundant include, minor formatting (#5264) 0.4.15-dev-5970-g 9d7d3314b337d6ab5589a66c4c69a563dd8b2c78 [REGEDIT] Check whether pszSelectKey is NULL on CDN_FILEOK (#5255) 0.4.15-dev-5898-g 84e580b67e5a407afdd669c3204ef97d115d8cb0 [REGEDIT] Fix ListView selection and finding (#5150) (superseded) 0.4.15-dev-5802-g cce3eb93931163db4e463650e6f44e451e77a239 Fix buffer read past end problem. (#5146) CORE-15896 and CORE-18230 partially 0.4.15-dev-5753-g 1ee9ea451861f4059937ddb78070700950b95d43 [REGEDIT] Avoid buffer overflow in SelectNode. CORE-18602 (I left the wscpy-replacement at the end for the fixed size strings, as they would increase binary size, and are totally safe) partially 0.4.15-dev-5308-g 5daf5cd057d1b0499653196e73a1b2c410a7313a [REGEDIT] Use shell icons for the tree view (#4841) CORE-10764 0.4.15-dev-4850-g 568383c9b91c2e529ae4a3609e416ec8044cfc23 [REGEDIT] Fix issue at Find registry key (#4341) partially 0.4.15-dev-2265-g bebdfda8b76c342aabec28cb25fb787c7762a310 [REGEDIT]... Use newer file open dialog (#3571) 0.4.15-dev-1470-g 9de87871877451e6fe30a8c2e98015c9ead7b55a [REGEDIT] Display search finished messagebox when using Find Next (F3) menu item (#3371) CORE-17368 0.4.15-dev-1302-g 6aae5f4fdd87efe805f7bd44c601044b0cbe47c2 [REGEDIT] Make "finished find" messagebox owned by Regedit window (#3369) CORE-17367 0.4.15-dev-169-g 0461de33c5de3fee70a004b2f9c9e03ca70cfc67 [REGEDIT] Fix HeapFree() on the wrong variable (#2736) 0.4.14-dev-1484-g c83211277131a19e6c9a5ceb81f855a86c3be159 [REGEDIT] Fix tree view popup menu issues CORE-16887 0.4.14-dev-1468-g 763de230b2a630bf534b442677f4752880da7dc4 [REGEDIT] Fix inconsistent menu state for 'Permissions' CORE-16889 a more efficient solution than 0.4.14-dev-1467-g b280615b85d25bc31a03ab975fcafdf2da8075ba [REGEDIT] Crash on selecting 'New' on root item 'My computer' CORE-16888 0.4.14-dev-1466-g 13dd917589a9869585f10f38a05f90a52e9f9ddf [REGEDIT] CORE-16892 fr-FR Translation update 0.4.13-dev-464-g 6b9572728219f93c1109e83132b6dd6723151f84 [REGEDIT] Adjust ListView column widths (#1663) CORE-15187 0.4.12-dev-47-g 63a0ac04612a1a3f51543d4a2c35b71bfb1ebc0c [REGEDIT] Set background brush to child window (#1122) CORE-15442 0.4.11-dev-481-g efbebf983cc1708eca69194fa6461d6d54622707 [REGEDIT] Improve the layout of controls (#967) CORE-15187 0.4.11-dev-480-g e4c2cff6c8ba1bb6a61e89e0dd3527e255c81eb3 [REGEDIT] Don't paint background in WM_PAINT (#970) CORE-15187 0.4.11-dev-458-g 125db5ead912a90f288e3f75fa713e27430bf4f9 [REGEDIT] Trivial resizing code fix (#950) 0.4.11-dev-457-g b3231e0bf5dbf57bb9d657486db7ce3059cf2e31 [REGEDIT] Code formatting (#949) 0.4.10-dev-244-g b9415740a14918ff8aff0762fcfcaf395dc6617b [REGEDIT] Fix importing very big *.reg files (HEX values commonly) (#618) a few fragments only of 0.4.15-dev-5304-g 36a7f0dc7c10a9cf7c137ed617a0d419999a02f9 [REGEDIT] framewnd.c resize_frame_rect(), main.h strip externs before func declarations and reordering, treeview.c InitTreeViewImageLists() also port back a few selected translation improvements, and strip the suggestions-feature in older branches <= 0.4.13 which does not exist in 2k3sp2. --- base/applications/regedit/about.c | 2 +- base/applications/regedit/childwnd.c | 432 ++++--------------- base/applications/regedit/clb/lang/id-ID.rc | 10 +- base/applications/regedit/clb/lang/pl-PL.rc | 2 +- base/applications/regedit/clb/lang/sk-SK.rc | 2 +- base/applications/regedit/clb/lang/tr-TR.rc | 8 +- base/applications/regedit/find.c | 136 +++--- base/applications/regedit/framewnd.c | 77 ++-- base/applications/regedit/lang/bg-BG.rc | 3 +- base/applications/regedit/lang/cs-CZ.rc | 3 +- base/applications/regedit/lang/de-DE.rc | 3 +- base/applications/regedit/lang/el-GR.rc | 5 +- base/applications/regedit/lang/en-US.rc | 5 +- base/applications/regedit/lang/es-ES.rc | 5 +- base/applications/regedit/lang/fr-FR.rc | 13 +- base/applications/regedit/lang/he-IL.rc | 3 +- base/applications/regedit/lang/hu-HU.rc | 3 +- base/applications/regedit/lang/id-ID.rc | 21 +- base/applications/regedit/lang/it-IT.rc | 5 +- base/applications/regedit/lang/ja-JP.rc | 3 +- base/applications/regedit/lang/ko-KR.rc | 3 +- base/applications/regedit/lang/nl-NL.rc | 3 +- base/applications/regedit/lang/no-NO.rc | 5 +- base/applications/regedit/lang/pl-PL.rc | 9 +- base/applications/regedit/lang/pt-BR.rc | 3 +- base/applications/regedit/lang/pt-PT.rc | 37 +- base/applications/regedit/lang/ro-RO.rc | 3 +- base/applications/regedit/lang/ru-RU.rc | 15 +- base/applications/regedit/lang/sk-SK.rc | 7 +- base/applications/regedit/lang/sl-SI.rc | 11 +- base/applications/regedit/lang/sq-AL.rc | 7 +- base/applications/regedit/lang/sv-SE.rc | 3 +- base/applications/regedit/lang/th-TH.rc | 3 +- base/applications/regedit/lang/tr-TR.rc | 57 ++- base/applications/regedit/lang/uk-UA.rc | 3 +- base/applications/regedit/lang/zh-CN.rc | 5 +- base/applications/regedit/lang/zh-TW.rc | 51 ++- base/applications/regedit/listview.c | 20 +- base/applications/regedit/main.c | 4 +- base/applications/regedit/main.h | 95 ++-- base/applications/regedit/regedit.h | 1 + base/applications/regedit/regedit.rc | 3 - base/applications/regedit/regproc.c | 10 +- base/applications/regedit/res/computer.ico | Bin 2550 -> 0 bytes base/applications/regedit/res/folder.ico | Bin 2862 -> 0 bytes base/applications/regedit/res/folderopen.ico | Bin 2862 -> 0 bytes base/applications/regedit/resource.h | 6 - base/applications/regedit/settings.c | 3 +- base/applications/regedit/treeview.c | 138 +++++- 49 files changed, 530 insertions(+), 716 deletions(-) delete mode 100644 base/applications/regedit/res/computer.ico delete mode 100644 base/applications/regedit/res/folder.ico delete mode 100644 base/applications/regedit/res/folderopen.ico diff --git a/base/applications/regedit/about.c b/base/applications/regedit/about.c index ad01d6da700..6d4d23f75cc 100644 --- a/base/applications/regedit/about.c +++ b/base/applications/regedit/about.c @@ -26,7 +26,7 @@ void ShowAboutBox(HWND hWnd) { WCHAR AppStr[255]; LoadStringW(hInst, IDS_APP_TITLE, AppStr, COUNT_OF(AppStr)); - ShellAboutW(hWnd, AppStr, L"", LoadIconW(hInst, MAKEINTRESOURCEW(IDI_REGEDIT))); + ShellAboutW(hWnd, AppStr, NULL, LoadIconW(hInst, MAKEINTRESOURCEW(IDI_REGEDIT))); } /* EOF */ diff --git a/base/applications/regedit/childwnd.c b/base/applications/regedit/childwnd.c index d3a6cd0c5b7..44d9d978423 100644 --- a/base/applications/regedit/childwnd.c +++ b/base/applications/regedit/childwnd.c @@ -24,7 +24,6 @@ ChildWnd* g_pChildWnd; static int last_split; HBITMAP SizingPattern = 0; HBRUSH SizingBrush = 0; -static WCHAR Suggestions[256]; extern LPCWSTR get_root_key_name(HKEY hRootKey) { @@ -42,7 +41,10 @@ extern void ResizeWnd(int cx, int cy) { HDWP hdwp = BeginDeferWindowPos(4); RECT rt, rs, rb; - const int tHeight = 22; + const int nButtonWidth = 44; + const int nButtonHeight = 22; + int cyEdge = GetSystemMetrics(SM_CYEDGE); + const UINT uFlags = SWP_NOZORDER | SWP_NOACTIVATE; SetRect(&rt, 0, 0, cx, cy); cy = 0; if (hStatusBar != NULL) @@ -51,12 +53,33 @@ extern void ResizeWnd(int cx, int cy) cy = rs.bottom - rs.top; } GetWindowRect(g_pChildWnd->hAddressBtnWnd, &rb); - cx = g_pChildWnd->nSplitPos + SPLIT_WIDTH/2; - if (hdwp) hdwp = DeferWindowPos(hdwp, g_pChildWnd->hAddressBarWnd, 0, rt.left, rt.top, rt.right-rt.left - 2*tHeight, tHeight, SWP_NOZORDER|SWP_NOACTIVATE); - if (hdwp) hdwp = DeferWindowPos(hdwp, g_pChildWnd->hAddressBtnWnd, 0, rt.right - 2*tHeight, rt.top, 2*tHeight, tHeight, SWP_NOZORDER|SWP_NOACTIVATE); - if (hdwp) hdwp = DeferWindowPos(hdwp, g_pChildWnd->hTreeWnd, 0, rt.left, rt.top + tHeight+2, g_pChildWnd->nSplitPos-SPLIT_WIDTH/2-rt.left, rt.bottom-rt.top-cy, SWP_NOZORDER|SWP_NOACTIVATE); - if (hdwp) hdwp = DeferWindowPos(hdwp, g_pChildWnd->hListWnd, 0, rt.left+cx, rt.top + tHeight+2, rt.right-cx, rt.bottom-rt.top-cy, SWP_NOZORDER|SWP_NOACTIVATE); - if (hdwp) EndDeferWindowPos(hdwp); + cx = g_pChildWnd->nSplitPos + SPLIT_WIDTH / 2; + if (hdwp) + hdwp = DeferWindowPos(hdwp, g_pChildWnd->hAddressBarWnd, NULL, + rt.left, rt.top, + rt.right - rt.left - nButtonWidth, nButtonHeight, + uFlags); + if (hdwp) + hdwp = DeferWindowPos(hdwp, g_pChildWnd->hAddressBtnWnd, NULL, + rt.right - nButtonWidth, rt.top, + nButtonWidth, nButtonHeight, + uFlags); + if (hdwp) + hdwp = DeferWindowPos(hdwp, g_pChildWnd->hTreeWnd, NULL, + rt.left, + rt.top + nButtonHeight + cyEdge, + g_pChildWnd->nSplitPos - SPLIT_WIDTH/2 - rt.left, + rt.bottom - rt.top - cy - 2 * cyEdge, + uFlags); + if (hdwp) + hdwp = DeferWindowPos(hdwp, g_pChildWnd->hListWnd, NULL, + rt.left + cx, + rt.top + nButtonHeight + cyEdge, + rt.right - cx, + rt.bottom - rt.top - cy - 2 * cyEdge, + uFlags); + if (hdwp) + EndDeferWindowPos(hdwp); } /******************************************************************************* @@ -87,17 +110,6 @@ static void draw_splitbar(HWND hWnd, int x) ReleaseDC(hWnd, hdc); } -static void OnPaint(HWND hWnd) -{ - PAINTSTRUCT ps; - RECT rt; - - GetClientRect(hWnd, &rt); - BeginPaint(hWnd, &ps); - FillRect(ps.hdc, &rt, GetSysColorBrush(COLOR_BTNFACE)); - EndPaint(hWnd, &ps); -} - /******************************************************************************* * finish_splitbar [internal] * @@ -116,172 +128,6 @@ static void finish_splitbar(HWND hWnd, int x) ReleaseCapture(); } -/******************************************************************************* - * - * FUNCTION: ChildWnd_CmdWndProc(HWND, unsigned, WORD, LONG) - * - * PURPOSE: Processes WM_COMMAND messages for the main frame window. - * - */ - -static BOOL ChildWnd_CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - HTREEITEM hSelection; - HKEY hRootKey; - LPCWSTR keyPath, s; - WORD wID = LOWORD(wParam); - - UNREFERENCED_PARAMETER(message); - - switch (wID) - { - /* Parse the menu selections: */ - case ID_REGISTRY_EXIT: - DestroyWindow(hWnd); - break; - case ID_VIEW_REFRESH: - /* TODO */ - break; - case ID_TREE_EXPANDBRANCH: - (void)TreeView_Expand(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd), TVE_EXPAND); - break; - case ID_TREE_COLLAPSEBRANCH: - (void)TreeView_Expand(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd), TVE_COLLAPSE); - break; - case ID_TREE_RENAME: - SetFocus(g_pChildWnd->hTreeWnd); - (void)TreeView_EditLabel(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd)); - break; - case ID_TREE_DELETE: - hSelection = TreeView_GetSelection(g_pChildWnd->hTreeWnd); - keyPath = GetItemPath(g_pChildWnd->hTreeWnd, hSelection, &hRootKey); - - if (keyPath == 0 || *keyPath == 0) - { - MessageBeep(MB_ICONHAND); - } - else if (DeleteKey(hWnd, hRootKey, keyPath)) - DeleteNode(g_pChildWnd->hTreeWnd, 0); - break; - case ID_TREE_EXPORT: - ExportRegistryFile(g_pChildWnd->hTreeWnd); - break; - case ID_EDIT_FIND: - FindDialog(hWnd); - break; - case ID_EDIT_COPYKEYNAME: - hSelection = TreeView_GetSelection(g_pChildWnd->hTreeWnd); - keyPath = GetItemPath(g_pChildWnd->hTreeWnd, hSelection, &hRootKey); - CopyKeyName(hWnd, hRootKey, keyPath); - break; - case ID_EDIT_NEW_KEY: - CreateNewKey(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd)); - break; - case ID_EDIT_NEW_STRINGVALUE: - case ID_EDIT_NEW_BINARYVALUE: - case ID_EDIT_NEW_DWORDVALUE: - SendMessageW(hFrameWnd, WM_COMMAND, wParam, lParam); - break; - case ID_SWITCH_PANELS: - g_pChildWnd->nFocusPanel = !g_pChildWnd->nFocusPanel; - SetFocus(g_pChildWnd->nFocusPanel? g_pChildWnd->hListWnd: g_pChildWnd->hTreeWnd); - break; - default: - if ((wID >= ID_TREE_SUGGESTION_MIN) && (wID <= ID_TREE_SUGGESTION_MAX)) - { - s = Suggestions; - while(wID > ID_TREE_SUGGESTION_MIN) - { - if (*s) - s += wcslen(s) + 1; - wID--; - } - SelectNode(g_pChildWnd->hTreeWnd, s); - break; - } - return FALSE; - } - return TRUE; -} - -/******************************************************************************* - * - * Key suggestion - */ - -#define MIN(a,b) ((a < b) ? (a) : (b)) - -static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions, - size_t iSuggestionsLength) -{ - WCHAR szBuffer[256]; - WCHAR szLastFound[256]; - size_t i; - HKEY hOtherKey, hSubKey; - BOOL bFound; - - memset(pszSuggestions, 0, iSuggestionsLength * sizeof(*pszSuggestions)); - iSuggestionsLength--; - - /* Are we a root key in HKEY_CLASSES_ROOT? */ - if ((hRootKey == HKEY_CLASSES_ROOT) && pszKeyPath[0] && !wcschr(pszKeyPath, L'\\')) - { - do - { - bFound = FALSE; - - /* Check default key */ - if (QueryStringValue(hRootKey, pszKeyPath, NULL, - szBuffer, COUNT_OF(szBuffer)) == ERROR_SUCCESS) - { - /* Sanity check this key; it cannot be empty, nor can it be a - * loop back */ - if ((szBuffer[0] != L'\0') && _wcsicmp(szBuffer, pszKeyPath)) - { - if (RegOpenKeyW(hRootKey, szBuffer, &hOtherKey) == ERROR_SUCCESS) - { - lstrcpynW(pszSuggestions, L"HKCR\\", (int) iSuggestionsLength); - i = wcslen(pszSuggestions); - pszSuggestions += i; - iSuggestionsLength -= i; - - lstrcpynW(pszSuggestions, szBuffer, (int) iSuggestionsLength); - i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength); - pszSuggestions += i; - iSuggestionsLength -= i; - RegCloseKey(hOtherKey); - - bFound = TRUE; - wcscpy(szLastFound, szBuffer); - pszKeyPath = szLastFound; - } - } - } - } - while(bFound && (iSuggestionsLength > 0)); - - /* Check CLSID key */ - if (RegOpenKeyW(hRootKey, pszKeyPath, &hSubKey) == ERROR_SUCCESS) - { - if (QueryStringValue(hSubKey, L"CLSID", NULL, szBuffer, - COUNT_OF(szBuffer)) == ERROR_SUCCESS) - { - lstrcpynW(pszSuggestions, L"HKCR\\CLSID\\", (int)iSuggestionsLength); - i = wcslen(pszSuggestions); - pszSuggestions += i; - iSuggestionsLength -= i; - - lstrcpynW(pszSuggestions, szBuffer, (int)iSuggestionsLength); - i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength); - pszSuggestions += i; - iSuggestionsLength -= i; - } - RegCloseKey(hSubKey); - } - } -} - - LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { WNDPROC oldwndproc; @@ -303,16 +149,17 @@ LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam); } -static VOID -UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath) +VOID +UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath, BOOL bSelectNone) { LPCWSTR keyPath, rootName; LPWSTR fullPath; + DWORD cbFullPath; /* Wipe the listview, the status bar and the address bar if the root key was selected */ if (TreeView_GetParent(g_pChildWnd->hTreeWnd, hItem) == NULL) { - (void)ListView_DeleteAllItems(g_pChildWnd->hListWnd); + ListView_DeleteAllItems(g_pChildWnd->hListWnd); SendMessageW(hStatusBar, SB_SETTEXTW, 0, (LPARAM)NULL); SendMessageW(g_pChildWnd->hAddressBarWnd, WM_SETTEXT, 0, (LPARAM)NULL); return; @@ -325,35 +172,36 @@ UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath) if (keyPath) { - RefreshListView(g_pChildWnd->hListWnd, hRootKey, keyPath); + RefreshListView(g_pChildWnd->hListWnd, hRootKey, keyPath, bSelectNone); rootName = get_root_key_name(hRootKey); - fullPath = HeapAlloc(GetProcessHeap(), 0, (wcslen(rootName) + 1 + wcslen(keyPath) + 1) * sizeof(WCHAR)); + cbFullPath = (wcslen(rootName) + 1 + wcslen(keyPath) + 1) * sizeof(WCHAR); + fullPath = malloc(cbFullPath); if (fullPath) { /* set (correct) the address bar text */ if (keyPath[0] != L'\0') - swprintf(fullPath, L"%s\\%s", rootName, keyPath); + swprintf(fullPath, L"%s%s%s", rootName, keyPath[0]==L'\\'?L"":L"\\", keyPath); else fullPath = wcscpy(fullPath, rootName); SendMessageW(hStatusBar, SB_SETTEXTW, 0, (LPARAM)fullPath); SendMessageW(g_pChildWnd->hAddressBarWnd, WM_SETTEXT, 0, (LPARAM)fullPath); - HeapFree(GetProcessHeap(), 0, fullPath); + free(fullPath); /* disable hive manipulation items temporarily (enable only if necessary) */ - EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMenuFrame, ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMenuFrame, ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_GRAYED); /* compare the strings to see if we should enable/disable the "Load Hive" menus accordingly */ - if (!(_wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") && - _wcsicmp(rootName, L"HKEY_USERS"))) + if (_wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") != 0 || + _wcsicmp(rootName, L"HKEY_USERS") != 0) { /* * enable the unload menu item if at the root, otherwise * enable the load menu item if there is no slash in * keyPath (ie. immediate child selected) */ - if(keyPath[0] == L'\0') - EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_ENABLED); + if (keyPath[0] == UNICODE_NULL) + EnableMenuItem(hMenuFrame, ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_ENABLED); else if(!wcschr(keyPath, L'\\')) - EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hMenuFrame, ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_ENABLED); } } } @@ -366,13 +214,13 @@ UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath) * PURPOSE: Processes messages for the child windows. * * WM_COMMAND - process the application menu - * WM_PAINT - Paint the main window * WM_DESTROY - post a quit message and return * */ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { BOOL Result; + RECT rc; switch (message) { @@ -389,7 +237,7 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa if (!g_pChildWnd) return 0; wcsncpy(g_pChildWnd->szPath, buffer, MAX_PATH); - g_pChildWnd->nSplitPos = 250; + g_pChildWnd->nSplitPos = 190; g_pChildWnd->hWnd = hWnd; g_pChildWnd->hAddressBarWnd = CreateWindowExW(WS_EX_CLIENTEDGE, L"Edit", NULL, WS_CHILD | WS_VISIBLE | WS_CHILDWINDOW | WS_TABSTOP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, @@ -397,8 +245,9 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa g_pChildWnd->hAddressBtnWnd = CreateWindowExW(0, L"Button", L"\x00BB", WS_CHILD | WS_VISIBLE | WS_CHILDWINDOW | WS_TABSTOP | BS_TEXT | BS_CENTER | BS_VCENTER | BS_FLAT | BS_DEFPUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, (HMENU)0, hInst, 0); + GetClientRect(hWnd, &rc); g_pChildWnd->hTreeWnd = CreateTreeView(hWnd, g_pChildWnd->szPath, (HMENU) TREE_WINDOW); - g_pChildWnd->hListWnd = CreateListView(hWnd, (HMENU) LIST_WINDOW/*, g_pChildWnd->szPath*/); + g_pChildWnd->hListWnd = CreateListView(hWnd, (HMENU) LIST_WINDOW, rc.right - g_pChildWnd->nSplitPos); SetFocus(g_pChildWnd->hTreeWnd); /* set the address bar and button font */ @@ -425,15 +274,7 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa { PostMessageW(g_pChildWnd->hAddressBarWnd, WM_KEYUP, VK_RETURN, 0); } - - if (!ChildWnd_CmdWndProc(hWnd, message, wParam, lParam)) - { - goto def; - } break; - case WM_PAINT: - OnPaint(hWnd); - return 0; case WM_SETCURSOR: if (LOWORD(lParam) == HTCLIENT) { @@ -543,107 +384,26 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa break; case WM_NOTIFY: - if ((int)wParam == TREE_WINDOW && g_pChildWnd != NULL) + if (g_pChildWnd == NULL) break; + + if (((LPNMHDR)lParam)->idFrom == TREE_WINDOW) { - switch (((LPNMHDR)lParam)->code) - { - case TVN_ITEMEXPANDING: - return !OnTreeExpanding(g_pChildWnd->hTreeWnd, (NMTREEVIEW*)lParam); - case TVN_SELCHANGED: - { - NMTREEVIEW* pnmtv = (NMTREEVIEW*)lParam; - /* Get the parent of the current item */ - HTREEITEM hParentItem = TreeView_GetParent(g_pChildWnd->hTreeWnd, pnmtv->itemNew.hItem); + if (!TreeWndNotifyProc(g_pChildWnd->hListWnd, wParam, lParam, &Result)) + goto def; - UpdateAddress(pnmtv->itemNew.hItem, NULL, NULL); - - /* - * Disable Delete/Rename menu options for 'My Computer' (first item so doesn't have any parent) - * and HKEY_* keys (their parent is 'My Computer' and the previous remark applies). - */ - if (!hParentItem || !TreeView_GetParent(g_pChildWnd->hTreeWnd, hParentItem)) - { - EnableMenuItem(hMenuFrame , ID_EDIT_DELETE, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(hMenuFrame , ID_EDIT_RENAME, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(hPopupMenus, ID_TREE_DELETE, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(hPopupMenus, ID_TREE_RENAME, MF_BYCOMMAND | MF_GRAYED); - } - else - { - EnableMenuItem(hMenuFrame , ID_EDIT_DELETE, MF_BYCOMMAND | MF_ENABLED); - EnableMenuItem(hMenuFrame , ID_EDIT_RENAME, MF_BYCOMMAND | MF_ENABLED); - EnableMenuItem(hPopupMenus, ID_TREE_DELETE, MF_BYCOMMAND | MF_ENABLED); - EnableMenuItem(hPopupMenus, ID_TREE_RENAME, MF_BYCOMMAND | MF_ENABLED); - } - - break; - } - case NM_SETFOCUS: - g_pChildWnd->nFocusPanel = 0; - break; - case TVN_BEGINLABELEDIT: - { - LPNMTVDISPINFO ptvdi; - /* cancel label edit for rootkeys */ - ptvdi = (LPNMTVDISPINFO) lParam; - if (!TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem) || - !TreeView_GetParent(g_pChildWnd->hTreeWnd, TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem))) - return TRUE; - break; - } - case TVN_ENDLABELEDIT: - { - LPCWSTR keyPath; - HKEY hRootKey; - HKEY hKey = NULL; - LPNMTVDISPINFO ptvdi; - LONG lResult = TRUE; - WCHAR szBuffer[MAX_PATH]; - - ptvdi = (LPNMTVDISPINFO) lParam; - if (ptvdi->item.pszText) - { - keyPath = GetItemPath(g_pChildWnd->hTreeWnd, TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem), &hRootKey); - _snwprintf(szBuffer, COUNT_OF(szBuffer), L"%s\\%s", keyPath, ptvdi->item.pszText); - keyPath = GetItemPath(g_pChildWnd->hTreeWnd, ptvdi->item.hItem, &hRootKey); - if (RegOpenKeyExW(hRootKey, szBuffer, 0, KEY_READ, &hKey) == ERROR_SUCCESS) - { - lResult = FALSE; - RegCloseKey(hKey); - (void)TreeView_EditLabel(g_pChildWnd->hTreeWnd, ptvdi->item.hItem); - } - else - { - if (RenameKey(hRootKey, keyPath, ptvdi->item.pszText) != ERROR_SUCCESS) - lResult = FALSE; - else - UpdateAddress(ptvdi->item.hItem, hRootKey, szBuffer); - } - return lResult; - } - } - default: - return 0; - } + return Result; } else { - if ((int)wParam == LIST_WINDOW && g_pChildWnd != NULL) + if (((LPNMHDR)lParam)->idFrom == LIST_WINDOW) { - switch (((LPNMHDR)lParam)->code) - { - case NM_SETFOCUS: - g_pChildWnd->nFocusPanel = 1; - break; - default: - if(!ListWndNotifyProc(g_pChildWnd->hListWnd, wParam, lParam, &Result)) - { - goto def; - } - return Result; - break; - } + if (!ListWndNotifyProc(g_pChildWnd->hListWnd, wParam, lParam, &Result)) + goto def; + + return Result; } + else + goto def; } break; @@ -697,13 +457,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa HMENU hContextMenu; TVITEMW item; MENUITEMINFOW mii; - WCHAR resource[256]; WCHAR buffer[256]; - LPWSTR s; - LPCWSTR keyPath; - HKEY hRootKey; - int iLastPos; - WORD wID; + BOOL isRoot; pt.x = (short) LOWORD(lParam); pt.y = (short) HIWORD(lParam); @@ -728,18 +483,25 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa hti.pt.x = pt.x; hti.pt.y = pt.y; ScreenToClient(g_pChildWnd->hTreeWnd, &hti.pt); - (void)TreeView_HitTest(g_pChildWnd->hTreeWnd, &hti); + TreeView_HitTest(g_pChildWnd->hTreeWnd, &hti); } if (hti.flags & TVHT_ONITEM) { + TreeView_SelectItem(g_pChildWnd->hTreeWnd, hti.hItem); + + isRoot = (TreeView_GetParent(g_pChildWnd->hTreeWnd, hti.hItem) == NULL); hContextMenu = GetSubMenu(hPopupMenus, PM_TREECONTEXT); - (void)TreeView_SelectItem(g_pChildWnd->hTreeWnd, hti.hItem); + + /* idx1 'New' PopupMenu */ + EnableMenuItem(hContextMenu, 1, isRoot? MF_BYPOSITION|MF_DISABLED|MF_GRAYED : MF_BYPOSITION|MF_ENABLED); + /* idx8 'Permissions' */ + EnableMenuItem(hContextMenu, 8, isRoot? MF_BYPOSITION|MF_DISABLED|MF_GRAYED : MF_BYPOSITION|MF_ENABLED); memset(&item, 0, sizeof(item)); item.mask = TVIF_STATE | TVIF_CHILDREN; item.hItem = hti.hItem; - (void)TreeView_GetItem(g_pChildWnd->hTreeWnd, &item); + TreeView_GetItem(g_pChildWnd->hTreeWnd, &item); /* Set the Expand/Collapse menu item appropriately */ LoadStringW(hInst, (item.state & TVIS_EXPANDED) ? IDS_COLLAPSE : IDS_EXPAND, buffer, COUNT_OF(buffer)); @@ -750,49 +512,7 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa mii.wID = (item.state & TVIS_EXPANDED) ? ID_TREE_COLLAPSEBRANCH : ID_TREE_EXPANDBRANCH; mii.dwTypeData = (LPWSTR) buffer; SetMenuItemInfo(hContextMenu, 0, TRUE, &mii); - - /* Remove any existing suggestions */ - memset(&mii, 0, sizeof(mii)); - mii.cbSize = sizeof(mii); - mii.fMask = MIIM_ID; - GetMenuItemInfo(hContextMenu, GetMenuItemCount(hContextMenu) - 1, TRUE, &mii); - if ((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX)) - { - do - { - iLastPos = GetMenuItemCount(hContextMenu) - 1; - GetMenuItemInfo(hContextMenu, iLastPos, TRUE, &mii); - RemoveMenu(hContextMenu, iLastPos, MF_BYPOSITION); - } - while((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX)); - } - - /* Come up with suggestions */ - keyPath = GetItemPath(g_pChildWnd->hTreeWnd, NULL, &hRootKey); - SuggestKeys(hRootKey, keyPath, Suggestions, COUNT_OF(Suggestions)); - if (Suggestions[0]) - { - AppendMenu(hContextMenu, MF_SEPARATOR, 0, NULL); - - LoadStringW(hInst, IDS_GOTO_SUGGESTED_KEY, resource, COUNT_OF(resource)); - - s = Suggestions; - wID = ID_TREE_SUGGESTION_MIN; - while(*s && (wID <= ID_TREE_SUGGESTION_MAX)) - { - _snwprintf(buffer, COUNT_OF(buffer), resource, s); - - memset(&mii, 0, sizeof(mii)); - mii.cbSize = sizeof(mii); - mii.fMask = MIIM_STRING | MIIM_ID; - mii.wID = wID++; - mii.dwTypeData = buffer; - InsertMenuItem(hContextMenu, GetMenuItemCount(hContextMenu), TRUE, &mii); - - s += wcslen(s) + 1; - } - } - TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, g_pChildWnd->hWnd, NULL); + TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hFrameWnd, NULL); } } break; diff --git a/base/applications/regedit/clb/lang/id-ID.rc b/base/applications/regedit/clb/lang/id-ID.rc index d44ee237923..dfd725be45c 100644 --- a/base/applications/regedit/clb/lang/id-ID.rc +++ b/base/applications/regedit/clb/lang/id-ID.rc @@ -10,13 +10,13 @@ BEGIN CHECKBOX "&Batas", 1713, 10, 30, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Urut", 1705, 10, 40, 26, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Berita&hu", 1706, 10, 50, 32, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "V&ert. Bar Gulung", 1707, 10, 60, 64, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Multipel Pilihan", -1, 79, 20, 72, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED + CHECKBOX "&Vert. Bar Gulung", 1707, 10, 60, 64, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Mu<ipel Pilihan", -1, 79, 20, 72, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED CHECKBOX "&Perluasan Pilihan", -1, 79, 30, 77, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED - CHECKBOX "&Popout Headings", 1714, 79, 40, 68, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Springy Kolom", 1715, 79, 50, 66, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Judul Popout", 1714, 79, 40, 68, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kolom kenyal", 1715, 79, 50, 66, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP GROUPBOX "Gaya Dasar", -1, 6, 80, 158, 34 - CHECKBOX "&Terlihat", 1701, 10, 92, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "T&erlihat", 1701, 10, 92, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Dimatikan", 1702, 10, 102, 41, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Grup", 1703, 79, 92, 32, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Tab Henti", 1704, 79, 102, 44, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP diff --git a/base/applications/regedit/clb/lang/pl-PL.rc b/base/applications/regedit/clb/lang/pl-PL.rc index e41a2d4b8c4..d02fc6a8cf3 100644 --- a/base/applications/regedit/clb/lang/pl-PL.rc +++ b/base/applications/regedit/clb/lang/pl-PL.rc @@ -3,7 +3,7 @@ * caemyr@gmail.com * https://sourceforge.net/projects/reactospl * Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (August, 2011) - * UTF-8 conversion by Caemyr (May, 2011) + * UTF-8 conversion by Caemyr (May, 2011) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT diff --git a/base/applications/regedit/clb/lang/sk-SK.rc b/base/applications/regedit/clb/lang/sk-SK.rc index 39c1aac306e..52374a435e3 100644 --- a/base/applications/regedit/clb/lang/sk-SK.rc +++ b/base/applications/regedit/clb/lang/sk-SK.rc @@ -1,6 +1,6 @@ /* TRANSLATOR : Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk) * DATE OF TR.: 07-07-2008 - */ + */ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT diff --git a/base/applications/regedit/clb/lang/tr-TR.rc b/base/applications/regedit/clb/lang/tr-TR.rc index f6bbeae5189..035ea2a12a8 100644 --- a/base/applications/regedit/clb/lang/tr-TR.rc +++ b/base/applications/regedit/clb/lang/tr-TR.rc @@ -4,10 +4,10 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT IDD_COLUMNLISTBOXSTYLES DIALOGEX 0, 0, 227, 215 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Dikeçli Dizelge Kutusu Biçimleri" +CAPTION "Sütun Listesi Kutusu Biçimleri" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - GROUPBOX "Dikeçli Dizelge Kutusu Biçimleri", -1, 6, 7, 158, 71 + GROUPBOX "Sütün Listesi Kutusu Biçimleri", -1, 6, 7, 158, 71 CHECKBOX "&Ölçünlü", 1710, 10, 20, 42, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Hudut", 1713, 10, 30, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Diz", 1705, 10, 40, 26, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP @@ -16,8 +16,8 @@ BEGIN CHECKBOX "&Çoklu Seçim", -1, 79, 20, 72, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED CHECKBOX "&Genişletilmiş Seçim", -1, 79, 30, 77, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED CHECKBOX "&Açılan Başlıklar", 1714, 79, 40, 68, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Esnek Dikeçler", 1715, 79, 50, 66, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - GROUPBOX "Başlıca Biçimler", -1, 6, 80, 158, 34 + CHECKBOX "&Esnek Sütunlar", 1715, 79, 50, 66, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + GROUPBOX "Temel Biçimler", -1, 6, 80, 158, 34 CHECKBOX "Gö&rünür", 1701, 10, 92, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Edi&lgin", 1702, 10, 102, 41, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Öbe&kleme", 1703, 79, 92, 32, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP diff --git a/base/applications/regedit/find.c b/base/applications/regedit/find.c index 98fe43f00bc..e84b26ddcde 100644 --- a/base/applications/regedit/find.c +++ b/base/applications/regedit/find.c @@ -32,7 +32,7 @@ static BOOL s_bAbort; static DWORD s_dwFlags; static WCHAR s_szName[MAX_PATH]; -static DWORD s_cbName; +static DWORD s_cchName; static const WCHAR s_empty[] = L""; static const WCHAR s_backslash[] = L"\\"; @@ -87,41 +87,31 @@ static BOOL CompareName(LPCWSTR pszName1, LPCWSTR pszName2) } } -static BOOL -CompareData( - DWORD dwType, - LPCWSTR psz1, - LPCWSTR psz2) +static BOOL MatchString(LPCWCH pch1, INT cch1, LPCWCH pch2, INT cch2) { - INT i, cch1 = wcslen(psz1), cch2 = wcslen(psz2); - if (dwType == REG_SZ || dwType == REG_EXPAND_SZ) - { - if (s_dwFlags & RSF_WHOLESTRING) - { - if (s_dwFlags & RSF_MATCHCASE) - return 2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, 0, - psz1, cch1, psz2, cch2); - else - return 2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, - NORM_IGNORECASE, psz1, cch1, psz2, cch2); - } + INT i; + DWORD dwNorm = ((s_dwFlags & RSF_MATCHCASE) ? NORM_IGNORECASE : 0); - for(i = 0; i <= cch1 - cch2; i++) - { - if (s_dwFlags & RSF_MATCHCASE) - { - if (2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, 0, - psz1 + i, cch2, psz2, cch2)) - return TRUE; - } - else - { - if (2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, - NORM_IGNORECASE, psz1 + i, cch2, psz2, cch2)) - return TRUE; - } - } + if (s_dwFlags & RSF_WHOLESTRING) + return 2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, dwNorm, pch1, cch1, pch2, cch2); + + if (cch1 < cch2) + return FALSE; + + for (i = 0; i <= cch1 - cch2; i++) + { + if (2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, dwNorm, pch1 + i, cch2, pch2, cch2)) + return TRUE; } + + return FALSE; +} + +static BOOL MatchData(DWORD dwType, LPCVOID pv1, DWORD cb1) +{ + if (dwType == REG_SZ || dwType == REG_EXPAND_SZ || dwType == REG_MULTI_SZ) + return MatchString(pv1, (INT)(cb1 / sizeof(WCHAR)), s_szFindWhat, lstrlenW(s_szFindWhat)); + return FALSE; } @@ -143,7 +133,7 @@ BOOL RegFindRecurse( LONG lResult; WCHAR szSubKey[MAX_PATH]; DWORD i, c, cb, type; - BOOL fPast = FALSE; + BOOL fPast; LPWSTR *ppszNames = NULL; LPBYTE pb = NULL; @@ -160,9 +150,6 @@ BOOL RegFindRecurse( if (lResult != ERROR_SUCCESS) return FALSE; - if (pszValueName == NULL) - pszValueName = s_empty; - lResult = RegQueryInfoKeyW(hSubKey, NULL, NULL, NULL, NULL, NULL, NULL, &c, NULL, NULL, NULL, NULL); if (lResult != ERROR_SUCCESS) @@ -177,8 +164,8 @@ BOOL RegFindRecurse( if (DoEvents()) goto err; - s_cbName = MAX_PATH * sizeof(WCHAR); - lResult = RegEnumValueW(hSubKey, i, s_szName, &s_cbName, NULL, NULL, + s_cchName = _countof(s_szName); + lResult = RegEnumValueW(hSubKey, i, s_szName, &s_cchName, NULL, NULL, NULL, &cb); if (lResult == ERROR_NO_MORE_ITEMS) { @@ -187,7 +174,7 @@ BOOL RegFindRecurse( } if (lResult != ERROR_SUCCESS) goto err; - if (s_cbName >= MAX_PATH * sizeof(WCHAR)) + if (s_cchName >= _countof(s_szName)) continue; ppszNames[i] = _wcsdup(s_szName); @@ -195,6 +182,7 @@ BOOL RegFindRecurse( qsort(ppszNames, c, sizeof(LPWSTR), compare); + fPast = (pszValueName == NULL); for(i = 0; i < c; i++) { if (DoEvents()) @@ -212,10 +200,7 @@ BOOL RegFindRecurse( CompareName(ppszNames[i], s_szFindWhat)) { *ppszFoundSubKey = _wcsdup(szSubKey); - if (ppszNames[i][0] == 0) - *ppszFoundValueName = NULL; - else - *ppszFoundValueName = _wcsdup(ppszNames[i]); + *ppszFoundValueName = _wcsdup(ppszNames[i]); goto success; } @@ -231,14 +216,10 @@ BOOL RegFindRecurse( if (lResult != ERROR_SUCCESS) goto err; - if ((s_dwFlags & RSF_LOOKATDATA) && - CompareData(type, (LPWSTR) pb, s_szFindWhat)) + if ((s_dwFlags & RSF_LOOKATDATA) && MatchData(type, pb, cb)) { *ppszFoundSubKey = _wcsdup(szSubKey); - if (ppszNames[i][0] == 0) - *ppszFoundValueName = NULL; - else - *ppszFoundValueName = _wcsdup(ppszNames[i]); + *ppszFoundValueName = _wcsdup(ppszNames[i]); goto success; } free(pb); @@ -267,8 +248,8 @@ BOOL RegFindRecurse( if (DoEvents()) goto err; - s_cbName = MAX_PATH * sizeof(WCHAR); - lResult = RegEnumKeyExW(hSubKey, i, s_szName, &s_cbName, NULL, NULL, + s_cchName = _countof(s_szName); + lResult = RegEnumKeyExW(hSubKey, i, s_szName, &s_cchName, NULL, NULL, NULL, NULL); if (lResult == ERROR_NO_MORE_ITEMS) { @@ -277,7 +258,7 @@ BOOL RegFindRecurse( } if (lResult != ERROR_SUCCESS) goto err; - if (s_cbName >= MAX_PATH * sizeof(WCHAR)) + if (s_cchName >= _countof(s_szName)) continue; ppszNames[i] = _wcsdup(s_szName); @@ -366,17 +347,18 @@ BOOL RegFindWalk( WCHAR szKeyName[MAX_PATH]; WCHAR szSubKey[MAX_PATH]; LPWSTR pch; - BOOL fPast; + BOOL fPast, fKeyMatched; LPWSTR *ppszNames = NULL; hBaseKey = *phKey; + + if (wcslen(pszSubKey) >= _countof(szSubKey)) + return FALSE; + if (RegFindRecurse(hBaseKey, pszSubKey, pszValueName, ppszFoundSubKey, ppszFoundValueName)) return TRUE; - if (wcslen(pszSubKey) >= MAX_PATH) - return FALSE; - wcscpy(szSubKey, pszSubKey); while(szSubKey[0] != 0) { @@ -415,8 +397,8 @@ BOOL RegFindWalk( if (DoEvents()) goto err; - s_cbName = MAX_PATH * sizeof(WCHAR); - lResult = RegEnumKeyExW(hSubKey, i, s_szName, &s_cbName, + s_cchName = _countof(s_szName); + lResult = RegEnumKeyExW(hSubKey, i, s_szName, &s_cchName, NULL, NULL, NULL, NULL); if (lResult == ERROR_NO_MORE_ITEMS) { @@ -464,7 +446,8 @@ BOOL RegFindWalk( goto success; } - if (RegFindRecurse(hSubKey, ppszNames[i], NULL, + fKeyMatched = (_wcsicmp(ppszNames[i], szKeyName) == 0); + if (RegFindRecurse(hSubKey, ppszNames[i], (fKeyMatched ? pszValueName : NULL), ppszFoundSubKey, ppszFoundValueName)) { LPWSTR psz = *ppszFoundSubKey; @@ -687,10 +670,16 @@ BOOL FindNext(HWND hWnd) { GetKeyName(szFullKey, COUNT_OF(szFullKey), hKeyRoot, pszFoundSubKey); SelectNode(g_pChildWnd->hTreeWnd, szFullKey); - SetValueName(g_pChildWnd->hListWnd, pszFoundValueName); free(pszFoundSubKey); - free(pszFoundValueName); - SetFocus(g_pChildWnd->hListWnd); + + if (pszFoundValueName != NULL) + { + SetValueName(g_pChildWnd->hListWnd, pszFoundValueName); + free(pszFoundValueName); + SetFocus(g_pChildWnd->hListWnd); + } + else + SetFocus(g_pChildWnd->hTreeWnd); } return fSuccess || s_bAbort; } @@ -810,18 +799,23 @@ static INT_PTR CALLBACK FindDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPAR return iResult; } +void FindNextMessageBox(HWND hWnd) +{ + if (!FindNext(hWnd)) + { + WCHAR msg[128], caption[128]; + + LoadStringW(hInst, IDS_FINISHEDFIND, msg, COUNT_OF(msg)); + LoadStringW(hInst, IDS_APP_TITLE, caption, COUNT_OF(caption)); + MessageBoxW(hWnd, msg, caption, MB_ICONINFORMATION); + } +} + void FindDialog(HWND hWnd) { if (DialogBoxParamW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_FIND), hWnd, FindDialogProc, 0) != 0) { - if (!FindNext(hWnd)) - { - WCHAR msg[128], caption[128]; - - LoadStringW(hInst, IDS_FINISHEDFIND, msg, COUNT_OF(msg)); - LoadStringW(hInst, IDS_APP_TITLE, caption, COUNT_OF(caption)); - MessageBoxW(0, msg, caption, MB_ICONINFORMATION); - } + FindNextMessageBox(hWnd); } } diff --git a/base/applications/regedit/framewnd.c b/base/applications/regedit/framewnd.c index 7bddbf81587..b7a88c33eb1 100644 --- a/base/applications/regedit/framewnd.c +++ b/base/applications/regedit/framewnd.c @@ -33,27 +33,19 @@ static WCHAR s_szFavoritesRegKey[] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites"; static BOOL bInMenuLoop = FALSE; /* Tells us if we are in the menu loop */ - /******************************************************************************* * Local module support methods */ static void resize_frame_rect(HWND hWnd, PRECT prect) { - RECT rt; - /* - if (IsWindowVisible(hToolBar)) { - SendMessageW(hToolBar, WM_SIZE, 0, 0); - GetClientRect(hToolBar, &rt); - prect->top = rt.bottom+3; - prect->bottom -= rt.bottom+3; - } - */ if (IsWindowVisible(hStatusBar)) { + RECT rt; + SetupStatusBar(hWnd, TRUE); - GetClientRect(hStatusBar, &rt); - prect->bottom -= rt.bottom; + GetWindowRect(hStatusBar, &rt); + prect->bottom -= rt.bottom - rt.top; } MoveWindow(g_pChildWnd->hWnd, prect->left, prect->top, prect->right, prect->bottom, TRUE); } @@ -287,7 +279,7 @@ static BOOL InitOpenFileName(HWND hWnd, OPENFILENAME* pofn) pofn->nMaxFile = _MAX_PATH; pofn->lpstrFileTitle = FileTitleBuffer; pofn->nMaxFileTitle = _MAX_PATH; - pofn->Flags = OFN_HIDEREADONLY; + pofn->Flags = OFN_EXPLORER | OFN_HIDEREADONLY; pofn->lpstrDefExt = L"reg"; return TRUE; } @@ -389,7 +381,7 @@ static BOOL LoadHive(HWND hWnd) /* refresh tree and list views */ RefreshTreeView(g_pChildWnd->hTreeWnd); pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey); - RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath); + RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE); } else { @@ -427,7 +419,7 @@ static BOOL UnloadHive(HWND hWnd) /* refresh tree and list views */ RefreshTreeView(g_pChildWnd->hTreeWnd); pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey); - RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath); + RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE); } else { @@ -524,7 +516,7 @@ static BOOL ImportRegistryFile(HWND hWnd) /* refresh tree and list views */ RefreshTreeView(g_pChildWnd->hTreeWnd); pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot); - RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, pszKeyPath); + RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, pszKeyPath, TRUE); return bRet; } @@ -573,7 +565,7 @@ static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, W { GetWindowTextW(hwndExportBranchText, pszSelectedKey, _MAX_PATH); } - else + else if (pszSelectedKey) { pszSelectedKey[0] = L'\0'; } @@ -883,7 +875,7 @@ static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType) return FALSE; } - RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath); + RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE); /* locate the newly added value, and get ready to rename it */ memset(&lvfi, 0, sizeof(lvfi)); @@ -891,7 +883,12 @@ static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType) lvfi.psz = szNewValue; iIndex = ListView_FindItem(g_pChildWnd->hListWnd, -1, &lvfi); if (iIndex >= 0) + { + ListView_SetItemState(g_pChildWnd->hListWnd, iIndex, + LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); + ListView_EnsureVisible(g_pChildWnd->hListWnd, iIndex, FALSE); (void)ListView_EditLabel(g_pChildWnd->hListWnd, iIndex); + } return TRUE; } @@ -1134,11 +1131,11 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { case ID_EDIT_MODIFY: if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE)) - RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath); + RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE); break; case ID_EDIT_MODIFY_BIN: if (valueName && ModifyValue(hWnd, hKey, valueName, TRUE)) - RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath); + RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE); break; case ID_EDIT_RENAME: if (GetFocus() == g_pChildWnd->hListWnd) @@ -1186,7 +1183,7 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) item = ni; } - RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath); + RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE); if(errs > 0) { LoadStringW(hInst, IDS_ERR_DELVAL_CAPTION, caption, COUNT_OF(caption)); @@ -1229,7 +1226,7 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) FindDialog(hWnd); break; case ID_EDIT_FINDNEXT: - FindNext(hWnd); + FindNextMessageBox(hWnd); break; case ID_EDIT_COPYKEYNAME: CopyKeyName(hWnd, hKeyRoot, keyPath); @@ -1249,7 +1246,7 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case ID_VIEW_REFRESH: RefreshTreeView(g_pChildWnd->hTreeWnd); keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot); - RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath); + RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, TRUE); break; /*case ID_OPTIONS_TOOLBAR:*/ /* toggle_child(hWnd, LOWORD(wParam), hToolBar);*/ @@ -1257,6 +1254,34 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case ID_EDIT_NEW_KEY: CreateNewKey(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd)); break; + case ID_TREE_EXPANDBRANCH: + TreeView_Expand(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd), TVE_EXPAND); + break; + case ID_TREE_COLLAPSEBRANCH: + TreeView_Expand(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd), TVE_COLLAPSE); + break; + case ID_TREE_RENAME: + SetFocus(g_pChildWnd->hTreeWnd); + TreeView_EditLabel(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd)); + break; + case ID_TREE_DELETE: + keyPath = GetItemPath(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd), &hKeyRoot); + if (keyPath == 0 || *keyPath == 0) + MessageBeep(MB_ICONHAND); + else if (DeleteKey(hWnd, hKeyRoot, keyPath)) + DeleteNode(g_pChildWnd->hTreeWnd, 0); + break; + case ID_TREE_EXPORT: + ExportRegistryFile(g_pChildWnd->hTreeWnd); + break; + case ID_TREE_PERMISSIONS: + keyPath = GetItemPath(g_pChildWnd->hTreeWnd, TreeView_GetSelection(g_pChildWnd->hTreeWnd), &hKeyRoot); + RegKeyEditPermissions(hWnd, hKeyRoot, NULL, keyPath); + break; + case ID_SWITCH_PANELS: + g_pChildWnd->nFocusPanel = !g_pChildWnd->nFocusPanel; + SetFocus(g_pChildWnd->nFocusPanel? g_pChildWnd->hListWnd: g_pChildWnd->hTreeWnd); + break; default: if ((LOWORD(wParam) >= ID_FAVORITES_MIN) && (LOWORD(wParam) <= ID_FAVORITES_MAX)) { @@ -1303,14 +1328,16 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { + RECT rc; switch (message) { case WM_CREATE: // For now, the Help dialog item is disabled because of lacking of HTML Help support EnableMenuItem(GetMenu(hWnd), ID_HELP_HELPTOPICS, MF_BYCOMMAND | MF_GRAYED); + GetClientRect(hWnd, &rc); CreateWindowExW(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE, - CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, - hWnd, (HMENU)0, hInst, 0); + rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, + hWnd, (HMENU)0, hInst, 0); break; case WM_COMMAND: if (!_CmdWndProc(hWnd, message, wParam, lParam)) diff --git a/base/applications/regedit/lang/bg-BG.rc b/base/applications/regedit/lang/bg-BG.rc index 80e6c4a10ee..555122d447c 100644 --- a/base/applications/regedit/lang/bg-BG.rc +++ b/base/applications/regedit/lang/bg-BG.rc @@ -134,7 +134,7 @@ BEGIN MENUITEM "&Преименуване", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Износ", ID_TREE_EXPORT - MENUITEM "&Права...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Права...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Запомняне стойността на ключа", ID_EDIT_COPYKEYNAME END @@ -393,7 +393,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Разгръщане" IDS_COLLAPSE "&Свиване" - IDS_GOTO_SUGGESTED_KEY "&Отиване на '%s'" IDS_FINISHEDFIND "Търсенето в регистъра приключи." END diff --git a/base/applications/regedit/lang/cs-CZ.rc b/base/applications/regedit/lang/cs-CZ.rc index fe450829e22..cdee46f2277 100644 --- a/base/applications/regedit/lang/cs-CZ.rc +++ b/base/applications/regedit/lang/cs-CZ.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Přejmenovat", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exportovat", ID_TREE_EXPORT - MENUITEM "Oprá&vnění...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "Oprá&vnění...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "Z&kopírovat název klíče", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Rozbalit" IDS_COLLAPSE "&Sbalit" - IDS_GOTO_SUGGESTED_KEY "&Jít na '%s'" IDS_FINISHEDFIND "Prohledávání registru bylo dokončeno." END diff --git a/base/applications/regedit/lang/de-DE.rc b/base/applications/regedit/lang/de-DE.rc index 16ad2cf1fe2..0618ae01da1 100644 --- a/base/applications/regedit/lang/de-DE.rc +++ b/base/applications/regedit/lang/de-DE.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Umbenennen", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exportieren", ID_TREE_EXPORT - MENUITEM "&Berechtigungen...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Berechtigungen...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "S&chlüsselnamen kopieren", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expandieren" IDS_COLLAPSE "&Schließen" - IDS_GOTO_SUGGESTED_KEY "&Gehe zu '%s'" IDS_FINISHEDFIND "Durchsuchen der Registry beendet." END diff --git a/base/applications/regedit/lang/el-GR.rc b/base/applications/regedit/lang/el-GR.rc index edd1bfdc2ad..3c250c4a71e 100644 --- a/base/applications/regedit/lang/el-GR.rc +++ b/base/applications/regedit/lang/el-GR.rc @@ -28,7 +28,7 @@ IDR_REGEDIT_MENU MENU BEGIN POPUP "&Αρχείο" BEGIN - MENUITEM "&Εισαγωγή ...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Εισαγωγή...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Εξαγωγή...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Φόρτωση Hive...", ID_REGISTRY_LOADHIVE, GRAYED @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Μετονομασία", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Εξαγωγή", ID_TREE_EXPORT - MENUITEM "&Δικαιώματα...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Δικαιώματα...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Αντιγραφή Ονόματος Κλειδιού", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Μετάβαση σε '%s'" IDS_FINISHEDFIND "Τέλος αναζήτησης στη registry." END diff --git a/base/applications/regedit/lang/en-US.rc b/base/applications/regedit/lang/en-US.rc index 3d0d6d4b564..b344d8cf73f 100644 --- a/base/applications/regedit/lang/en-US.rc +++ b/base/applications/regedit/lang/en-US.rc @@ -28,7 +28,7 @@ IDR_REGEDIT_MENU MENU BEGIN POPUP "&File" BEGIN - MENUITEM "&Import ...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Import...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Export...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Load Hive...", ID_REGISTRY_LOADHIVE, GRAYED @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Rename", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/es-ES.rc b/base/applications/regedit/lang/es-ES.rc index e4de1db8c18..982256e9cf5 100644 --- a/base/applications/regedit/lang/es-ES.rc +++ b/base/applications/regedit/lang/es-ES.rc @@ -29,7 +29,7 @@ END IDR_REGEDIT_MENU MENU BEGIN - POPUP "&Registro" + POPUP "&Archivo" BEGIN MENUITEM "&Importar archivo...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Exportar archivo...", ID_REGISTRY_EXPORTREGISTRYFILE @@ -132,7 +132,7 @@ BEGIN MENUITEM "&Renombrar", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exportar", ID_TREE_EXPORT - MENUITEM "&Permisos...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permisos...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copiar nombre de clave", ID_EDIT_COPYKEYNAME END @@ -391,7 +391,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expandir" IDS_COLLAPSE "&Contraer" - IDS_GOTO_SUGGESTED_KEY "&Ir a '%s'" IDS_FINISHEDFIND "Ha terminado la búsqueda en el Registro." END diff --git a/base/applications/regedit/lang/fr-FR.rc b/base/applications/regedit/lang/fr-FR.rc index f3507eba6ce..e0ac678f529 100644 --- a/base/applications/regedit/lang/fr-FR.rc +++ b/base/applications/regedit/lang/fr-FR.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Renommer\tF2", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exporter", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copier le nom de la clé", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "Dérouler" IDS_COLLAPSE "Réduire" - IDS_GOTO_SUGGESTED_KEY "Aller à '%s'" IDS_FINISHEDFIND "Recherche dans le registre terminée." END @@ -507,11 +506,11 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Chercher" FONT 8, "MS Shell Dlg" BEGIN - DEFPUSHBUTTON "Chercher le suivant", IDOK, 197, 7, 50, 14 - PUSHBUTTON "Annuler", IDCANCEL, 197, 24, 50, 14 + DEFPUSHBUTTON "Chercher le suivant", IDOK, 185, 7, 67, 14 + PUSHBUTTON "Annuler", IDCANCEL, 185, 24, 67, 14 GROUPBOX "Rechercher", IDC_STATIC, 7, 25, 63, 51 - LTEXT "Rechercher :", IDC_STATIC, 7, 8, 37, 10 - EDITTEXT IDC_FINDWHAT, 47, 7, 142, 13, ES_AUTOHSCROLL + LTEXT "Rechercher :", IDC_STATIC, 7, 8, 42, 10 + EDITTEXT IDC_FINDWHAT, 48, 7, 133, 13, ES_AUTOHSCROLL CONTROL "Clés", IDC_LOOKAT_KEYS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 14, 36, 35, 8 CONTROL "&Valeurs", IDC_LOOKAT_VALUES, "Button", BS_AUTOCHECKBOX | @@ -519,7 +518,7 @@ BEGIN CONTROL "&Données", IDC_LOOKAT_DATA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 14, 60, 42, 8 CONTROL "Chaîne complète seulement", IDC_MATCHSTRING, "Button", BS_AUTOCHECKBOX | - WS_TABSTOP, 83, 32, 94, 13 + WS_TABSTOP, 83, 32, 99, 13 CONTROL "Sensible à la casse", IDC_MATCHCASE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 83, 48, 90, 12 END diff --git a/base/applications/regedit/lang/he-IL.rc b/base/applications/regedit/lang/he-IL.rc index e39ff8c3c67..3a395f9e18c 100644 --- a/base/applications/regedit/lang/he-IL.rc +++ b/base/applications/regedit/lang/he-IL.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "שנה שם", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "יצא", ID_TREE_EXPORT - MENUITEM "הרשאות...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "הרשאות...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "העתק שם מפתח", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "הרחב" IDS_COLLAPSE "כווץ" - IDS_GOTO_SUGGESTED_KEY "עבור אל '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/hu-HU.rc b/base/applications/regedit/lang/hu-HU.rc index ba2cfd181cd..67ea5640c78 100644 --- a/base/applications/regedit/lang/hu-HU.rc +++ b/base/applications/regedit/lang/hu-HU.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Rename", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/id-ID.rc b/base/applications/regedit/lang/id-ID.rc index 95964a008ff..0eaa9e882d9 100644 --- a/base/applications/regedit/lang/id-ID.rc +++ b/base/applications/regedit/lang/id-ID.rc @@ -28,10 +28,10 @@ IDR_REGEDIT_MENU MENU BEGIN POPUP "&File" BEGIN - MENUITEM "&Impor ...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Impor...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Ekspor...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR - MENUITEM "Ambil Hive...", ID_REGISTRY_LOADHIVE, GRAYED + MENUITEM "Muat Hive...", ID_REGISTRY_LOADHIVE, GRAYED MENUITEM "Buang Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED MENUITEM SEPARATOR MENUITEM "&Sambung Registri Jaringan...", ID_REGISTRY_CONNECTNETWORKREGISTRY @@ -43,7 +43,7 @@ BEGIN END POPUP "&Edit" BEGIN - MENUITEM "&Modifikasi", ID_EDIT_MODIFY + MENUITEM "&Ubah", ID_EDIT_MODIFY MENUITEM SEPARATOR POPUP "&Baru" BEGIN @@ -91,8 +91,8 @@ IDR_POPUP_MENUS MENU BEGIN POPUP "" BEGIN - MENUITEM "&Modifikasi", ID_EDIT_MODIFY - MENUITEM "Modifikasi Data Biner", ID_EDIT_MODIFY_BIN + MENUITEM "&Ubah", ID_EDIT_MODIFY + MENUITEM "Ubah Data Biner", ID_EDIT_MODIFY_BIN MENUITEM SEPARATOR MENUITEM "&Hapus\tDel", ID_EDIT_DELETE MENUITEM "&Ganti nama", ID_EDIT_RENAME @@ -129,9 +129,9 @@ BEGIN MENUITEM "&Ganti nama", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Ekspor", ID_TREE_EXPORT - MENUITEM "&Perijinan...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Perijinan...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR - MENUITEM "&Copy Nama Kunci", ID_EDIT_COPYKEYNAME + MENUITEM "Copy Nama Kunci", ID_EDIT_COPYKEYNAME END POPUP "" BEGIN @@ -270,7 +270,7 @@ STRINGTABLE BEGIN ID_REGISTRY_MENU "Berisi perintah untuk bekerja dengan registri keseluruhan" ID_EDIT_MENU "Berisi perintah untuk mengedit nilai atau kunci" - ID_VIEW_MENU "Berisi perintah untuk mengkustomisasi jendela registri" + ID_VIEW_MENU "Berisi perintah untuk mengatur jendela registri" ID_FAVOURITES_MENU "Berisi perintah untuk mengakses kunci yang sering digunakan" ID_HELP_MENU "Berisi perintah untuk menampilkan bantuan dan informasi mengenai editor registri" ID_EDIT_NEW_MENU "Berisi perintah untuk membuat kunci atau nilai baru" @@ -278,7 +278,7 @@ END STRINGTABLE BEGIN - ID_EDIT_MODIFY "Memodifikasi data nilail" + ID_EDIT_MODIFY "Mengubah data nilai" ID_EDIT_NEW_KEY "Menambah kunci baru" ID_EDIT_NEW_STRINGVALUE "Menambah nilai string baru" ID_EDIT_NEW_BINARYVALUE "Menambah nilai biner baru" @@ -386,9 +386,8 @@ END STRINGTABLE BEGIN - IDS_EXPAND "&Lebarkan" + IDS_EXPAND "Pe&rluas" IDS_COLLAPSE "&Sempitkan" - IDS_GOTO_SUGGESTED_KEY "&Pergi ke '%s'" IDS_FINISHEDFIND "Selesai mencari seluruh registri." END diff --git a/base/applications/regedit/lang/it-IT.rc b/base/applications/regedit/lang/it-IT.rc index 95c21cec8f0..7006b9a2800 100644 --- a/base/applications/regedit/lang/it-IT.rc +++ b/base/applications/regedit/lang/it-IT.rc @@ -26,7 +26,7 @@ END IDR_REGEDIT_MENU MENU BEGIN - POPUP "&Registro" + POPUP "&File" BEGIN MENUITEM "&Importa...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Esporta...", ID_REGISTRY_EXPORTREGISTRYFILE @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Rinomina", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Esporta", ID_TREE_EXPORT - MENUITEM "&Permessi...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permessi...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copia il nome della chiave", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Espandi" IDS_COLLAPSE "&Raccogli" - IDS_GOTO_SUGGESTED_KEY "&Vai a '%s'" IDS_FINISHEDFIND "Fine ricerca nel registro." END diff --git a/base/applications/regedit/lang/ja-JP.rc b/base/applications/regedit/lang/ja-JP.rc index b27b03b06bc..8f75127699e 100644 --- a/base/applications/regedit/lang/ja-JP.rc +++ b/base/applications/regedit/lang/ja-JP.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "名前の変更(&R)", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "エクスポート(&E)", ID_TREE_EXPORT - MENUITEM "アクセス許可(&P)...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "アクセス許可(&P)...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "キー名のコピー(&C)", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "展開(&E)" IDS_COLLAPSE "閉じる(&C)" - IDS_GOTO_SUGGESTED_KEY "'%s' へ移動する(&G)" IDS_FINISHEDFIND "レジストリをすべて検索しました。" END diff --git a/base/applications/regedit/lang/ko-KR.rc b/base/applications/regedit/lang/ko-KR.rc index 479d2d53260..aaff7e191bb 100644 --- a/base/applications/regedit/lang/ko-KR.rc +++ b/base/applications/regedit/lang/ko-KR.rc @@ -131,7 +131,7 @@ BEGIN MENUITEM "이름 바꾸기(&R)", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "내보내기(&E)", ID_TREE_EXPORT - MENUITEM "권한 설정(&P)", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "권한 설정(&P)", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "키 이름 복사(&C)", ID_EDIT_COPYKEYNAME END @@ -390,7 +390,6 @@ STRINGTABLE BEGIN IDS_EXPAND "확장(&E)" IDS_COLLAPSE "축소(&C)" - IDS_GOTO_SUGGESTED_KEY "'%s'로 가기(&G)" IDS_FINISHEDFIND "레지스트리 검색을 완료했습니다." END diff --git a/base/applications/regedit/lang/nl-NL.rc b/base/applications/regedit/lang/nl-NL.rc index 6c20f3989f3..7152b244dd5 100644 --- a/base/applications/regedit/lang/nl-NL.rc +++ b/base/applications/regedit/lang/nl-NL.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Rename", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/no-NO.rc b/base/applications/regedit/lang/no-NO.rc index e448ff3442c..cde222ea645 100644 --- a/base/applications/regedit/lang/no-NO.rc +++ b/base/applications/regedit/lang/no-NO.rc @@ -28,7 +28,7 @@ IDR_REGEDIT_MENU MENU BEGIN POPUP "&Fil" BEGIN - MENUITEM "&Import ...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Import...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Eksport...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Last inn struktur...", ID_REGISTRY_LOADHIVE, GRAYED @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Gi nytt navn", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Eksport", ID_TREE_EXPORT - MENUITEM "&Rettigheter...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Rettigheter...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Kopier nøkkelnavn", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Utvid" IDS_COLLAPSE "&Minimer" - IDS_GOTO_SUGGESTED_KEY "&Gå til '%s'" IDS_FINISHEDFIND "Søket i registret er fullført." END diff --git a/base/applications/regedit/lang/pl-PL.rc b/base/applications/regedit/lang/pl-PL.rc index e9e27994dfb..035b6e2c381 100644 --- a/base/applications/regedit/lang/pl-PL.rc +++ b/base/applications/regedit/lang/pl-PL.rc @@ -2,10 +2,10 @@ * Update by Caemyr - Olaf Siejka (Jan, 2007; May, 2011) * Use ReactOS forum PM or IRC to contact me * https://reactos.org - * IRC: irc.freenode.net #reactos-pl; + * IRC: irc.freenode.net #reactos-pl; * Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (August, 2011) - * UTF-8 conversion by Caemyr (May, 2011) - * Update by wojo664 (04.08.2011) + * UTF-8 conversion by Caemyr (May, 2011) + * Update by wojo664 (04.08.2011) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -139,7 +139,7 @@ BEGIN MENUITEM "Z&mień nazwę", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Eksportuj", ID_TREE_EXPORT - MENUITEM "&Uprawnienia..", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Uprawnienia..", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Kopiuj nazwę klucza", ID_EDIT_COPYKEYNAME END @@ -398,7 +398,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Rozwiń" IDS_COLLAPSE "&Zwiń" - IDS_GOTO_SUGGESTED_KEY "&Idź do '%s'" IDS_FINISHEDFIND "Przeszukiwanie rejestru zakończone." END diff --git a/base/applications/regedit/lang/pt-BR.rc b/base/applications/regedit/lang/pt-BR.rc index cd3c7c942b9..9bb2d3ea3ff 100644 --- a/base/applications/regedit/lang/pt-BR.rc +++ b/base/applications/regedit/lang/pt-BR.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Renomear", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exportar", ID_TREE_EXPORT - MENUITEM "&Permissões...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissões...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copiar nome da chave", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expandir" IDS_COLLAPSE "&Reduzir" - IDS_GOTO_SUGGESTED_KEY "&Ir para '%s'" IDS_FINISHEDFIND "Pesquisa do Registro concluída." END diff --git a/base/applications/regedit/lang/pt-PT.rc b/base/applications/regedit/lang/pt-PT.rc index 6da9a4a9475..c2141bb06e6 100644 --- a/base/applications/regedit/lang/pt-PT.rc +++ b/base/applications/regedit/lang/pt-PT.rc @@ -26,16 +26,16 @@ END IDR_REGEDIT_MENU MENU BEGIN - POPUP "&Registro" + POPUP "&Registo" BEGIN - MENUITEM "&Importar arquivo do Registro...", ID_REGISTRY_IMPORTREGISTRYFILE - MENUITEM "&Exportar arquivo do Registro...", ID_REGISTRY_EXPORTREGISTRYFILE + MENUITEM "&Importar arquivo do Registo...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Exportar arquivo do Registo...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Load Hive...", ID_REGISTRY_LOADHIVE, GRAYED MENUITEM "Unload Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED MENUITEM SEPARATOR - MENUITEM "&Conectar Registro da rede...", ID_REGISTRY_CONNECTNETWORKREGISTRY - MENUITEM "&Desconectar Registro da rede...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED + MENUITEM "&Ligar Registo da rede...", ID_REGISTRY_CONNECTNETWORKREGISTRY + MENUITEM "&Desligar Registo da rede...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED MENUITEM SEPARATOR MENUITEM "Im&primir...\tCtrl+P", ID_REGISTRY_PRINT, GRAYED MENUITEM SEPARATOR @@ -66,7 +66,7 @@ BEGIN MENUITEM "&Localizar...\tCtrl+F", ID_EDIT_FIND MENUITEM "L&ocalizar próxima\tF3", ID_EDIT_FINDNEXT END - POPUP "E&xibir" + POPUP "&Ver" BEGIN MENUITEM "&Barra de status", ID_VIEW_STATUSBAR MENUITEM SEPARATOR @@ -83,7 +83,7 @@ BEGIN BEGIN MENUITEM "&Topics da Ajuda", ID_HELP_HELPTOPICS MENUITEM SEPARATOR - MENUITEM "&Sobre o Editor do Registro", ID_HELP_ABOUT + MENUITEM "&Sobre o Editor do Registo", ID_HELP_ABOUT END END @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Rename", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -261,18 +261,18 @@ END STRINGTABLE BEGIN - IDS_APP_TITLE "Editor do Registro" + IDS_APP_TITLE "Editor do Registo" IDC_REGEDIT "REGEDIT" IDC_REGEDIT_FRAME "REGEDIT_FRAME" END STRINGTABLE BEGIN - ID_REGISTRY_MENU "Contém comandos para trabalhar com o Registro inteiro." + ID_REGISTRY_MENU "Contém comandos para trabalhar com o Registo inteiro." ID_EDIT_MENU "Contém comandos para edição de valores ou chaves." - ID_VIEW_MENU "Contém comandos para personalização da janela do Registro." + ID_VIEW_MENU "Contém comandos para personalização da janela do Registo." ID_FAVOURITES_MENU "Contém comandos para acessar chaves frequentemente usadas." - ID_HELP_MENU "Contém comandos para exibição da ajuda e informações sobre o Editor do Registro." + ID_HELP_MENU "Contém comandos para exibição da ajuda e informações sobre o Editor do Registo." ID_EDIT_NEW_MENU "Contém comandos para criação de novas chaves ou valores" END @@ -283,20 +283,20 @@ BEGIN ID_EDIT_NEW_STRINGVALUE "Adiciona um novo valor texto." ID_EDIT_NEW_BINARYVALUE "Adiciona um novo valor binário." ID_EDIT_NEW_DWORDVALUE "Adiciona um novo valor DWORD." - ID_REGISTRY_IMPORTREGISTRYFILE "Importa um arquivo texto para o registro." - ID_REGISTRY_EXPORTREGISTRYFILE "Exporta todo ou parte do registro para um arquivo texto." + ID_REGISTRY_IMPORTREGISTRYFILE "Importa um arquivo texto para o registo." + ID_REGISTRY_EXPORTREGISTRYFILE "Exporta todo ou parte do registo para um arquivo texto." ID_REGISTRY_LOADHIVE "Loads a hive file into the registry" ID_REGISTRY_UNLOADHIVE "Unloads a hive from the registry" - ID_REGISTRY_CONNECTNETWORKREGISTRY "Conecta a um registro em um computador remoto." - ID_REGISTRY_DISCONNECTNETWORKREGISTRY "Desconecta de um registro um computador remoto." - ID_REGISTRY_PRINT "Imprime todo ou parte do registro." + 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_ABOUT "Exibe informações do programa, número da versão e copyright." END STRINGTABLE BEGIN - ID_REGISTRY_EXIT "Encerra o Editor do Registro." + ID_REGISTRY_EXIT "Encerra o Editor do Registo." ID_FAVOURITES_ADDTOFAVOURITES "Adiciona chaves a lista de favoritos." ID_FAVOURITES_REMOVEFAVOURITE "Remove chaves da lista de favoritos." ID_VIEW_STATUSBAR "Mostra ou oculta a barra de status." @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/ro-RO.rc b/base/applications/regedit/lang/ro-RO.rc index 28b79d926ff..f89f13024df 100644 --- a/base/applications/regedit/lang/ro-RO.rc +++ b/base/applications/regedit/lang/ro-RO.rc @@ -131,7 +131,7 @@ BEGIN MENUITEM "&Redenumește", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "E&xportă", ID_TREE_EXPORT - MENUITEM "Permisiuni…", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "Permisiuni…", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copiază numele cheii", ID_EDIT_COPYKEYNAME END @@ -390,7 +390,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Extinde" IDS_COLLAPSE "&Restrânge" - IDS_GOTO_SUGGESTED_KEY "S&alt la „%s”" IDS_FINISHEDFIND "Căutarea în registru a fost finalizată." END diff --git a/base/applications/regedit/lang/ru-RU.rc b/base/applications/regedit/lang/ru-RU.rc index c90b91d6ced..3d52bcb1898 100644 --- a/base/applications/regedit/lang/ru-RU.rc +++ b/base/applications/regedit/lang/ru-RU.rc @@ -26,10 +26,10 @@ END IDR_REGEDIT_MENU MENU BEGIN - POPUP "&Реестр" + POPUP "&Файл" BEGIN - MENUITEM "&Импортировать файл реестра...", ID_REGISTRY_IMPORTREGISTRYFILE - MENUITEM "&Экспортировать файл реестра...", ID_REGISTRY_EXPORTREGISTRYFILE + MENUITEM "&Импортировать из файла...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Экспортировать в файл...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Загрузить куст...", ID_REGISTRY_LOADHIVE, GRAYED MENUITEM "Выгрузить куст...", ID_REGISTRY_UNLOADHIVE, GRAYED @@ -56,7 +56,7 @@ BEGIN MENUITEM "Рас&ширяемый строковый параметр", ID_EDIT_NEW_EXPANDABLESTRINGVALUE END MENUITEM SEPARATOR - MENUITEM "&Права доступа...", ID_EDIT_PERMISSIONS + MENUITEM "Разре&шения...", ID_EDIT_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Удалить\tDel", ID_EDIT_DELETE MENUITEM "&Переименовать", ID_EDIT_RENAME @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Переименовать", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Экспорт", ID_TREE_EXPORT - MENUITEM "Разре&шения...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "Разре&шения...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Копировать имя ключа", ID_EDIT_COPYKEYNAME END @@ -367,8 +367,8 @@ BEGIN IDS_ACCESS_READ "Чтение" IDS_ACCESS_QUERYVALUE "Запрос значений" IDS_ACCESS_SETVALUE "Установка значений" - IDS_ACCESS_CREATESUBKEY "Создание подключей" - IDS_ACCESS_ENUMERATESUBKEYS "Перечисление подключей" + IDS_ACCESS_CREATESUBKEY "Создание разделов" + IDS_ACCESS_ENUMERATESUBKEYS "Перечисление разделов" IDS_ACCESS_NOTIFY "Уведомление" IDS_ACCESS_CREATELINK "Создание связи" IDS_ACCESS_DELETE "Удаление" @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Развернуть" IDS_COLLAPSE "&Свернуть" - IDS_GOTO_SUGGESTED_KEY "&Перейти к '%s'" IDS_FINISHEDFIND "Поиск в реестре завершен." END diff --git a/base/applications/regedit/lang/sk-SK.rc b/base/applications/regedit/lang/sk-SK.rc index 8e848e5c415..1044be8cc07 100644 --- a/base/applications/regedit/lang/sk-SK.rc +++ b/base/applications/regedit/lang/sk-SK.rc @@ -1,7 +1,7 @@ /* TRANSLATOR : Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk) * DATE OF TR.: 07-07-2008 - * LAST CHANGE: 29-07-2010 - */ + * LAST CHANGE: 29-07-2010 + */ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT @@ -134,7 +134,7 @@ BEGIN MENUITEM "&Premenovať", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -393,7 +393,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/sl-SI.rc b/base/applications/regedit/lang/sl-SI.rc index 64630661e0f..1c873f2c422 100644 --- a/base/applications/regedit/lang/sl-SI.rc +++ b/base/applications/regedit/lang/sl-SI.rc @@ -28,14 +28,14 @@ IDR_REGEDIT_MENU MENU BEGIN POPUP "&Register" BEGIN - MENUITEM "&Uvozi registrsko datoteko ...", ID_REGISTRY_IMPORTREGISTRYFILE - MENUITEM "&Izvozi registrsko datoteko ...", ID_REGISTRY_EXPORTREGISTRYFILE + MENUITEM "&Uvozi registrsko datoteko...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Izvozi registrsko datoteko...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Load Hive...", ID_REGISTRY_LOADHIVE, GRAYED MENUITEM "Unload Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED MENUITEM SEPARATOR - MENUITEM "P&oveži se z omrežnim registrom ...", ID_REGISTRY_CONNECTNETWORKREGISTRY - MENUITEM "P&rekini povezavo z omrežnim registrom ...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED + MENUITEM "P&oveži se z omrežnim registrom...", ID_REGISTRY_CONNECTNETWORKREGISTRY + MENUITEM "P&rekini povezavo z omrežnim registrom...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED MENUITEM SEPARATOR MENUITEM "Na&tisni...\tCtrl+P", ID_REGISTRY_PRINT, GRAYED MENUITEM SEPARATOR @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Rename", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/sq-AL.rc b/base/applications/regedit/lang/sq-AL.rc index 744b686c883..e2ef5b0bb1d 100644 --- a/base/applications/regedit/lang/sq-AL.rc +++ b/base/applications/regedit/lang/sq-AL.rc @@ -1,4 +1,4 @@ -/* TRANSLATOR : Ardit Dani (Ard1t) (ardit.dani@gmail.com) +/* TRANSLATOR : Ardit Dani (Ard1t) (ardit.dani@gmail.com) * DATE OF TR: 29-11-2013 */ @@ -32,7 +32,7 @@ IDR_REGEDIT_MENU MENU BEGIN POPUP "&File" BEGIN - MENUITEM "&Importo ...", ID_REGISTRY_IMPORTREGISTRYFILE + MENUITEM "&Importo...", ID_REGISTRY_IMPORTREGISTRYFILE MENUITEM "&Eksporto...", ID_REGISTRY_EXPORTREGISTRYFILE MENUITEM SEPARATOR MENUITEM "Ngarko koshere...", ID_REGISTRY_LOADHIVE, GRAYED @@ -133,7 +133,7 @@ BEGIN MENUITEM "Emero", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exporto", ID_TREE_EXPORT - MENUITEM "T'drejta...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "T'drejta...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "Kopjo emrin çelesit", ID_EDIT_COPYKEYNAME END @@ -392,7 +392,6 @@ STRINGTABLE BEGIN IDS_EXPAND "Zgjat" IDS_COLLAPSE "Zgjero" - IDS_GOTO_SUGGESTED_KEY "Shko tek '%s'" IDS_FINISHEDFIND "Përfunduar kërkimin përmes regjistrit." END diff --git a/base/applications/regedit/lang/sv-SE.rc b/base/applications/regedit/lang/sv-SE.rc index e7a4e5fdf03..54c3b80d855 100644 --- a/base/applications/regedit/lang/sv-SE.rc +++ b/base/applications/regedit/lang/sv-SE.rc @@ -129,7 +129,7 @@ BEGIN MENUITEM "&Byt namn", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Exportera", ID_TREE_EXPORT - MENUITEM "&Behörigheter...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Behörigheter...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Kopiera nyckelnamn", ID_EDIT_COPYKEYNAME END @@ -388,7 +388,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Visa nivå" IDS_COLLAPSE "&Dölj nivå" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Slutfört sökningen av registret." END diff --git a/base/applications/regedit/lang/th-TH.rc b/base/applications/regedit/lang/th-TH.rc index c98d1792daf..0f0f4d40616 100644 --- a/base/applications/regedit/lang/th-TH.rc +++ b/base/applications/regedit/lang/th-TH.rc @@ -131,7 +131,7 @@ BEGIN MENUITEM "&Rename", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Export", ID_TREE_EXPORT - MENUITEM "&Permissions...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Permissions...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME END @@ -390,7 +390,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Expand" IDS_COLLAPSE "&Collapse" - IDS_GOTO_SUGGESTED_KEY "&Go to '%s'" IDS_FINISHEDFIND "Finished searching through the registry." END diff --git a/base/applications/regedit/lang/tr-TR.rc b/base/applications/regedit/lang/tr-TR.rc index 27cff32c12f..803a706ae7d 100644 --- a/base/applications/regedit/lang/tr-TR.rc +++ b/base/applications/regedit/lang/tr-TR.rc @@ -39,7 +39,7 @@ BEGIN MENUITEM "A&ğdaki Değer Defteri'ne Bağlan...", ID_REGISTRY_CONNECTNETWORKREGISTRY MENUITEM "Ağ&daki Değer Defteri'ne Bağlantıyı Kes...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED MENUITEM SEPARATOR - MENUITEM "Ya&zdır...\tDenetim+P", ID_REGISTRY_PRINT, GRAYED + MENUITEM "Ya&zdır...\tCtrl+P", ID_REGISTRY_PRINT, GRAYED MENUITEM SEPARATOR MENUITEM "&Çıkış", ID_REGISTRY_EXIT END @@ -60,12 +60,12 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&İzinler...", ID_EDIT_PERMISSIONS MENUITEM SEPARATOR - MENUITEM "&Sil\tSil", ID_EDIT_DELETE + MENUITEM "&Sil\tDel", ID_EDIT_DELETE MENUITEM "&Adını Değiştir", ID_EDIT_RENAME MENUITEM SEPARATOR MENUITEM "Di&zin Yolunu Çoğalt", ID_EDIT_COPYKEYNAME MENUITEM SEPARATOR - MENUITEM "&Bul...\tDenetim+F", ID_EDIT_FIND + MENUITEM "&Bul...\tCtrl+F", ID_EDIT_FIND MENUITEM "S&onrakini Bul\tF3...", ID_EDIT_FINDNEXT END POPUP "&Görünüm" @@ -96,7 +96,7 @@ BEGIN MENUITEM "&Değiştir...", ID_EDIT_MODIFY MENUITEM "&İkili Veriyi Değiştir...", ID_EDIT_MODIFY_BIN MENUITEM SEPARATOR - MENUITEM "&Sil\tSil", ID_EDIT_DELETE + MENUITEM "&Sil\tDel", ID_EDIT_DELETE MENUITEM "&Adını Değiştir", ID_EDIT_RENAME END POPUP "" @@ -131,7 +131,7 @@ BEGIN MENUITEM "&Adını Değiştir", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Ver...", ID_TREE_EXPORT - MENUITEM "&İzinler...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&İzinler...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Dizin Yolunu Çoğalt", ID_EDIT_COPYKEYNAME END @@ -150,7 +150,7 @@ END IDD_EDIT_STRING DIALOGEX 32, 24, 252, 84 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Dizgi Değerini Düzenle" +CAPTION "Dize Değerini Düzenle" FONT 8, "MS Shell Dlg" BEGIN LTEXT "&Değer Adı:", IDC_STATIC, 6, 6, 134, 8 @@ -163,7 +163,7 @@ END IDD_EDIT_MULTI_STRING DIALOGEX 32, 24, 252, 174 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Çok Dizeli Dizgi Değerini Düzenle" +CAPTION "Çoklu Dize Değerini Düzenle" FONT 8, "MS Shell Dlg" BEGIN LTEXT "&Değer Adı:", IDC_STATIC, 6, 6, 134, 8 @@ -190,7 +190,7 @@ END IDD_EDIT_DWORD DIALOGEX 32, 24, 252, 104 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "32 Bitlik Değeri Düzenle" +CAPTION "DWORD Değeri Düzenle" FONT 8, "MS Shell Dlg" BEGIN LTEXT "&Değer Adı:", IDC_STATIC, 6, 6, 134, 8 @@ -206,7 +206,7 @@ END IDD_EDIT_RESOURCE_LIST DIALOGEX 32, 24, 170, 120 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Kaynak Dizelgesi" +CAPTION "Kaynak Listesi" FONT 8, "MS Shell Dlg" BEGIN CONTROL "", IDC_RESOURCE_LIST, "SysListView32", LVS_REPORT | LVS_NOSORTHEADER | @@ -232,14 +232,14 @@ BEGIN LTEXT "Giriş:", IDC_STATIC, 10, 134, 38, 8 CONTROL "", IDC_PORT_LIST, "SysListView32", LVS_REPORT | LVS_NOSORTHEADER | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 10, 144, 261, 31 - LTEXT "Husûsî Aygıt Verisi:", IDC_STATIC, 10, 177, 80, 8 + LTEXT "Özel Aygıt Verisi:", IDC_STATIC, 10, 177, 80, 8 CONTROL "", IDC_DEVICE_LIST, "SysListView32", LVS_REPORT | LVS_NOSORTHEADER | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 10, 188, 261, 31 GROUPBOX "Kullanım", IDC_STATIC, 10, 219, 125, 39 LTEXT "Belirsiz:", IDC_UNDETERMINED, 18, 230, 46, 8, WS_DISABLED LTEXT "Paylaşılan:", IDC_SHARED, 18, 240, 48, 8, WS_DISABLED - LTEXT "Husûsî Aygıt", IDC_DEVICE_EXCLUSIVE, 72, 230, 58, 8, WS_DISABLED - LTEXT "Husûsî Sürücü", IDC_DRIVER_EXCLUSIVE, 72, 240, 54, 8, WS_DISABLED + LTEXT "Özel Aygıt", IDC_DEVICE_EXCLUSIVE, 72, 230, 58, 8, WS_DISABLED + LTEXT "Özel Sürücü", IDC_DRIVER_EXCLUSIVE, 72, 240, 54, 8, WS_DISABLED RTEXT "Arayüz Türü:", IDC_STATIC, 144, 220, 58, 8 LTEXT "", IDC_INTERFACETYPE, 205, 220, 66, 8 RTEXT "Veriyolu Numarası:", IDC_STATIC, 151, 230, 51, 8 @@ -271,7 +271,7 @@ END STRINGTABLE BEGIN ID_REGISTRY_MENU "Bütün Değer Defteri ile çalışma komutlarını içerir." - ID_EDIT_MENU "Dizinleri veyâ değerleri düzenleme komutlarını içerir." + ID_EDIT_MENU "Anahtar veya değerleri düzenleme komutlarını içerir." ID_VIEW_MENU "Değer Defteri penceresinin husûsileştirme komutlarını içerir." ID_FAVOURITES_MENU "Sık kullanılan dizinleri kullanma komutlarını içerir." ID_HELP_MENU "Değer Defteri Düzenleyicisi ile ilgili bilgiyi ya da yardımı görüntüleme komutlarını içerir." @@ -282,9 +282,9 @@ STRINGTABLE BEGIN ID_EDIT_MODIFY "Değerin verisini değiştirir." ID_EDIT_NEW_KEY "Yeni bir dizin ekler." - ID_EDIT_NEW_STRINGVALUE "Yeni bir dizgi değeri ekler." + ID_EDIT_NEW_STRINGVALUE "Yeni bir dizi değeri ekler." ID_EDIT_NEW_BINARYVALUE "Yeni bir ikili değer ekler." - ID_EDIT_NEW_DWORDVALUE "Yeni bir 32 bitlik değer ekler." + ID_EDIT_NEW_DWORDVALUE "Yeni bir DWORD değeri ekler." ID_REGISTRY_IMPORTREGISTRYFILE "Bir metin kütüğünü Değer Defteri'ne alır." ID_REGISTRY_EXPORTREGISTRYFILE "Değer Defteri'nin tümünü ya da bir bölümünü bir metin kütüğüne verir." ID_REGISTRY_LOADHIVE "Değer Defteri'ne bir yığın kütüğü yükler." @@ -293,7 +293,7 @@ BEGIN ID_REGISTRY_DISCONNECTNETWORKREGISTRY "Uzaktaki bir bilgisayarın Değer Defteri'sine olan bağlantıyı keser." ID_REGISTRY_PRINT "Değer Defteri'nin tümünü ya da bir bölümünü yazdırır." /* ID_HELP_HELPTOPICS "Değer Defteri Düzenleyicisi Yardımı'nı açar." */ - ID_HELP_ABOUT "İzlenceyle ilgili bilgi, sürüm numarası ve telif hakkı görüntüler." + ID_HELP_ABOUT "Programla ilgili bilgi, sürüm numarası ve telif hakkı görüntüler." END STRINGTABLE @@ -302,7 +302,7 @@ BEGIN ID_FAVOURITES_ADDTOFAVOURITES "Dizinleri yer imleri dizelgesine ekler." ID_FAVOURITES_REMOVEFAVOURITE "Dizinleri yer imleri dizelgesinden kaldırır." ID_VIEW_STATUSBAR "Durum çubuğunu gösterir ya da gizler." - ID_VIEW_SPLIT "İki levhâ arasındaki ayırıcının konumunu değiştirir." + ID_VIEW_SPLIT "İki levha arasındaki ayırıcının konumunu değiştirir." ID_VIEW_REFRESH "Pencereyi yeniler." ID_EDIT_DELETE "Seçileni siler." ID_EDIT_RENAME "Seçilenin adını değiştirir." @@ -313,7 +313,7 @@ END STRINGTABLE BEGIN - IDS_ERROR "Yanlışlık" + IDS_ERROR "Hata" IDS_WARNING "Uyarı" IDS_BAD_KEY "Dizin sorgulanamıyor: %s" IDS_BAD_VALUE "Değer sorgulanamıyor: %s" @@ -326,9 +326,9 @@ BEGIN IDS_QUERY_DELETE_ONE "Bu değeri silmek istediğinizden emin misiniz?" IDS_QUERY_DELETE_MORE "Bu değerleri silmek istediğinizden emin misiniz?" IDS_QUERY_DELETE_CONFIRM "Değer Silme Doğrulaması" - IDS_ERR_DELVAL_CAPTION "Değerler Silinmesi Yanlışlığı" + IDS_ERR_DELVAL_CAPTION "Değer Silime Hatası" IDS_ERR_DELETEVALUE "Tüm belirtilmiş değerler silinemiyor." - IDS_ERR_RENVAL_CAPTION "Değer Adı Değiştirilmesi Yanlışlığı" + IDS_ERR_RENVAL_CAPTION "Değer Adı Değiştirilmesi Hatası" IDS_ERR_RENVAL_TOEMPTY "Adı değiştirilemiyor: %s. Belirtilen değer adı boş. Başka bir ad yazıp yeniden deneyiniz." IDS_QUERY_IMPORT_HIVE_CAPTION "Dizin Yenileme Doğrulaması" IDS_QUERY_IMPORT_HIVE_MSG "Bir dizin seçili dizinle yenilenecektir.\nBu dizinin tüm alt dizinleri ve değerleri silinecektir.\nİşlemi sürdürmek istiyor musunuz?" @@ -347,7 +347,7 @@ BEGIN IDS_EXPORT_REG_FILE "Değer Kütüğüne Ver" IDS_LOAD_HIVE "Yığın Yükle" IDS_UNLOAD_HIVE "Yığını Kaldır" - IDS_INVALID_DWORD "(Geçersiz 32 bitlik değer)" + IDS_INVALID_DWORD "(Geçersiz DWORD değeri)" END STRINGTABLE @@ -359,7 +359,7 @@ BEGIN IDS_FLT_HIVFILES_FLT "*.*" IDS_FLT_REGEDIT4 "Windows 9x ve Windows NT 4.0 Türündeki Değer Kütükleri (REGEDIT4) (*.reg)" IDS_FLT_REGEDIT4_FLT "*.reg" - IDS_FLT_ALLFILES "Tüm Kütükler (*.*)" + IDS_FLT_ALLFILES "Tüm Dosyalar (*.*)" IDS_FLT_ALLFILES_FLT "*.*" END @@ -390,16 +390,15 @@ STRINGTABLE BEGIN IDS_EXPAND "&Genişlet" IDS_COLLAPSE "&Daralt" - IDS_GOTO_SUGGESTED_KEY "G&it: %s" IDS_FINISHEDFIND "Değer Defteri boyunca arama bitti." END STRINGTABLE BEGIN IDS_IMPORT_PROMPT "Bilgi ekleme, yanlışlıkla değerleri değiştirebilir ya da silebilir ve bileşenlerin doğru çalışmasını engelleyebilir.\nEğer ""%s"" içindeki bilginin kaynağına güvenmiyorsanız onu Değer Defteri'ne eklemeyiniz.\n\nSürdürmek istediğinizden emin misiniz?" - IDS_IMPORT_OK """%s"" içinde bulunan dizinler ve değerler Değer Defteri'ne başarıyla eklendi." - IDS_IMPORT_ERROR """%s"" alınamıyor: Kütüğü açmada yanlışlık. Bir disk yanlışlığı, bir kütük dizgesi yanlışlığı ya da kütüğün olmaması olabilir." - IDS_EXPORT_ERROR """%s"" verilemiyor: Kütüğü oluşturmada ya da kütüğe yazmada yanlışlık. Bir disk yanlışlığı ya da bir kütük dizgesi yanlışlığı olabilir." + IDS_IMPORT_OK """%s"" içinde bulunan anahtar ve değerler Kayıt Defteri'ne başarıyla eklendi." + IDS_IMPORT_ERROR """%s"" alınamıyor: Dosyayı açmada hata. Bir disk hatası, bir dosya tablosu hatası ya da tablonun olmaması olabilir." + IDS_EXPORT_ERROR """%s"" verilemiyor: Dosyayı oluşturmada ya da dosyaya yazmada hatası. Bir disk hatası ya da bir dosya tablosu hatası olabilir." END STRINGTABLE @@ -410,11 +409,11 @@ BEGIN IDS_DMA_PORT "Giriş" IDS_INTERRUPT_VECTOR "Yöney" IDS_INTERRUPT_LEVEL "Düzey" - IDS_INTERRUPT_AFFINITY "Benzerlik" + IDS_INTERRUPT_AFFINITY "İlişki" IDS_INTERRUPT_TYPE "Tür" IDS_MEMORY_ADDRESS "Fizikî Erişki" IDS_MEMORY_LENGTH "Uzunluk" - IDS_MEMORY_ACCESS "Erişim" + IDS_MEMORY_ACCESS "Adres" IDS_PORT_ADDRESS "Fizikî Erişki" IDS_PORT_LENGTH "Uzunluk" IDS_PORT_ACCESS "Erişim" @@ -520,7 +519,7 @@ BEGIN WS_TABSTOP, 14, 48, 36, 8 CONTROL "&Değer Verileri", IDC_LOOKAT_DATA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 14, 60, 42, 8 - CONTROL "&Yalnızca Tüm Dizgiyi Karşılaştır", IDC_MATCHSTRING, "Button", BS_AUTOCHECKBOX | + CONTROL "&Yalnızca Tüm Dizeyi Karşılaştır", IDC_MATCHSTRING, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 83, 32, 94, 13 CONTROL "&Büyük-Küçük Harfliği Karşılaştır", IDC_MATCHCASE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 83, 48, 90, 12 diff --git a/base/applications/regedit/lang/uk-UA.rc b/base/applications/regedit/lang/uk-UA.rc index 07c62979d3d..b2ca5985db3 100644 --- a/base/applications/regedit/lang/uk-UA.rc +++ b/base/applications/regedit/lang/uk-UA.rc @@ -131,7 +131,7 @@ BEGIN MENUITEM "Перей&менувати", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "&Експорт", ID_TREE_EXPORT - MENUITEM "&Дозволи...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "&Дозволи...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "&Копіювати ім'я розділу", ID_EDIT_COPYKEYNAME END @@ -390,7 +390,6 @@ STRINGTABLE BEGIN IDS_EXPAND "&Розгорнути" IDS_COLLAPSE "&Згорнути" - IDS_GOTO_SUGGESTED_KEY "&Перейти до '%s'" IDS_FINISHEDFIND "Пошук у реєстрі завершений." END diff --git a/base/applications/regedit/lang/zh-CN.rc b/base/applications/regedit/lang/zh-CN.rc index 31cce603d91..f8586f9d878 100644 --- a/base/applications/regedit/lang/zh-CN.rc +++ b/base/applications/regedit/lang/zh-CN.rc @@ -131,7 +131,7 @@ BEGIN MENUITEM "重命名(&R)", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "导出(&E)", ID_TREE_EXPORT - MENUITEM "权限(&P)...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "权限(&P)...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "复制键名(&C)", ID_EDIT_COPYKEYNAME END @@ -319,7 +319,7 @@ BEGIN IDS_BAD_VALUE "不能查询值 '%s'" IDS_UNSUPPORTED_TYPE "不能编辑这种类型的键 (%ld)" IDS_TOO_BIG_VALUE "数值过大 (%ld)" - IDS_MULTI_SZ_EMPTY_STRING "REG_MULTI_SZ 类型的数据不能包含空字符串。\r\n注册表编辑器将删除找到得空字符串。" + IDS_MULTI_SZ_EMPTY_STRING "REG_MULTI_SZ 类型的数据不能包含空字符串。\n注册表编辑器将删除找到得空字符串。" IDS_QUERY_DELETE_KEY_ONE "确实要删除这个键吗?" IDS_QUERY_DELETE_KEY_MORE "确实要删除这些键吗?" IDS_QUERY_DELETE_KEY_CONFIRM "确认删除键" @@ -390,7 +390,6 @@ STRINGTABLE BEGIN IDS_EXPAND "展开" IDS_COLLAPSE "折叠" - IDS_GOTO_SUGGESTED_KEY "转到(&G)'%s'" IDS_FINISHEDFIND "注册表搜索完毕。" END diff --git a/base/applications/regedit/lang/zh-TW.rc b/base/applications/regedit/lang/zh-TW.rc index 915c7149c17..31f2d4194bc 100644 --- a/base/applications/regedit/lang/zh-TW.rc +++ b/base/applications/regedit/lang/zh-TW.rc @@ -1,4 +1,4 @@ -/* Traditional Chinese translation by Henry Tang Ih 2016 (henrytang2@hotmail.com) */ +/* TRANSLATORS: Copyright 2016 Henry Tang Ih */ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL @@ -36,7 +36,7 @@ BEGIN MENUITEM "載入配置單元...", ID_REGISTRY_LOADHIVE, GRAYED MENUITEM "解除安裝配置單元...", ID_REGISTRY_UNLOADHIVE, GRAYED MENUITEM SEPARATOR - MENUITEM "連線網路註冊表(&C)...", ID_REGISTRY_CONNECTNETWORKREGISTRY + MENUITEM "連線網路登錄(&C)...", ID_REGISTRY_CONNECTNETWORKREGISTRY MENUITEM "斷開網路註冊表(&C)...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED MENUITEM SEPARATOR MENUITEM "列印(&P)...\tCtrl+P", ID_REGISTRY_PRINT, GRAYED @@ -52,8 +52,8 @@ BEGIN MENUITEM "項(&K)", ID_EDIT_NEW_KEY MENUITEM SEPARATOR MENUITEM "字元串值(&S)", ID_EDIT_NEW_STRINGVALUE - MENUITEM "二進位制值(&B)", ID_EDIT_NEW_BINARYVALUE - MENUITEM "DWORD ??&D)", ID_EDIT_NEW_DWORDVALUE + MENUITEM "二進制值(&B)", ID_EDIT_NEW_BINARYVALUE + MENUITEM "DWORD 值(&D)", ID_EDIT_NEW_DWORDVALUE MENUITEM "多字元串值(&M)", ID_EDIT_NEW_MULTISTRINGVALUE MENUITEM "可擴充字元串值(&E)", ID_EDIT_NEW_EXPANDABLESTRINGVALUE END @@ -106,7 +106,7 @@ BEGIN MENUITEM "項(&K)", ID_EDIT_NEW_KEY MENUITEM SEPARATOR MENUITEM "字元串值(&S)", ID_EDIT_NEW_STRINGVALUE - MENUITEM "二進位制值(&B)", ID_EDIT_NEW_BINARYVALUE + MENUITEM "二進制值(&B)", ID_EDIT_NEW_BINARYVALUE MENUITEM "DWORD 值(&D)", ID_EDIT_NEW_DWORDVALUE MENUITEM "多字元串值(&M)", ID_EDIT_NEW_MULTISTRINGVALUE MENUITEM "可擴充字元串值(&E)", ID_EDIT_NEW_EXPANDABLESTRINGVALUE @@ -120,7 +120,7 @@ BEGIN MENUITEM "項(&K)", ID_EDIT_NEW_KEY MENUITEM SEPARATOR MENUITEM "字元串值(&S)", ID_EDIT_NEW_STRINGVALUE - MENUITEM "二進位制值(&B)", ID_EDIT_NEW_BINARYVALUE + MENUITEM "二進制值(&B)", ID_EDIT_NEW_BINARYVALUE MENUITEM "DWORD 值(&D)", ID_EDIT_NEW_DWORDVALUE MENUITEM "多字元串值(&M)", ID_EDIT_NEW_MULTISTRINGVALUE MENUITEM "可擴充字元串值(&E)", ID_EDIT_NEW_EXPANDABLESTRINGVALUE @@ -131,7 +131,7 @@ BEGIN MENUITEM "重新命名(&R)", ID_TREE_RENAME MENUITEM SEPARATOR MENUITEM "匯出(&E)", ID_TREE_EXPORT - MENUITEM "許可權(&P)...", ID_TREE_PERMISSIONS, GRAYED + MENUITEM "許可權(&P)...", ID_TREE_PERMISSIONS MENUITEM SEPARATOR MENUITEM "複製項名稱(&C)", ID_EDIT_COPYKEYNAME END @@ -177,7 +177,7 @@ END IDD_EDIT_BIN_DATA DIALOGEX 32, 24, 252, 174 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "編輯二進位制數值" +CAPTION "編輯二進制數值" FONT 9, "新細明體" BEGIN LTEXT "數值名稱(&N):", IDC_STATIC, 6, 6, 134, 8 @@ -198,8 +198,8 @@ BEGIN LTEXT "數值資料(&V):", IDC_STATIC, 6, 35, 161, 8 EDITTEXT IDC_VALUE_DATA, 6, 46, 116, 12, ES_AUTOHSCROLL GROUPBOX "基數", IDC_STATIC, 130, 35, 116, 39 - AUTORADIOBUTTON "十六進位制(&H)", IDC_FORMAT_HEX, 141, 46, 60, 10, WS_GROUP - AUTORADIOBUTTON "十進位制(&D)", IDC_FORMAT_DEC, 141, 59, 60, 10 + AUTORADIOBUTTON "十六進制(&H)", IDC_FORMAT_HEX, 141, 46, 60, 10, WS_GROUP + AUTORADIOBUTTON "十進制(&D)", IDC_FORMAT_DEC, 141, 59, 60, 10 DEFPUSHBUTTON "確定", IDOK, 142, 82, 50, 14 PUSHBUTTON "取消", IDCANCEL, 196, 82, 50, 14 END @@ -270,9 +270,9 @@ END STRINGTABLE BEGIN - ID_REGISTRY_MENU "包含與整個註冊表工作相關的命令。" + ID_REGISTRY_MENU "包含與整個登錄工作相關的命令。" ID_EDIT_MENU "包含編輯值或項的命令。" - ID_VIEW_MENU "包含自定義註冊表視窗的命令。" + ID_VIEW_MENU "包含自訂登錄視窗的命令。" ID_FAVOURITES_MENU "包含訪問常用項時所用的命令。" ID_HELP_MENU "包含顯示幫助以及註冊表編輯器有關資訊的命令。" ID_EDIT_NEW_MENU "包含創建新項或值的命令。" @@ -285,13 +285,13 @@ BEGIN ID_EDIT_NEW_STRINGVALUE "添加新字元串值。" ID_EDIT_NEW_BINARYVALUE "添加新二進位制值。" ID_EDIT_NEW_DWORDVALUE "添加新 DWORD 值。" - ID_REGISTRY_IMPORTREGISTRYFILE "將檔案匯入到註冊表中。" - ID_REGISTRY_EXPORTREGISTRYFILE "將註冊表全部或部分匯出到檔案中。" + ID_REGISTRY_IMPORTREGISTRYFILE "將檔案匯入到登錄中。" + ID_REGISTRY_EXPORTREGISTRYFILE "將登錄全部或部分匯出到檔案中。" ID_REGISTRY_LOADHIVE "載入配置單元到註冊表中。" ID_REGISTRY_UNLOADHIVE "從註冊表中解除安裝配置單元。" - ID_REGISTRY_CONNECTNETWORKREGISTRY "連線到遠端計算機的註冊表。" - ID_REGISTRY_DISCONNECTNETWORKREGISTRY "斷開與遠端計算機註冊表的連線。" - ID_REGISTRY_PRINT "列印所有或部分註冊表。" + ID_REGISTRY_CONNECTNETWORKREGISTRY "連線到遠端電腦的登錄。" + ID_REGISTRY_DISCONNECTNETWORKREGISTRY "斷開與遠端電腦登錄的連線。" + ID_REGISTRY_PRINT "列印所有或部分登錄。" /* ID_HELP_HELPTOPICS "開啟註冊表編輯器幫助。" */ ID_HELP_ABOUT "顯示程式資訊、版本號和版權。" END @@ -319,7 +319,7 @@ BEGIN IDS_BAD_VALUE "不能查詢值 '%s'" IDS_UNSUPPORTED_TYPE "不能編輯這類型的項 (%ld)" IDS_TOO_BIG_VALUE "數值過大 (%ld)" - IDS_MULTI_SZ_EMPTY_STRING "REG_MULTI_SZ 類型的資料不能包含空字元串。\r\n註冊表編輯器將刪除找到得空字元串。" + IDS_MULTI_SZ_EMPTY_STRING "REG_MULTI_SZ 類型的資料不能包含空字元串。\n註冊表編輯器將刪除找到得空字元串。" IDS_QUERY_DELETE_KEY_ONE "確實要刪除這個項嗎?" IDS_QUERY_DELETE_KEY_MORE "確實要刪除這些項嗎?" IDS_QUERY_DELETE_KEY_CONFIRM "確認項刪除" @@ -342,7 +342,7 @@ BEGIN IDS_DEFAULT_VALUE_NAME "(默認)" IDS_VALUE_NOT_SET "(數值未設定)" IDS_UNKNOWN_TYPE "未知類型: (0x%lx)" - IDS_MY_COMPUTER "我的計算機" + IDS_MY_COMPUTER "我的電腦" IDS_IMPORT_REG_FILE "匯入註冊表檔案" IDS_EXPORT_REG_FILE "匯出註冊表檔案" IDS_LOAD_HIVE "載入配置單元" @@ -355,7 +355,7 @@ BEGIN IDS_FLT_REGFILE "註冊檔案" IDS_FLT_REGFILES "註冊檔案 (*.reg)" IDS_FLT_REGFILES_FLT "*.reg" - IDS_FLT_HIVFILES "註冊表配置單元檔案 (*.*)" + IDS_FLT_HIVFILES "登錄 Hive 檔案 (*.*)" IDS_FLT_HIVFILES_FLT "*.*" IDS_FLT_REGEDIT4 "Win9x/NT4 註冊檔案 (REGEDIT4) (*.reg)" IDS_FLT_REGEDIT4_FLT "*.reg" @@ -390,14 +390,13 @@ STRINGTABLE BEGIN IDS_EXPAND "展開" IDS_COLLAPSE "摺疊" - IDS_GOTO_SUGGESTED_KEY "轉到(&G)'%s'" - IDS_FINISHEDFIND "註冊表搜索完畢。" + IDS_FINISHEDFIND "登錄搜索完畢。" END STRINGTABLE BEGIN - IDS_IMPORT_PROMPT "添加資訊可無意中更改或刪除值並導致元件停止正常工作。\n如果您不信任此 '%s' 中的資訊的來源,並不將其添加到註冊表。\n\n是否確實要繼續?" - IDS_IMPORT_OK "'%s' 中包含的值和項已成功添加到註冊表。" + IDS_IMPORT_PROMPT "添加資訊可無意中更改或刪除值並導致元件停止正常工作。\n如果您不信任此 '%s' 中的資訊的來源,並不將其添加到登錄。\n\n是否確實要繼續?" + IDS_IMPORT_OK "'%s' 中包含的值和項已成功添加到登錄。" IDS_IMPORT_ERROR "無法將 '%s' 匯入: 開啟該檔案時出錯。可能有磁碟或檔案系統錯誤或檔案可能不存在。" IDS_EXPORT_ERROR "無法匯出 '%s' : 創建或寫入檔案時出錯。可能有磁碟或檔案系統錯誤。" END @@ -453,7 +452,7 @@ BEGIN IDS_BUS_INTERNALPOWERBUS "Internal Power Bus" IDS_BUS_PNPISABUS "PnP-ISA Bus" IDS_BUS_PNPBUS "PnP Bus" - IDS_BUS_UNKNOWNTYPE "未知的介面類型" + IDS_BUS_UNKNOWNTYPE "不明介面類型" END /*****************************************************************/ @@ -533,7 +532,7 @@ FONT 9, "新細明體", 400, 0, 0x1 BEGIN ICON IDI_REGEDIT, IDC_STATIC, 7, 7, 20, 20 DEFPUSHBUTTON "取消(&C)", IDCANCEL, 93, 29, 45, 14 - LTEXT "正在搜索註冊表...", IDC_STATIC, 33, 12, 83, 8 + LTEXT "正在搜索登錄...", IDC_STATIC, 33, 12, 83, 8 END /* String Table */ diff --git a/base/applications/regedit/listview.c b/base/applications/regedit/listview.c index 9d89173e628..87c8307d3e7 100644 --- a/base/applications/regedit/listview.c +++ b/base/applications/regedit/listview.c @@ -49,7 +49,7 @@ typedef struct tagSORT_INFO static INT g_iSortedColumn = 0; #define MAX_LIST_COLUMNS (IDS_LIST_COLUMN_LAST - IDS_LIST_COLUMN_FIRST + 1) -static const int default_column_widths[MAX_LIST_COLUMNS] = { 200, 175, 400 }; +static const int default_column_widths[MAX_LIST_COLUMNS] = { 35, 25, 40 }; static const int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_LEFT, LVCFMT_LEFT }; LPCWSTR GetValueName(HWND hwndLV, int iStartAt) @@ -91,7 +91,7 @@ VOID SetValueName(HWND hwndLV, LPCWSTR pszValueName) { ListView_SetItemState(hwndLV, i, 0, LVIS_FOCUSED | LVIS_SELECTED); } - if (pszValueName == NULL) + if (pszValueName == NULL || pszValueName[0] == 0) i = 0; else { @@ -101,6 +101,7 @@ VOID SetValueName(HWND hwndLV, LPCWSTR pszValueName) } ListView_SetItemState(hwndLV, i, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); + ListView_EnsureVisible(hwndLV, i, FALSE); iListViewSelect = i; } @@ -255,7 +256,7 @@ static void AddEntryToList(HWND hwndLV, LPWSTR Name, DWORD dwValType, void* ValB } } -static BOOL CreateListColumns(HWND hWndListView) +static BOOL CreateListColumns(HWND hWndListView, INT cxTotal) { WCHAR szText[50]; int index; @@ -269,7 +270,7 @@ static BOOL CreateListColumns(HWND hWndListView) for (index = 0; index < MAX_LIST_COLUMNS; index++) { lvC.iSubItem = index; - lvC.cx = default_column_widths[index]; + lvC.cx = (cxTotal * default_column_widths[index]) / 100; lvC.fmt = column_alignment[index]; LoadStringW(hInst, IDS_LIST_COLUMN_FIRST + index, szText, COUNT_OF(szText)); if (ListView_InsertColumn(hWndListView, index, &lvC) == -1) return FALSE; @@ -563,7 +564,7 @@ BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result) } return TRUE; case NM_SETFOCUS: - g_pChildWnd->nFocusPanel = 0; + g_pChildWnd->nFocusPanel = 1; break; case LVN_BEGINLABELEDIT: Info = (NMLVDISPINFO*)lParam; @@ -627,7 +628,7 @@ BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result) return FALSE; } -HWND CreateListView(HWND hwndParent, HMENU id) +HWND CreateListView(HWND hwndParent, HMENU id, INT cx) { RECT rcClient; HWND hwndLV; @@ -641,7 +642,7 @@ HWND CreateListView(HWND hwndParent, HMENU id) if (!hwndLV) return NULL; /* Initialize the image list, and add items to the control. */ - if (!CreateListColumns(hwndLV)) goto fail; + if (!CreateListColumns(hwndLV, cx)) goto fail; if (!InitListViewImageLists(hwndLV)) goto fail; return hwndLV; @@ -667,7 +668,7 @@ void DestroyListView(HWND hwndLV) } -BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath) +BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath, BOOL bSelectNone) { DWORD max_sub_key_len; DWORD max_val_name_len; @@ -737,6 +738,9 @@ BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath) { ListView_SetItemState(hwndLV, i, 0, LVIS_FOCUSED | LVIS_SELECTED); } + + if (bSelectNone) + iListViewSelect = -1; ListView_SetItemState(hwndLV, iListViewSelect, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); diff --git a/base/applications/regedit/main.c b/base/applications/regedit/main.c index e8cdc025617..df6b0d284b9 100644 --- a/base/applications/regedit/main.c +++ b/base/applications/regedit/main.c @@ -71,6 +71,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); wcFrame.hCursor = LoadCursorW(NULL, IDC_ARROW); + wcFrame.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1); wcFrame.lpszClassName = szFrameClass; hFrameWndClass = RegisterClassExW(&wcFrame); /* register frame window class */ @@ -82,6 +83,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) wcChild.hInstance = hInstance; wcChild.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_REGEDIT)); wcChild.hCursor = LoadCursorW(NULL, IDC_ARROW); + wcChild.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1); wcChild.lpszClassName = szChildClass; wcChild.hIconSm = (HICON)LoadImageW(hInstance, MAKEINTRESOURCEW(IDI_REGEDIT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), @@ -182,7 +184,7 @@ BOOL TranslateChildTabMessage(PMSG msg) if (msg->wParam != VK_TAB) return FALSE; if (GetParent(msg->hwnd) != g_pChildWnd->hWnd) return FALSE; - PostMessageW(g_pChildWnd->hWnd, WM_COMMAND, ID_SWITCH_PANELS, 0); + PostMessageW(hFrameWnd, WM_COMMAND, ID_SWITCH_PANELS, 0); return TRUE; } diff --git a/base/applications/regedit/main.h b/base/applications/regedit/main.h index 1060c2f9dd0..39ad919dd6b 100644 --- a/base/applications/regedit/main.h +++ b/base/applications/regedit/main.h @@ -27,7 +27,7 @@ #define TREE_WINDOW 2002 #define LIST_WINDOW 2003 -#define SPLIT_WIDTH 5 +#define SPLIT_WIDTH 5 #define SPLIT_MIN 30 #define COUNT_OF(a) (sizeof(a)/sizeof(a[0])) @@ -39,8 +39,6 @@ #define MAX_NEW_KEY_LEN 128 -extern HINSTANCE hInst; - /******************************************************************************/ enum OPTION_FLAGS @@ -86,66 +84,69 @@ extern WCHAR szChildClass[]; extern const WCHAR g_szGeneralRegKey[]; /* about.c */ -extern void ShowAboutBox(HWND hWnd); +void ShowAboutBox(HWND hWnd); /* childwnd.c */ -extern LRESULT CALLBACK ChildWndProc(HWND, UINT, WPARAM, LPARAM); -extern void ResizeWnd(int cx, int cy); -extern LPCWSTR get_root_key_name(HKEY hRootKey); +LRESULT CALLBACK ChildWndProc(HWND, UINT, WPARAM, LPARAM); +void ResizeWnd(int cx, int cy); +LPCWSTR get_root_key_name(HKEY hRootKey); +VOID UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath, BOOL bSelectNone); + +/* edit.c */ +BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCWSTR valueName, BOOL EditBin); +BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath); +LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName); +LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue); +LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen); +BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey); /* error.c */ -extern int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode, ...); -extern int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, ...); +int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode, ...); +int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, ...); /* find.c */ -extern void FindDialog(HWND hWnd); -extern BOOL FindNext(HWND hWnd); +void FindDialog(HWND hWnd); +BOOL FindNext(HWND hWnd); +void FindNextMessageBox(HWND hWnd); /* framewnd.c */ -extern LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM); -extern void SetupStatusBar(HWND hWnd, BOOL bResize); -extern void UpdateStatusBar(void); -extern BOOL CopyKeyName(HWND hWnd, HKEY hRootKey, LPCWSTR keyName); -extern BOOL ExportRegistryFile(HWND hWnd); +LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM); +void SetupStatusBar(HWND hWnd, BOOL bResize); +void UpdateStatusBar(void); +BOOL CopyKeyName(HWND hWnd, HKEY hRootKey, LPCWSTR keyName); +BOOL ExportRegistryFile(HWND hWnd); /* listview.c */ -extern HWND CreateListView(HWND hwndParent, HMENU id); -extern BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath); -extern LPCWSTR GetValueName(HWND hwndLV, int iStartAt); -extern BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result); -extern BOOL IsDefaultValue(HWND hwndLV, int i); +HWND CreateListView(HWND hwndParent, HMENU id, INT cx); +BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath, BOOL bSelectNone); +LPCWSTR GetValueName(HWND hwndLV, int iStartAt); +BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result); +BOOL TreeWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result); +BOOL IsDefaultValue(HWND hwndLV, int i); /* regedit.c */ LPCWSTR getAppName(void); -/* treeview.c */ -extern HWND CreateTreeView(HWND hwndParent, LPWSTR pHostName, HMENU id); -extern BOOL RefreshTreeView(HWND hWndTV); -extern BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem); -extern BOOL OnTreeExpanding(HWND hWnd, NMTREEVIEW* pnmtv); -extern LPCWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey); -extern BOOL DeleteNode(HWND hwndTV, HTREEITEM hItem); -extern HTREEITEM InsertNode(HWND hwndTV, HTREEITEM hItem, LPWSTR name); -extern HWND StartKeyRename(HWND hwndTV); -extern BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem); -extern BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath); -extern void DestroyTreeView(HWND hwndTV); -extern void DestroyListView(HWND hwndLV); -extern void DestroyMainMenu(void); - -/* edit.c */ -extern BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCWSTR valueName, BOOL EditBin); -extern BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath); -extern LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName); -extern LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue); -extern LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen); -extern BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey); - /* security.c */ -extern BOOL RegKeyEditPermissions(HWND hWndOwner, HKEY hKey, LPCWSTR lpMachine, LPCWSTR lpKeyName); +BOOL RegKeyEditPermissions(HWND hWndOwner, HKEY hKey, LPCWSTR lpMachine, LPCWSTR lpKeyName); /* settings.c */ -extern void LoadSettings(void); -extern void SaveSettings(void); +void LoadSettings(void); +void SaveSettings(void); + +/* treeview.c */ +HWND CreateTreeView(HWND hwndParent, LPWSTR pHostName, HMENU id); +BOOL RefreshTreeView(HWND hWndTV); +BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem); +BOOL OnTreeExpanding(HWND hWnd, NMTREEVIEW* pnmtv); +LPCWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey); +BOOL DeleteNode(HWND hwndTV, HTREEITEM hItem); +HTREEITEM InsertNode(HWND hwndTV, HTREEITEM hItem, LPWSTR name); +HWND StartKeyRename(HWND hwndTV); +BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem); +BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath); +void DestroyTreeView(HWND hwndTV); +void DestroyListView(HWND hwndLV); +void DestroyMainMenu(void); /* EOF */ diff --git a/base/applications/regedit/regedit.h b/base/applications/regedit/regedit.h index 929f205809a..52d13909180 100644 --- a/base/applications/regedit/regedit.h +++ b/base/applications/regedit/regedit.h @@ -8,6 +8,7 @@ #include #include #include +#include #include "main.h" #include "regproc.h" diff --git a/base/applications/regedit/regedit.rc b/base/applications/regedit/regedit.rc index 216d4956bd8..548316ad5ea 100644 --- a/base/applications/regedit/regedit.rc +++ b/base/applications/regedit/regedit.rc @@ -33,9 +33,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -IDI_OPEN_FILE ICON "res/folderopen.ico" -IDI_CLOSED_FILE ICON "res/folder.ico" -IDI_ROOT ICON "res/computer.ico" IDI_STRING ICON "res/string.ico" IDI_BIN ICON "res/bin.ico" IDI_REGEDIT ICON "res/regedit.ico" diff --git a/base/applications/regedit/regproc.c b/base/applications/regedit/regproc.c index 8d09bb349b7..41ac7c6be8b 100644 --- a/base/applications/regedit/regproc.c +++ b/base/applications/regedit/regproc.c @@ -851,9 +851,15 @@ static void processRegLinesW(FILE *in) if(*s_eol == '\r' && *(s_eol+1) == '\n') NextLine++; - while(*(NextLine+1) == ' ' || *(NextLine+1) == '\t') + while(isspaceW(*NextLine)) NextLine++; + if (!*NextLine) + { + s = NextLine; + break; + } + MoveMemory(s_eol - 1, NextLine, (CharsInBuf - (NextLine - s) + 1)*sizeof(WCHAR)); CharsInBuf -= NextLine - s_eol + 1; s_eol = 0; @@ -1386,7 +1392,7 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format) if (file) { fclose(file); } - HeapFree(GetProcessHeap(), 0, reg_key_name); + HeapFree(GetProcessHeap(), 0, reg_key_name_buf); HeapFree(GetProcessHeap(), 0, val_name_buf); HeapFree(GetProcessHeap(), 0, val_buf); HeapFree(GetProcessHeap(), 0, line_buf); diff --git a/base/applications/regedit/res/computer.ico b/base/applications/regedit/res/computer.ico deleted file mode 100644 index 5287a0b8a7e105d2701a74ea0f1b00683b58bc7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2550 zcmeHJU279j5Ix&;)3jQRjaomduBO(i)fd4Z;Dgwr58{hL6>7m&L?Z#IFU3>~ii#~n zCsu(&g{){&IJtgAs7V502WPP z0;u~I7W;t@T$|K2!Xh-Tlf77diQma2ip3(b+uL}4?J_Er3aZsAzAQf>9%FOmDK=w@ z2LbSTd$({wi?A2vHsvD-rTu@a=DBjub<&N@hN&2@rSqY?%q|rCw{(N z!sn$qtj$kj{r)u86!SBPFI>k*BEE0~nM?-hbQ-Bt3WY)e`FtKp_LxW{kjv$e&1O5j zQg5$!0=*OPasoz^!MNCD28;p!?|Q&!pH)Fc;J^uFcpn8rxdm z$)`4og8C@bN1;9n^--vgHne`Hd}^*xbA_7gjyk9Q3ia2nPYvEtU;lf3HuYSn=R~A7 zUx^4co%4uL*X6ppZ63`-;UPdU8c4FU-~}( Shz;la`Cp?KZfT5Bp7{eYn#6tp diff --git a/base/applications/regedit/res/folder.ico b/base/applications/regedit/res/folder.ico deleted file mode 100644 index 25802f9a82f5ee127ddcc91fe64bb36d96a084c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2862 zcmeHJNo$i)6g_!KY^+0)TIcCA8rwL}^R&@*tvD^JMvaZuXhan3ra@4w3Wn0w+BhL4 zjfm4mP(g!Ww9uxYs09ZEH-bOndfpdPVlY~#U2iyf-+lMpH+{)D7qGwzm&?W0hH?wA z2%r!84g~GMHuhzF13?>*8UU2*F@!1B+Cp&oH38s!~Ob26#)9VHlo;+XHn(fj@P&9@$pF<*Q%GY|0dqtIfFO1PqY6NUfno>mx%~owAG^f z>S3fW9l*Q$Er=c6g7*(&NM8=4`%)O`iwB4h(y{&Miq#<9x({6!_7Xw7z1N8AH?DKe zdUUnc5RA11(b=+xZ2+C;iRRttY}$nn4_eWDXakN_twsHgRXDjrUsAvI-$4Hj*z#0NPx**gAb8hNFZ@yk%pPxEo=IZ>Pff^*# zpx%7F{_o`Lx%FB)Cwu-s&8H@s=l|1u>a%(Of0Lg*KlNIu*L{K>tJln~Pu(|t-Pc#J zM(AOUVV<8gg!~GuF@!aSdFR%0?WG#)ZJT?s4R{UM-n8>b@unO#QcKLdDo#kGa zmFYGZ81@9qU>(k|40agWYTdY%mX5o)riR+;{`i7DTO6lE`wGT~W6vqR+d3OIW}$db z34A+uAa84dGcObh;b}_?3Vem|?<&G0p5ety6=-W~LogUbeSJL|8XAySSb&_oT-5o} zQB$0OjXBx){Ol$^x8B0n&UQFpuqEj5Sm=4LrQJr3f_ z^CrB#eHw3XonqffyuNW9uNsfwWv~n{uI)!>Z7DuHxPt2aoAB}BRfMkYMQ6=kglcvp zbVa=cq3T`es4hmRst6sGJL!JBzjFbN*Be>49354~bdFv2qy6%Bwm!69qE~D~`^7?h zykCWieH(BfHxuRg%W)!K5AnbKKY@S$1k4y)69%8tW|~;AaL%H|=}VR_TfSoDs?`}t zm@;+R^cgc}&7LziecpTvNtQi6d3?%*iK%Imypt^?j2<&0`MZrB$MKP)B60E%jwcR} zjt3|8vxW=}+c3+MkQlv#L7t?3Ve3Btra3Sn@rN-sV#edcQ?%N9Cr4s`P2{Rname5U#JUC zOZE%dFJ!-v{X+H&*)L?jko}Q-U7z|P)DNMqIQd$mJEz77H71hptbevls6)S$uXU+s zk$hdBIw;h&UguLAo%g4HI`ybvNF z7XF~A^^x^;55MBk`Mh8J*804M^tisR7vtx``{x};c(3`X^R6Sj>u7Fvcz$flvBO#; T*7d#Ad3V|on-d-XE@!?0rSt~c diff --git a/base/applications/regedit/resource.h b/base/applications/regedit/resource.h index c73c6aeae03..e66876ff866 100644 --- a/base/applications/regedit/resource.h +++ b/base/applications/regedit/resource.h @@ -39,9 +39,6 @@ #define IDC_REGEDIT_FRAME 110 #define IDR_REGEDIT_MENU 130 #define IDD_EXPORTRANGE 131 -#define IDI_OPEN_FILE 132 -#define IDI_CLOSED_FILE 133 -#define IDI_ROOT 134 #define IDI_STRING 135 #define IDI_BIN 136 #define IDR_POPUP_MENUS 137 @@ -155,8 +152,6 @@ #define IDS_QUERY_DELETE_KEY_ONE 32875 #define IDS_QUERY_DELETE_KEY_MORE 32876 #define IDS_QUERY_DELETE_KEY_CONFIRM 32877 -#define ID_TREE_SUGGESTION_MIN 32878 -#define ID_TREE_SUGGESTION_MAX 32887 #define ID_TREE_EXPORT 32888 #define ID_TREE_PERMISSIONS 32889 @@ -190,7 +185,6 @@ #define IDS_COLLAPSE 31204 #define IDS_NEW_KEY 31205 #define IDS_NEW_VALUE 31206 -#define IDS_GOTO_SUGGESTED_KEY 31207 #define IDS_IMPORT_PROMPT 31300 #define IDS_IMPORT_OK 31301 diff --git a/base/applications/regedit/settings.c b/base/applications/regedit/settings.c index 5d82a64625b..ba56d7e0308 100644 --- a/base/applications/regedit/settings.c +++ b/base/applications/regedit/settings.c @@ -20,12 +20,11 @@ */ #include "regedit.h" -#include const WCHAR g_szGeneralRegKey[] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit"; DECLSPEC_IMPORT ULONG WINAPIV DbgPrint(PCH Format,...); -/* +/* VV,VV,VV,VV,WA,WA,WA,WA,WB,WB,WB,WB,R1,R1,R1,R1 R2,R2,R2,R2,R3,R3,R3,R3,R4,R4,R4,r4,LL,LL,LL,LL TT,TT,TT,TT,RR,RR,RR,RR,BB,BB,BB,BB,SS,SS,SS,SS diff --git a/base/applications/regedit/treeview.c b/base/applications/regedit/treeview.c index 0f1a7706839..5bb593a4b5f 100644 --- a/base/applications/regedit/treeview.c +++ b/base/applications/regedit/treeview.c @@ -32,6 +32,10 @@ static LPWSTR pathBuffer; #define NUM_ICONS 3 +#define IDI_SHELL_FOLDER 4 +#define IDI_SHELL_FOLDER_OPEN 5 +#define IDI_SHELL_MY_COMPUTER 16 + static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKeyPath, int* pPathLen, int* pMaxLen) { TVITEMW item; @@ -439,23 +443,20 @@ static BOOL InitTreeViewImageLists(HWND hwndTV) { HIMAGELIST himl; /* handle to image list */ HICON hico; /* handle to icon */ + INT cx = GetSystemMetrics(SM_CXSMICON); + INT cy = GetSystemMetrics(SM_CYSMICON); + HMODULE hShell32 = GetModuleHandleW(L"shell32.dll"); /* Create the image list. */ - if ((himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), - GetSystemMetrics(SM_CYSMICON), - ILC_MASK | ILC_COLOR32, - 0, - NUM_ICONS)) == NULL) - { + if ((himl = ImageList_Create(cx, cy, ILC_MASK | ILC_COLOR32, 0, NUM_ICONS)) == NULL) return FALSE; - } /* Add the open file, closed file, and document bitmaps. */ - hico = LoadImageW(hInst, - MAKEINTRESOURCEW(IDI_OPEN_FILE), + hico = LoadImageW(hShell32, + MAKEINTRESOURCEW(IDI_SHELL_FOLDER_OPEN), IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), - GetSystemMetrics(SM_CYSMICON), + cx, + cy, 0); if (hico) { @@ -463,11 +464,11 @@ static BOOL InitTreeViewImageLists(HWND hwndTV) DestroyIcon(hico); } - hico = LoadImageW(hInst, - MAKEINTRESOURCEW(IDI_CLOSED_FILE), + hico = LoadImageW(hShell32, + MAKEINTRESOURCEW(IDI_SHELL_FOLDER), IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), - GetSystemMetrics(SM_CYSMICON), + cx, + cy, 0); if (hico) { @@ -475,11 +476,11 @@ static BOOL InitTreeViewImageLists(HWND hwndTV) DestroyIcon(hico); } - hico = LoadImageW(hInst, - MAKEINTRESOURCEW(IDI_ROOT), + hico = LoadImageW(hShell32, + MAKEINTRESOURCEW(IDI_SHELL_MY_COMPUTER), IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), - GetSystemMetrics(SM_CYSMICON), + cx, + cy, 0); if (hico) { @@ -625,6 +626,98 @@ done: return bSuccess; } +BOOL TreeWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result) +{ + UNREFERENCED_PARAMETER(wParam); + *Result = TRUE; + + switch (((LPNMHDR)lParam)->code) + { + case TVN_ITEMEXPANDING: + *Result = !OnTreeExpanding(g_pChildWnd->hTreeWnd, (NMTREEVIEW*)lParam); + return TRUE; + case TVN_SELCHANGED: + { + NMTREEVIEW* pnmtv = (NMTREEVIEW*)lParam; + HTREEITEM hParentItem = TreeView_GetParent(g_pChildWnd->hTreeWnd, pnmtv->itemNew.hItem); + UpdateAddress(pnmtv->itemNew.hItem, NULL, NULL, TRUE); + EnableMenuItem(hMenuFrame, ID_EDIT_PERMISSIONS, MF_BYCOMMAND | (hParentItem ? MF_ENABLED : MF_GRAYED)); + if (!hParentItem || !TreeView_GetParent(g_pChildWnd->hTreeWnd, hParentItem)) + { + EnableMenuItem(hMenuFrame , ID_EDIT_DELETE, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMenuFrame , ID_EDIT_RENAME, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hPopupMenus, ID_TREE_DELETE, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hPopupMenus, ID_TREE_RENAME, MF_BYCOMMAND | MF_GRAYED); + } + else + { + EnableMenuItem(hMenuFrame , ID_EDIT_DELETE, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hMenuFrame , ID_EDIT_RENAME, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hPopupMenus, ID_TREE_DELETE, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hPopupMenus, ID_TREE_RENAME, MF_BYCOMMAND | MF_ENABLED); + } + + return TRUE; + } + case NM_SETFOCUS: + g_pChildWnd->nFocusPanel = 0; + break; + case TVN_BEGINLABELEDIT: + { + LPNMTVDISPINFO ptvdi = (LPNMTVDISPINFO)lParam; + if (!TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem) || + !TreeView_GetParent(g_pChildWnd->hTreeWnd, TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem))) + { + *Result = TRUE; + } + else + *Result = FALSE; + return TRUE; + } + case TVN_ENDLABELEDIT: + { + LPCWSTR keyPath; + HKEY hRootKey; + HKEY hKey = NULL; + LPNMTVDISPINFO ptvdi = (LPNMTVDISPINFO)lParam; + LONG nRenResult; + LONG lResult = TRUE; + WCHAR szBuffer[MAX_PATH]; + WCHAR Caption[128]; + + if (ptvdi->item.pszText) + { + keyPath = GetItemPath(g_pChildWnd->hTreeWnd, TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem), &hRootKey); + if (wcslen(keyPath)) + _snwprintf(szBuffer, COUNT_OF(szBuffer), L"%s\\%s", keyPath, ptvdi->item.pszText); + else + _snwprintf(szBuffer, COUNT_OF(szBuffer), L"%s", ptvdi->item.pszText); + keyPath = GetItemPath(g_pChildWnd->hTreeWnd, ptvdi->item.hItem, &hRootKey); + if (RegOpenKeyExW(hRootKey, szBuffer, 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + lResult = FALSE; + RegCloseKey(hKey); + TreeView_EditLabel(g_pChildWnd->hTreeWnd, ptvdi->item.hItem); + } + else + { + nRenResult = RenameKey(hRootKey, keyPath, ptvdi->item.pszText); + if (nRenResult != ERROR_SUCCESS) + { + LoadStringW(hInst, IDS_ERROR, Caption, COUNT_OF(Caption)); + ErrorMessageBox(hWnd, Caption, nRenResult); + lResult = FALSE; + } + else + UpdateAddress(ptvdi->item.hItem, hRootKey, szBuffer, FALSE); + } + *Result = lResult; + } + return TRUE; + } + } + return FALSE; +} /* * CreateTreeView - creates a tree view control. @@ -687,8 +780,13 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath) while(keyPath[0]) { + size_t copyLength; s = wcschr(keyPath, L'\\'); - lstrcpynW(szPathPart, keyPath, s ? s - keyPath + 1 : wcslen(keyPath) + 1); + if (s != NULL) + copyLength = (s - keyPath) * sizeof(WCHAR); + else + copyLength = sizeof(szPathPart); + StringCbCopyNW(szPathPart, sizeof(szPathPart), keyPath, copyLength); /* Special case for root to expand root key abbreviations */ if (hItem == hRoot)