ReactOS  0.4.13-dev-235-g7373cb3
childwnd.c
Go to the documentation of this file.
1 /*
2  * Regedit child window
3  *
4  * Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #include "regedit.h"
22 
24 static int last_split;
26 HBRUSH SizingBrush = 0;
27 static WCHAR Suggestions[256];
28 
29 extern LPCWSTR get_root_key_name(HKEY hRootKey)
30 {
31  if (hRootKey == HKEY_CLASSES_ROOT) return L"HKEY_CLASSES_ROOT";
32  if (hRootKey == HKEY_CURRENT_USER) return L"HKEY_CURRENT_USER";
33  if (hRootKey == HKEY_LOCAL_MACHINE) return L"HKEY_LOCAL_MACHINE";
34  if (hRootKey == HKEY_USERS) return L"HKEY_USERS";
35  if (hRootKey == HKEY_CURRENT_CONFIG) return L"HKEY_CURRENT_CONFIG";
36  if (hRootKey == HKEY_DYN_DATA) return L"HKEY_DYN_DATA";
37 
38  return L"UNKNOWN HKEY, PLEASE REPORT";
39 }
40 
41 extern void ResizeWnd(int cx, int cy)
42 {
43  HDWP hdwp = BeginDeferWindowPos(4);
44  RECT rt, rs, rb;
45  const int nButtonWidth = 44;
46  const int nButtonHeight = 22;
47  int cyEdge = GetSystemMetrics(SM_CYEDGE);
49  SetRect(&rt, 0, 0, cx, cy);
50  cy = 0;
51  if (hStatusBar != NULL)
52  {
54  cy = rs.bottom - rs.top;
55  }
58  if (hdwp)
60  rt.left, rt.top,
61  rt.right - rt.left - nButtonWidth, nButtonHeight,
62  uFlags);
63  if (hdwp)
65  rt.right - nButtonWidth, rt.top,
66  nButtonWidth, nButtonHeight,
67  uFlags);
68  if (hdwp)
69  hdwp = DeferWindowPos(hdwp, g_pChildWnd->hTreeWnd, NULL,
70  rt.left,
71  rt.top + nButtonHeight + cyEdge,
73  rt.bottom - rt.top - cy - 2 * cyEdge,
74  uFlags);
75  if (hdwp)
76  hdwp = DeferWindowPos(hdwp, g_pChildWnd->hListWnd, NULL,
77  rt.left + cx,
78  rt.top + nButtonHeight + cyEdge,
79  rt.right - cx,
80  rt.bottom - rt.top - cy - 2 * cyEdge,
81  uFlags);
82  if (hdwp)
83  EndDeferWindowPos(hdwp);
84 }
85 
86 /*******************************************************************************
87  * Local module support methods
88  */
89 
90 static void draw_splitbar(HWND hWnd, int x)
91 {
92  RECT rt;
93  HGDIOBJ OldObj;
94  HDC hdc = GetDC(hWnd);
95 
96  if(!SizingPattern)
97  {
98  const DWORD Pattern[4] = {0x5555AAAA, 0x5555AAAA, 0x5555AAAA, 0x5555AAAA};
99  SizingPattern = CreateBitmap(8, 8, 1, 1, Pattern);
100  }
101  if(!SizingBrush)
102  {
104  }
105  GetClientRect(hWnd, &rt);
106  rt.left = x - SPLIT_WIDTH/2;
107  rt.right = x + SPLIT_WIDTH/2+1;
108  OldObj = SelectObject(hdc, SizingBrush);
109  PatBlt(hdc, rt.left, rt.top, rt.right - rt.left, rt.bottom - rt.top, PATINVERT);
110  SelectObject(hdc, OldObj);
111  ReleaseDC(hWnd, hdc);
112 }
113 
114 /*******************************************************************************
115  * finish_splitbar [internal]
116  *
117  * make the splitbar invisible and resize the windows
118  * (helper for ChildWndProc)
119  */
120 static void finish_splitbar(HWND hWnd, int x)
121 {
122  RECT rt;
123 
125  last_split = -1;
126  GetClientRect(hWnd, &rt);
128  ResizeWnd(rt.right, rt.bottom);
129  ReleaseCapture();
130 }
131 
132 /*******************************************************************************
133  *
134  * FUNCTION: ChildWnd_CmdWndProc(HWND, unsigned, WORD, LONG)
135  *
136  * PURPOSE: Processes WM_COMMAND messages for the main frame window.
137  *
138  */
139 
141 {
142  HTREEITEM hSelection;
143  HKEY hRootKey;
144  LPCWSTR keyPath, s;
145  WORD wID = LOWORD(wParam);
146 
148 
149  switch (wID)
150  {
151  /* Parse the menu selections: */
152  case ID_REGISTRY_EXIT:
154  break;
155  case ID_VIEW_REFRESH:
156  /* TODO */
157  break;
160  break;
163  break;
164  case ID_TREE_RENAME:
167  break;
168  case ID_TREE_DELETE:
170  keyPath = GetItemPath(g_pChildWnd->hTreeWnd, hSelection, &hRootKey);
171 
172  if (keyPath == 0 || *keyPath == 0)
173  {
175  }
176  else if (DeleteKey(hWnd, hRootKey, keyPath))
178  break;
179  case ID_TREE_EXPORT:
181  break;
182  case ID_EDIT_FIND:
183  FindDialog(hWnd);
184  break;
185  case ID_EDIT_COPYKEYNAME:
187  keyPath = GetItemPath(g_pChildWnd->hTreeWnd, hSelection, &hRootKey);
188  CopyKeyName(hWnd, hRootKey, keyPath);
189  break;
190  case ID_EDIT_NEW_KEY:
192  break;
197  break;
198  case ID_SWITCH_PANELS:
201  break;
202  default:
203  if ((wID >= ID_TREE_SUGGESTION_MIN) && (wID <= ID_TREE_SUGGESTION_MAX))
204  {
205  s = Suggestions;
206  while(wID > ID_TREE_SUGGESTION_MIN)
207  {
208  if (*s)
209  s += wcslen(s) + 1;
210  wID--;
211  }
213  break;
214  }
215  return FALSE;
216  }
217  return TRUE;
218 }
219 
220 /*******************************************************************************
221  *
222  * Key suggestion
223  */
224 
225 #define MIN(a,b) ((a < b) ? (a) : (b))
226 
227 static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions,
228  size_t iSuggestionsLength)
229 {
230  WCHAR szBuffer[256];
231  WCHAR szLastFound[256];
232  size_t i;
233  HKEY hOtherKey, hSubKey;
234  BOOL bFound;
235 
236  memset(pszSuggestions, 0, iSuggestionsLength * sizeof(*pszSuggestions));
237  iSuggestionsLength--;
238 
239  /* Are we a root key in HKEY_CLASSES_ROOT? */
240  if ((hRootKey == HKEY_CLASSES_ROOT) && pszKeyPath[0] && !wcschr(pszKeyPath, L'\\'))
241  {
242  do
243  {
244  bFound = FALSE;
245 
246  /* Check default key */
247  if (QueryStringValue(hRootKey, pszKeyPath, NULL,
248  szBuffer, COUNT_OF(szBuffer)) == ERROR_SUCCESS)
249  {
250  /* Sanity check this key; it cannot be empty, nor can it be a
251  * loop back */
252  if ((szBuffer[0] != L'\0') && _wcsicmp(szBuffer, pszKeyPath))
253  {
254  if (RegOpenKeyW(hRootKey, szBuffer, &hOtherKey) == ERROR_SUCCESS)
255  {
256  lstrcpynW(pszSuggestions, L"HKCR\\", (int) iSuggestionsLength);
257  i = wcslen(pszSuggestions);
258  pszSuggestions += i;
259  iSuggestionsLength -= i;
260 
261  lstrcpynW(pszSuggestions, szBuffer, (int) iSuggestionsLength);
262  i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength);
263  pszSuggestions += i;
264  iSuggestionsLength -= i;
265  RegCloseKey(hOtherKey);
266 
267  bFound = TRUE;
268  wcscpy(szLastFound, szBuffer);
269  pszKeyPath = szLastFound;
270  }
271  }
272  }
273  }
274  while(bFound && (iSuggestionsLength > 0));
275 
276  /* Check CLSID key */
277  if (RegOpenKeyW(hRootKey, pszKeyPath, &hSubKey) == ERROR_SUCCESS)
278  {
279  if (QueryStringValue(hSubKey, L"CLSID", NULL, szBuffer,
280  COUNT_OF(szBuffer)) == ERROR_SUCCESS)
281  {
282  lstrcpynW(pszSuggestions, L"HKCR\\CLSID\\", (int)iSuggestionsLength);
283  i = wcslen(pszSuggestions);
284  pszSuggestions += i;
285  iSuggestionsLength -= i;
286 
287  lstrcpynW(pszSuggestions, szBuffer, (int)iSuggestionsLength);
288  i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength);
289  pszSuggestions += i;
290  iSuggestionsLength -= i;
291  }
292  RegCloseKey(hSubKey);
293  }
294  }
295 }
296 
297 
299 {
300  WNDPROC oldwndproc;
301  static WCHAR s_szNode[256];
302  oldwndproc = (WNDPROC)GetWindowLongPtr(hwnd, GWLP_USERDATA);
303 
304  switch (uMsg)
305  {
306  case WM_KEYUP:
307  if (wParam == VK_RETURN)
308  {
309  GetWindowTextW(hwnd, s_szNode, COUNT_OF(s_szNode));
310  SelectNode(g_pChildWnd->hTreeWnd, s_szNode);
311  }
312  break;
313  default:
314  break;
315  }
316  return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam);
317 }
318 
319 static VOID
321 {
322  LPCWSTR keyPath, rootName;
323  LPWSTR fullPath;
324 
325  /* Wipe the listview, the status bar and the address bar if the root key was selected */
327  {
331  return;
332  }
333 
334  if (pszPath == NULL)
335  keyPath = GetItemPath(g_pChildWnd->hTreeWnd, hItem, &hRootKey);
336  else
337  keyPath = pszPath;
338 
339  if (keyPath)
340  {
341  RefreshListView(g_pChildWnd->hListWnd, hRootKey, keyPath);
342  rootName = get_root_key_name(hRootKey);
343  fullPath = HeapAlloc(GetProcessHeap(), 0, (wcslen(rootName) + 1 + wcslen(keyPath) + 1) * sizeof(WCHAR));
344  if (fullPath)
345  {
346  /* set (correct) the address bar text */
347  if (keyPath[0] != L'\0')
348  swprintf(fullPath, L"%s\\%s", rootName, keyPath);
349  else
350  fullPath = wcscpy(fullPath, rootName);
351  SendMessageW(hStatusBar, SB_SETTEXTW, 0, (LPARAM)fullPath);
353  HeapFree(GetProcessHeap(), 0, fullPath);
354  /* disable hive manipulation items temporarily (enable only if necessary) */
357  /* compare the strings to see if we should enable/disable the "Load Hive" menus accordingly */
358  if (!(_wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") &&
359  _wcsicmp(rootName, L"HKEY_USERS")))
360  {
361  /*
362  * enable the unload menu item if at the root, otherwise
363  * enable the load menu item if there is no slash in
364  * keyPath (ie. immediate child selected)
365  */
366  if(keyPath[0] == L'\0')
368  else if(!wcschr(keyPath, L'\\'))
370  }
371  }
372  }
373 }
374 
375 /*******************************************************************************
376  *
377  * FUNCTION: ChildWndProc(HWND, unsigned, WORD, LONG)
378  *
379  * PURPOSE: Processes messages for the child windows.
380  *
381  * WM_COMMAND - process the application menu
382  * WM_DESTROY - post a quit message and return
383  *
384  */
386 {
387  BOOL Result;
388 
389  switch (message)
390  {
391  case WM_CREATE:
392  {
393  WNDPROC oldproc;
394  HFONT hFont;
396 
397  /* Load "My Computer" string */
399 
401  if (!g_pChildWnd) return 0;
402 
404  g_pChildWnd->nSplitPos = 250;
405  g_pChildWnd->hWnd = hWnd;
408  hWnd, (HMENU)0, hInst, 0);
411  hWnd, (HMENU)0, hInst, 0);
413  g_pChildWnd->hListWnd = CreateListView(hWnd, (HMENU) LIST_WINDOW/*, g_pChildWnd->szPath*/);
415 
416  /* set the address bar and button font */
418  {
421  WM_SETFONT,
422  (WPARAM)hFont,
423  0);
425  WM_SETFONT,
426  (WPARAM)hFont,
427  0);
428  }
429  /* Subclass the AddressBar */
433  break;
434  }
435  case WM_COMMAND:
436  if(HIWORD(wParam) == BN_CLICKED)
437  {
439  }
440 
442  {
443  goto def;
444  }
445  break;
446  case WM_SETCURSOR:
447  if (LOWORD(lParam) == HTCLIENT)
448  {
449  POINT pt;
450  GetCursorPos(&pt);
453  {
455  return TRUE;
456  }
457  }
458  goto def;
459  case WM_DESTROY:
462  DestroyMainMenu();
464  g_pChildWnd = NULL;
465  PostQuitMessage(0);
466  break;
467  case WM_LBUTTONDOWN:
468  {
469  RECT rt;
470  int x = (short)LOWORD(lParam);
471  GetClientRect(hWnd, &rt);
473  {
476  SetCapture(hWnd);
477  }
478  break;
479  }
480 
481  case WM_LBUTTONUP:
482  case WM_RBUTTONDOWN:
483  if (GetCapture() == hWnd)
484  {
486  }
487  break;
488 
489  case WM_CAPTURECHANGED:
490  if (GetCapture()==hWnd && last_split>=0)
492  break;
493 
494  case WM_KEYDOWN:
495  if (wParam == VK_ESCAPE)
496  if (GetCapture() == hWnd)
497  {
498  RECT rt;
500  GetClientRect(hWnd, &rt);
501  ResizeWnd(rt.right, rt.bottom);
502  last_split = -1;
503  ReleaseCapture();
505  }
506  break;
507 
508  case WM_MOUSEMOVE:
509  if (GetCapture() == hWnd)
510  {
511  HDC hdc;
512  RECT rt;
513  HGDIOBJ OldObj;
514  int x = LOWORD(lParam);
515  if(!SizingPattern)
516  {
517  const DWORD Pattern[4] = {0x5555AAAA, 0x5555AAAA, 0x5555AAAA, 0x5555AAAA};
518  SizingPattern = CreateBitmap(8, 8, 1, 1, Pattern);
519  }
520  if(!SizingBrush)
521  {
523  }
524 
525  GetClientRect(hWnd, &rt);
526  x = (SHORT) min(max(x, SPLIT_MIN), rt.right - SPLIT_MIN);
527  if(last_split != x)
528  {
529  rt.left = last_split-SPLIT_WIDTH/2;
530  rt.right = last_split+SPLIT_WIDTH/2+1;
531  hdc = GetDC(hWnd);
532  OldObj = SelectObject(hdc, SizingBrush);
533  PatBlt(hdc, rt.left, rt.top, rt.right - rt.left, rt.bottom - rt.top, PATINVERT);
534  last_split = x;
535  rt.left = x-SPLIT_WIDTH/2;
536  rt.right = x+SPLIT_WIDTH/2+1;
537  PatBlt(hdc, rt.left, rt.top, rt.right - rt.left, rt.bottom - rt.top, PATINVERT);
538  SelectObject(hdc, OldObj);
539  ReleaseDC(hWnd, hdc);
540  }
541  }
542  break;
543 
544  case WM_SETFOCUS:
545  if (g_pChildWnd != NULL)
546  {
548  }
549  break;
550 
551  case WM_TIMER:
552  break;
553 
554  case WM_NOTIFY:
555  if ((int)wParam == TREE_WINDOW && g_pChildWnd != NULL)
556  {
557  switch (((LPNMHDR)lParam)->code)
558  {
559  case TVN_ITEMEXPANDING:
561  case TVN_SELCHANGED:
562  {
563  NMTREEVIEW* pnmtv = (NMTREEVIEW*)lParam;
564  /* Get the parent of the current item */
565  HTREEITEM hParentItem = TreeView_GetParent(g_pChildWnd->hTreeWnd, pnmtv->itemNew.hItem);
566 
567  UpdateAddress(pnmtv->itemNew.hItem, NULL, NULL);
568 
569  /*
570  * Disable Delete/Rename menu options for 'My Computer' (first item so doesn't have any parent)
571  * and HKEY_* keys (their parent is 'My Computer' and the previous remark applies).
572  */
573  if (!hParentItem || !TreeView_GetParent(g_pChildWnd->hTreeWnd, hParentItem))
574  {
579  }
580  else
581  {
586  }
587 
588  break;
589  }
590  case NM_SETFOCUS:
592  break;
593  case TVN_BEGINLABELEDIT:
594  {
595  LPNMTVDISPINFO ptvdi;
596  /* cancel label edit for rootkeys */
597  ptvdi = (LPNMTVDISPINFO) lParam;
598  if (!TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem) ||
600  return TRUE;
601  break;
602  }
603  case TVN_ENDLABELEDIT:
604  {
605  LPCWSTR keyPath;
606  HKEY hRootKey;
607  HKEY hKey = NULL;
608  LPNMTVDISPINFO ptvdi;
609  LONG lResult = TRUE;
610  WCHAR szBuffer[MAX_PATH];
611 
612  ptvdi = (LPNMTVDISPINFO) lParam;
613  if (ptvdi->item.pszText)
614  {
615  keyPath = GetItemPath(g_pChildWnd->hTreeWnd, TreeView_GetParent(g_pChildWnd->hTreeWnd, ptvdi->item.hItem), &hRootKey);
616  _snwprintf(szBuffer, COUNT_OF(szBuffer), L"%s\\%s", keyPath, ptvdi->item.pszText);
617  keyPath = GetItemPath(g_pChildWnd->hTreeWnd, ptvdi->item.hItem, &hRootKey);
618  if (RegOpenKeyExW(hRootKey, szBuffer, 0, KEY_READ, &hKey) == ERROR_SUCCESS)
619  {
620  lResult = FALSE;
621  RegCloseKey(hKey);
622  TreeView_EditLabel(g_pChildWnd->hTreeWnd, ptvdi->item.hItem);
623  }
624  else
625  {
626  if (RenameKey(hRootKey, keyPath, ptvdi->item.pszText) != ERROR_SUCCESS)
627  lResult = FALSE;
628  else
629  UpdateAddress(ptvdi->item.hItem, hRootKey, szBuffer);
630  }
631  return lResult;
632  }
633  }
634  default:
635  return 0;
636  }
637  }
638  else
639  {
640  if ((int)wParam == LIST_WINDOW && g_pChildWnd != NULL)
641  {
642  switch (((LPNMHDR)lParam)->code)
643  {
644  case NM_SETFOCUS:
646  break;
647  default:
649  {
650  goto def;
651  }
652  return Result;
653  break;
654  }
655  }
656  }
657  break;
658 
659  case WM_CONTEXTMENU:
660  {
661  POINT pt;
663  {
664  int i, cnt;
665  BOOL IsDefault;
666  pt.x = (short) LOWORD(lParam);
667  pt.y = (short) HIWORD(lParam);
670  if (pt.x == -1 && pt.y == -1)
671  {
672  RECT rc;
673  if (i != -1)
674  {
675  rc.left = LVIR_BOUNDS;
677  pt.x = rc.left + 8;
678  pt.y = rc.top + 8;
679  }
680  else
681  pt.x = pt.y = 0;
683  }
684  if(i == -1)
685  {
687  }
688  else
689  {
692  IsDefault = IsDefaultValue(g_pChildWnd->hListWnd, i);
693  if(cnt == 1)
695  else
699 
701  }
702  }
703  else if ((HWND)wParam == g_pChildWnd->hTreeWnd)
704  {
705  TVHITTESTINFO hti;
706  HMENU hContextMenu;
707  TVITEMW item;
708  MENUITEMINFOW mii;
709  WCHAR resource[256];
710  WCHAR buffer[256];
711  LPWSTR s;
712  LPCWSTR keyPath;
713  HKEY hRootKey;
714  int iLastPos;
715  WORD wID;
716 
717  pt.x = (short) LOWORD(lParam);
718  pt.y = (short) HIWORD(lParam);
719 
720  if (pt.x == -1 && pt.y == -1)
721  {
722  RECT rc;
724  if (hti.hItem != NULL)
725  {
727  pt.x = rc.left + 8;
728  pt.y = rc.top + 8;
730  hti.flags = TVHT_ONITEM;
731  }
732  else
733  hti.flags = 0;
734  }
735  else
736  {
737  hti.pt.x = pt.x;
738  hti.pt.y = pt.y;
741  }
742 
743  if (hti.flags & TVHT_ONITEM)
744  {
745  hContextMenu = GetSubMenu(hPopupMenus, PM_TREECONTEXT);
747 
748  memset(&item, 0, sizeof(item));
749  item.mask = TVIF_STATE | TVIF_CHILDREN;
750  item.hItem = hti.hItem;
752 
753  /* Set the Expand/Collapse menu item appropriately */
755  memset(&mii, 0, sizeof(mii));
756  mii.cbSize = sizeof(mii);
758  mii.fState = (item.cChildren > 0) ? MFS_DEFAULT : MFS_GRAYED;
760  mii.dwTypeData = (LPWSTR) buffer;
761  SetMenuItemInfo(hContextMenu, 0, TRUE, &mii);
762 
763  /* Remove any existing suggestions */
764  memset(&mii, 0, sizeof(mii));
765  mii.cbSize = sizeof(mii);
766  mii.fMask = MIIM_ID;
767  GetMenuItemInfo(hContextMenu, GetMenuItemCount(hContextMenu) - 1, TRUE, &mii);
768  if ((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX))
769  {
770  do
771  {
772  iLastPos = GetMenuItemCount(hContextMenu) - 1;
773  GetMenuItemInfo(hContextMenu, iLastPos, TRUE, &mii);
774  RemoveMenu(hContextMenu, iLastPos, MF_BYPOSITION);
775  }
776  while((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX));
777  }
778 
779  /* Come up with suggestions */
780  keyPath = GetItemPath(g_pChildWnd->hTreeWnd, NULL, &hRootKey);
781  SuggestKeys(hRootKey, keyPath, Suggestions, COUNT_OF(Suggestions));
782  if (Suggestions[0])
783  {
784  AppendMenu(hContextMenu, MF_SEPARATOR, 0, NULL);
785 
787 
788  s = Suggestions;
790  while(*s && (wID <= ID_TREE_SUGGESTION_MAX))
791  {
793 
794  memset(&mii, 0, sizeof(mii));
795  mii.cbSize = sizeof(mii);
796  mii.fMask = MIIM_STRING | MIIM_ID;
797  mii.wID = wID++;
798  mii.dwTypeData = buffer;
799  InsertMenuItem(hContextMenu, GetMenuItemCount(hContextMenu), TRUE, &mii);
800 
801  s += wcslen(s) + 1;
802  }
803  }
804  TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, g_pChildWnd->hWnd, NULL);
805  }
806  }
807  break;
808  }
809 
810  case WM_SIZE:
811  if (wParam != SIZE_MINIMIZED && g_pChildWnd != NULL)
812  {
814  }
815  /* fall through */
816  default:
817 def:
819  }
820  return 0;
821 }
#define HKEY_USERS
Definition: winreg.h:13
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define IDC_SIZEWE
Definition: winuser.h:689
#define MB_ICONHAND
Definition: winuser.h:782
#define IDS_GOTO_SUGGESTED_KEY
Definition: resource.h:193
#define ID_TREE_RENAME
Definition: resource.h:154
#define ID_SWITCH_PANELS
Definition: resource.h:151
LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: childwnd.c:385
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define ListView_GetNextItem(hwnd, i, flags)
Definition: commctrl.h:2406
#define max(a, b)
Definition: svc.c:63
Definition: tftpd.h:59
HDWP WINAPI BeginDeferWindowPos(_In_ int)
#define MF_DISABLED
Definition: winuser.h:130
#define TRUE
Definition: types.h:120
void DestroyListView(HWND hwndLV)
Definition: listview.c:653
#define ID_TREE_COLLAPSEBRANCH
Definition: resource.h:97
ChildWnd * g_pChildWnd
Definition: childwnd.c:23
#define TreeView_GetItemRect(hwnd, hitem, prc, code)
Definition: commctrl.h:3401
#define PATINVERT
Definition: wingdi.h:327
#define MF_BYCOMMAND
Definition: winuser.h:202
static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions, size_t iSuggestionsLength)
Definition: childwnd.c:227
long y
Definition: polytest.cpp:48
#define ID_REGISTRY_LOADHIVE
Definition: resource.h:106
#define ERROR_SUCCESS
Definition: deptool.c:10
#define WM_CONTEXTMENU
Definition: richedit.h:64
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
#define WM_LBUTTONDOWN
Definition: winuser.h:1752
LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: childwnd.c:298
BOOL ExportRegistryFile(HWND hWnd)
Definition: framewnd.c:586
#define ID_EDIT_COPYKEYNAME
Definition: resource.h:61
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
long x
Definition: polytest.cpp:48
static void finish_splitbar(HWND hWnd, int x)
Definition: childwnd.c:120
HDC WINAPI GetDC(_In_opt_ HWND)
#define PM_MODIFYVALUE
Definition: main.h:35
#define ID_TREE_EXPORT
Definition: resource.h:160
#define KEY_READ
Definition: nt_native.h:1023
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
#define pt(x, y)
Definition: drawing.c:79
#define TreeView_EditLabel(hwnd, hitem)
Definition: commctrl.h:3476
#define HKEY_CURRENT_USER
Definition: winreg.h:11
HWND hTreeWnd
Definition: main.h:60
#define ID_EDIT_FIND
Definition: resource.h:62
#define BS_TEXT
Definition: winuser.h:276
#define WM_CAPTURECHANGED
Definition: winuser.h:1784
HWND hListWnd
Definition: main.h:61
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:27
#define BS_DEFPUSHBUTTON
Definition: pedump.c:652
HWND hWnd
Definition: settings.c:17
LONG top
Definition: windef.h:292
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1497
GLuint buffer
Definition: glext.h:5915
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
HWND WINAPI SetFocus(_In_opt_ HWND)
static BOOL ChildWnd_CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: childwnd.c:140
LPWSTR dwTypeData
Definition: winuser.h:3211
#define LVNI_SELECTED
Definition: commctrl.h:2396
UINT_PTR WPARAM
Definition: windef.h:207
#define HKEY_DYN_DATA
Definition: winreg.h:16
#define WS_CHILD
Definition: pedump.c:617
LONG left
Definition: windef.h:291
#define SWP_NOZORDER
Definition: winuser.h:1232
UINT uFlags
Definition: api.c:60
#define MFS_DEFAULT
Definition: winuser.h:743
#define VK_ESCAPE
Definition: winuser.h:2168
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:2635
#define BS_CENTER
Definition: winuser.h:260
#define HKEY_CURRENT_CONFIG
Definition: winreg.h:15
LONG right
Definition: windef.h:293
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define VK_RETURN
Definition: winuser.h:2155
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
#define SPLIT_WIDTH
Definition: eventvwr.c:62
HFONT hFont
Definition: main.c:53
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define lstrcpynW
Definition: compat.h:397
LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName)
Definition: edit.c:1489
HBITMAP SizingPattern
Definition: childwnd.c:25
#define ID_EDIT_NEW_BINARYVALUE
Definition: resource.h:67
BOOL WINAPI PatBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:93
int nSplitPos
Definition: main.h:65
#define TPM_RIGHTBUTTON
Definition: winuser.h:2334
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define ID_REGISTRY_EXIT
Definition: resource.h:53
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
#define ListView_GetSelectedCount(hwndLV)
Definition: commctrl.h:2681
#define TVN_ENDLABELEDIT
Definition: commctrl.h:3716
#define TVIF_CHILDREN
Definition: commctrl.h:3244
#define ID_TREE_SUGGESTION_MIN
Definition: resource.h:158
#define MIIM_STATE
Definition: winuser.h:716
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
#define NMTREEVIEW
Definition: commctrl.h:3614
#define ID_EDIT_DELETE
Definition: resource.h:59
#define WM_SETCURSOR
Definition: winuser.h:1618
short SHORT
Definition: pedump.c:59
#define MF_BYPOSITION
Definition: winuser.h:203
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3311
BOOL IsDefaultValue(HWND hwndLV, int i)
Definition: listview.c:107
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
#define TVN_BEGINLABELEDIT
Definition: commctrl.h:3715
HWND WINAPI GetCapture(void)
Definition: message.c:2879
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define TREE_WINDOW
Definition: main.h:27
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define CW_USEDEFAULT
Definition: winuser.h:225
BOOL CopyKeyName(HWND hWnd, HKEY hRootKey, LPCWSTR keyName)
Definition: framewnd.c:790
#define GWLP_USERDATA
Definition: treelist.c:63
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:570
static void draw_splitbar(HWND hWnd, int x)
Definition: childwnd.c:90
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
smooth NULL
Definition: ftsmooth.c:416
#define TVE_COLLAPSE
Definition: commctrl.h:3394
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
#define WM_KEYDOWN
Definition: winuser.h:1691
#define MF_SEPARATOR
Definition: winuser.h:137
static WCHAR Suggestions[256]
Definition: childwnd.c:27
LONG_PTR LPARAM
Definition: windef.h:208
#define SM_CYEDGE
Definition: winuser.h:999
#define SPLIT_MIN
Definition: main.h:31
#define LVNI_FOCUSED
Definition: commctrl.h:2395
#define ID_EDIT_RENAME
Definition: resource.h:60
BOOL DeleteNode(HWND hwndTV, HTREEITEM hItem)
Definition: treeview.c:102
LPCWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY *phRootKey)
Definition: treeview.c:83
#define WS_CHILDWINDOW
Definition: pedump.c:639
#define WM_SETTEXT
Definition: winuser.h:1599
#define WM_DESTROY
Definition: winuser.h:1591
HTREEITEM hItem
Definition: commctrl.h:3493
#define MIIM_ID
Definition: winuser.h:717
#define WM_RBUTTONDOWN
Definition: winuser.h:1755
#define GetMenuItemInfo
Definition: winuser.h:5654
HBRUSH WINAPI CreatePatternBrush(_In_ HBITMAP)
#define SetMenuItemInfo
Definition: winuser.h:5716
BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result)
Definition: listview.c:543
#define ID_VIEW_REFRESH
Definition: resource.h:58
WCHAR szPath[MAX_PATH]
Definition: main.h:67
#define ID_TREE_SUGGESTION_MAX
Definition: resource.h:159
#define MIN(a, b)
Definition: childwnd.c:225
#define COUNT_OF(a)
Definition: main.h:33
static VOID DestroyTreeView(HWND hTreeView)
#define TreeView_GetSelection(hwnd)
Definition: commctrl.h:3445
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define AppendMenu
Definition: winuser.h:5597
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
#define TreeView_HitTest(hwnd, lpht)
Definition: commctrl.h:3485
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define WM_SIZE
Definition: winuser.h:1593
static int last_split
Definition: childwnd.c:24
HMENU hPopupMenus
Definition: main.c:33
#define NM_SETFOCUS
Definition: commctrl.h:135
#define SWP_NOACTIVATE
Definition: winuser.h:1227
#define ID_REGISTRY_UNLOADHIVE
Definition: resource.h:107
void DestroyMainMenu()
Definition: main.c:157
HWND hWnd
Definition: main.h:59
#define TVN_SELCHANGED
Definition: commctrl.h:3707
#define WM_TIMER
Definition: winuser.h:1718
#define MF_ENABLED
Definition: winuser.h:128
#define MAX_PATH
Definition: compat.h:26
#define swprintf(buf, format,...)
Definition: sprintf.c:56
#define PM_TREECONTEXT
Definition: main.h:37
#define WM_KEYUP
Definition: winuser.h:1692
unsigned short WORD
Definition: ntddk_ex.h:93
int WINAPI GetSystemMetrics(_In_ int)
#define BN_CLICKED
Definition: winuser.h:1886
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IDS_MY_COMPUTER
Definition: resource.h:131
HWND hStatusBar
Definition: main.cpp:35
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2074
#define SIZE_MINIMIZED
Definition: winuser.h:2460
#define SB_SETTEXTW
Definition: commctrl.h:1914
HWND CreateTreeView(HWND hwndParent, LPWSTR pHostName, HMENU id)
Definition: treeview.c:634
HWND hAddressBtnWnd
Definition: main.h:63
#define TVE_EXPAND
Definition: commctrl.h:3395
#define DEFAULT_GUI_FONT
Definition: wingdi.h:908
void ResizeWnd(int cx, int cy)
Definition: childwnd.c:41
static VOID UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath)
Definition: childwnd.c:320
#define ID_EDIT_NEW_KEY
Definition: resource.h:65
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1250
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
HDC hdc
Definition: main.c:9
#define MFS_GRAYED
Definition: winuser.h:746
BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath)
Definition: listview.c:670
GLdouble s
Definition: gl.h:2039
#define TreeView_GetParent(hwnd, hitem)
Definition: commctrl.h:3441
void FindDialog(HWND hWnd)
Definition: find.c:813
#define WS_TABSTOP
Definition: pedump.c:634
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define WM_COMMAND
Definition: winuser.h:1716
LPCWSTR get_root_key_name(HKEY hRootKey)
Definition: childwnd.c:29
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define BS_VCENTER
Definition: winuser.h:279
#define LVM_GETITEMRECT
Definition: commctrl.h:2449
#define GWLP_WNDPROC
Definition: treelist.c:66
#define ID_EDIT_NEW_DWORDVALUE
Definition: resource.h:68
#define TVIS_EXPANDED
Definition: commctrl.h:3256
#define BS_FLAT
Definition: winuser.h:280
BOOL WINAPI MessageBeep(_In_ UINT)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2859
#define ID_EDIT_MODIFY
Definition: resource.h:64
#define MIIM_STRING
Definition: winuser.h:722
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND hFrameWnd
Definition: main.c:30
#define TVN_ITEMEXPANDING
Definition: commctrl.h:3710
#define ID_EDIT_NEW_STRINGVALUE
Definition: resource.h:66
LONG QueryStringValue(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR lpValueName, LPTSTR pszBuffer, DWORD dwBufferLen)
Definition: settings.c:19
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
HWND WINAPI SetCapture(_In_ HWND hWnd)
#define LVIR_BOUNDS
Definition: commctrl.h:2444
HINSTANCE hInst
Definition: dxdiag.c:13
HMENU hMenuFrame
Definition: main.c:32
static ATOM item
Definition: dde.c:856
#define WS_EX_CLIENTEDGE
Definition: winuser.h:384
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1378
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define TreeView_SelectItem(hwnd, hitem)
Definition: commctrl.h:3453
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_LBUTTONUP
Definition: winuser.h:1753
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
Definition: edit.c:1456
#define PM_NEW
Definition: main.h:36
#define ID_TREE_EXPANDBRANCH
Definition: resource.h:95
#define min(a, b)
Definition: monoChain.cc:55
unsigned int UINT
Definition: ndis.h:50
#define WM_MOUSEMOVE
Definition: winuser.h:1751
BOOL CreateListView(PMAIN_WND_INFO Info)
Definition: listview.c:355
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define WM_SETFONT
Definition: winuser.h:1632
#define LPNMTVDISPINFO
Definition: commctrl.h:3648
BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem)
Definition: treeview.c:571
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define IDC_ARROW
Definition: winuser.h:682
_Out_opt_ int * cx
Definition: commctrl.h:570
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2888
HWND hAddressBarWnd
Definition: main.h:62
Definition: main.h:57
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CREATE
Definition: winuser.h:1590
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define LIST_WINDOW
Definition: main.h:28
BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath)
Definition: treeview.c:665
#define HIWORD(l)
Definition: typedefs.h:246
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3381
LONG bottom
Definition: windef.h:294
#define TVIF_STATE
Definition: commctrl.h:3241
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
static HBITMAP
Definition: button.c:44
#define GetWindowLongPtr
Definition: treelist.c:73
#define ID_TREE_DELETE
Definition: resource.h:153
#define WM_SETFOCUS
Definition: winuser.h:1595
#define MF_GRAYED
Definition: winuser.h:129
#define HTCLIENT
Definition: winuser.h:2429
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
LONG_PTR LRESULT
Definition: windef.h:209
#define IDS_COLLAPSE
Definition: resource.h:190
#define IDS_EXPAND
Definition: resource.h:189
#define TVHT_ONITEM
Definition: commctrl.h:3499
#define TreeView_Expand(hwnd, hitem, code)
Definition: commctrl.h:3392
#define WS_VISIBLE
Definition: pedump.c:620
#define ID_EDIT_MODIFY_BIN
Definition: resource.h:124
#define memset(x, y, z)
Definition: compat.h:39
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
LPARAM lParam
Definition: combotst.c:139
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
BOOL OnTreeExpanding(HWND hWnd, NMTREEVIEW *pnmtv)
Definition: treeview.c:503
#define LOWORD(l)
Definition: pedump.c:82
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
Definition: compat.h:394
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define TreeView_GetItem(hwnd, pitem)
Definition: commctrl.h:3462
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define WM_NOTIFY
Definition: richedit.h:61
#define InsertMenuItem
Definition: winuser.h:5670
#define ListView_DeleteAllItems(hwnd)
Definition: commctrl.h:2386
int nFocusPanel
Definition: main.h:64
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
HBRUSH SizingBrush
Definition: childwnd.c:26