ReactOS 0.4.17-dev-1183-g3b30a2a
CAddDialog.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Management Console
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Snapin selection dialog
5 * COPYRIGHT: Copyright 2017-2020 Mark Jansen (mark.jansen@reactos.org)
6 * Copyright 2026 Eric Kohl (eric.kohl@reactos.org)
7 */
8
9#include "precomp.h"
10
12{
13 m_MainWnd = MainWnd;
16}
17
19{
20}
21
22void
24{
25 listView.DeleteAllItems();
26
28 listView.InsertColumn(0, (LPWSTR)module.GetString(), LVCFMT_LEFT, 130, 0);
29
31 listView.InsertColumn(1, (LPWSTR)vendor.GetString(), LVCFMT_LEFT, 120, 1);
32
34}
35
36void
38{
39 LVITEM lvi = { 0 };
40 lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
41 lvi.lParam = (LPARAM)CacheEntry;
42 lvi.pszText = (LPWSTR)CacheEntry->Name().GetString();
43 lvi.iItem = INT_MAX;
44 lvi.iImage = CacheEntry->NormalImageIndex();
45 int item = listView.InsertItem(&lvi);
46
47 listView.SetItemText(item, 1, (LPWSTR)CacheEntry->Provider().GetString());
48}
49
50void
52{
54}
55
57CAddDialog::InsertTreeItem(CTreeView& treeView, CSnapinAlias *Alias, HTREEITEM hParent, HTREEITEM hInsertAfter)
58{
59 TVINSERTSTRUCTW Insert;
60
61 ZeroMemory(&Insert, sizeof(TVINSERTSTRUCTW));
62
64 Insert.item.pszText = (LPWSTR)Alias->Snapin()->DisplayName().GetString();
65 Insert.item.iImage = Alias->Snapin()->CacheEntry()->NormalImageIndex();
66 Insert.item.iSelectedImage = Alias->Snapin()->CacheEntry()->OpenImageIndex();
67 Insert.item.lParam = (LPARAM)Alias;
68
69 Insert.hParent = hParent;
70 Insert.hInsertAfter = hInsertAfter;
71
72 return treeView.InsertItem(&Insert);
73}
74
75VOID
77{
79}
80
81VOID
83{
85
87
89 Item.iItem = -1;
90 Item.pszText = (LPWSTR)Alias->Snapin()->DisplayName().GetString();
91 Item.cchTextMax = -1;
92 Item.iImage = Alias->Snapin()->CacheEntry()->NormalImageIndex();
93 Item.iSelectedImage = Alias->Snapin()->CacheEntry()->NormalImageIndex();
94 Item.iIndent = iIndent;
95 Item.lParam = (LPARAM)Alias;
96
97 comboBox.SendMessage(CBEM_INSERTITEM, 0, (LPARAM)&Item);
98}
99
100VOID
102{
103 POSITION pos = ParentAlias->m_SubNodes.GetHeadPosition();
104 while (pos)
105 {
106 CSnapinAlias *Alias = (CSnapinAlias*)ParentAlias->m_SubNodes.GetNext(pos);
107 if (Alias)
108 {
109 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, ParentAlias->hTreeItem);
110 AppendComboBoxItem(m_ParentList, Alias, Indent);
111 InsertSnapinAliasesRecursive(Alias, Indent + 1);
112 }
113 }
114 m_Selected.Expand(ParentAlias->hTreeItem, TVE_EXPAND);
115}
116
117
120{
121 CenterWindow(m_Console->m_hWnd);
122
133
136
140
141 /* Get Snapins from the Cache */
142 for (int i = 0; i < m_MainWnd->GetSnapinCacheCount(); i++)
143 {
145 }
146
147 /* Create the snapin alias tree */
151
153
155
157
160
162
164
165 return TRUE;
166}
167
169CAddDialog::OnCommand(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
170{
171 switch (wID)
172 {
174 {
175 int iItem = m_Available.GetNextItem(-1, LVNI_SELECTED);
176 if (iItem != -1)
177 {
179 if (CacheEntry)
180 {
181 CSnapinAlias *Alias = new CSnapinAlias(m_ParentAlias, new CSnapin(CacheEntry, m_MainWnd->GetNextNodeId()));
182 m_ParentAlias->m_SubNodes.AddTail(Alias);
183// Alias->Snapin()->OnAdd(m_Console);
184 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, m_ParentAlias->hTreeItem);
186 }
187 }
188 }
189 break;
190
192 {
193 HTREEITEM hTreeItem = m_Selected.GetSelection();
194 if (hTreeItem != NULL)
195 {
196 CSnapinAlias *Alias = (CSnapinAlias *)m_Selected.GetItemData(hTreeItem);
197 if (Alias)
198 {
199 Alias->Deleted();
200 m_Selected.DeleteItem(Alias->hTreeItem);
201 }
202 }
203 }
204 break;
205
207 {
208 HTREEITEM hSelectItem = m_Selected.GetSelection();
209 if (hSelectItem != NULL)
210 {
211 HTREEITEM hParentItem = m_Selected.GetNextItem(hSelectItem, TVGN_PARENT);
212 if (hParentItem != NULL)
213 {
214 CSnapinAlias *ParentAlias = (CSnapinAlias *)m_Selected.GetItemData(hParentItem);
215 CSnapinAlias *Alias = (CSnapinAlias *)m_Selected.GetItemData(hSelectItem);
216 if (ParentAlias && Alias)
217 {
218 HTREEITEM hPrevItem = m_Selected.GetNextItem(hSelectItem, TVGN_PREVIOUS);
219 if (hPrevItem)
220 {
221 hPrevItem = m_Selected.GetNextItem(hPrevItem, TVGN_PREVIOUS);
222 if (hPrevItem == NULL)
223 hPrevItem = TVI_FIRST;
224
225 POSITION pos = ParentAlias->m_SubNodes.Find(Alias);
226 POSITION prev = pos;
227 ParentAlias->m_SubNodes.GetPrev(prev);
228 ParentAlias->m_SubNodes.SwapElements(pos, prev);
229
230 m_Selected.DeleteItem(hSelectItem);
231 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, hParentItem, hPrevItem);
232 m_Selected.SelectItem(Alias->hTreeItem);
233 }
234 }
235 }
236 }
237 }
238 break;
239
241 {
242 HTREEITEM hSelectItem = m_Selected.GetSelection();
243 if (hSelectItem != NULL)
244 {
245 HTREEITEM hParentItem = m_Selected.GetNextItem(hSelectItem, TVGN_PARENT);
246 if (hParentItem != NULL)
247 {
248 CSnapinAlias *ParentAlias = (CSnapinAlias *)m_Selected.GetItemData(hParentItem);
249 CSnapinAlias *Alias = (CSnapinAlias *)m_Selected.GetItemData(hSelectItem);
250 if (ParentAlias && Alias)
251 {
252 HTREEITEM hNextItem = m_Selected.GetNextItem(hSelectItem, TVGN_NEXT);
253 if (hNextItem)
254 {
255 POSITION pos = ParentAlias->m_SubNodes.Find(Alias);
256 POSITION next = pos;
257 ParentAlias->m_SubNodes.GetNext(next);
258 ParentAlias->m_SubNodes.SwapElements(pos, next);
259
260 m_Selected.DeleteItem(hSelectItem);
261 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, hParentItem, hNextItem);
262 m_Selected.SelectItem(Alias->hTreeItem);
263 }
264 }
265 }
266 }
267 }
268 break;
269
270 case IDC_ADD_ADVANCED:
271 {
272 CAddAdvancedDialog AdvancedDialog(this);
273 if (AdvancedDialog.DoModal(m_hWnd, (LPARAM)0) == IDOK)
274 {
275 RECT rc;
276 int Offset = 50;
277
278// Offset = HIWORD(::GetDialogBaseUnits()) * 20;
279
280 ::GetWindowRect(m_Selected.m_hWnd, &rc);
281 ::MapWindowPoints(HWND_DESKTOP, this->m_hWnd, (LPPOINT)&rc, 2);
282 if (m_Advanced)
283 rc.top += Offset;
284 else
285 rc.top -= Offset;
286
287 ::MoveWindow(m_Selected.m_hWnd, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE);
288
290 ::MapWindowPoints(HWND_DESKTOP, this->m_hWnd, (LPPOINT)&rc, 2);
291 if (m_Advanced)
292 {
293 rc.top += Offset;
294 rc.bottom += Offset;
295 }
296 else
297 {
298 rc.top -= Offset;
299 rc.bottom -= Offset;
300 }
301
302 ::MoveWindow(m_SelectedText.m_hWnd, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE);
303
304 if (m_Advanced)
305 {
308 }
309 else
310 {
313 }
314 }
315 }
316 break;
317
319 {
321 if (iItem != CB_ERR)
322 {
324 }
325 }
326 break;
327
328 case IDOK:
329 {
333 }
334 return 0;
335
336 case IDCANCEL:
337 {
340 }
341 return 0;
342 }
343
345
346 return 0;
347}
348
351{
352 int iItem = m_Available.GetNextItem(-1, LVNI_SELECTED);
353 CSnapinCacheEntry *CacheEntry;
354 if (iItem != -1 && (CacheEntry = (CSnapinCacheEntry*)m_Available.GetItemData(iItem)))
355 {
357 }
358 else
359 {
361 }
362
364
365 return TRUE;
366}
367
370{
372 return TRUE;
373}
374
377{
378 if (hdr->hwndFrom == m_Available.m_hWnd)
379 {
381 if (lpnmitem->iItem != -1)
382 {
384 if (CacheEntry)
385 {
386 CSnapinAlias *Alias = new CSnapinAlias(m_ParentAlias, new CSnapin(CacheEntry, m_MainWnd->GetNextNodeId()));
387 m_ParentAlias->m_SubNodes.AddTail(Alias);
388// Alias->Snapin()->OnAdd(m_Console);
389 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, m_ParentAlias->hTreeItem);
391 }
392 }
393 }
394 return TRUE;
395}
396
397void
399{
401
402 CSnapinAlias *ParentAlias = NULL;
404 if (hTreeItem)
405 {
406 CSnapinAlias *Alias = (CSnapinAlias *)m_Selected.GetItemData(hTreeItem);
407 if (Alias)
408 ParentAlias = Alias->Parent();
409 }
410
411 m_BtnRemove.EnableWindow((hTreeItem != NULL) && (ParentAlias != NULL));
412
413 HTREEITEM hPrevItem = NULL, hNextItem = NULL;
414 HTREEITEM hSelectItem = m_Selected.GetSelection();
415 if (hSelectItem)
416 {
417 hPrevItem = m_Selected.GetNextItem(hSelectItem, TVGN_PREVIOUS);
418 hNextItem = m_Selected.GetNextItem(hSelectItem, TVGN_NEXT);
419 }
420
421 m_BtnUp.EnableWindow(hPrevItem != NULL);
422 m_BtnDown.EnableWindow(hNextItem != NULL);
423}
424
425void
427{
428 POSITION pos = ParentSnapin->m_SubNodes.GetHeadPosition();
429 while (pos)
430 {
431 CSnapin *Snapin = (CSnapin*)ParentSnapin->m_SubNodes.GetNext(pos);
432 if (Snapin)
433 {
434 CSnapinAlias *Alias = new CSnapinAlias(ParentAlias, Snapin);
435 ParentAlias->m_SubNodes.AddTail(Alias);
436 CreateSnapinAliases(Alias, Snapin);
437 }
438 }
439}
440
441void
443{
444 ParentSnapin->m_SubNodes.RemoveAll();
445
446 POSITION pos = ParentAlias->m_SubNodes.GetHeadPosition();
447 while (pos)
448 {
449 CSnapinAlias *Alias = (CSnapinAlias*)ParentAlias->m_SubNodes.GetNext(pos);
450 if (Alias)
451 {
452 if (!Alias->IsDeleted())
453 {
454 ParentSnapin->m_SubNodes.AddTail(Alias->Snapin());
455 ReconnectSnapins(Alias, Alias->Snapin());
456 }
457 }
458 }
459}
460
461void
463{
464 POSITION pos = ParentAlias->m_SubNodes.GetHeadPosition();
465 while (pos)
466 {
467 CSnapinAlias *Alias = (CSnapinAlias*)ParentAlias->m_SubNodes.GetNext(pos);
468 if (Alias)
469 {
470 DeleteSnapinAliasesRecursive(Alias, RemoveDeletedSnapins);
471 Alias->m_SubNodes.RemoveAll();
472 if (RemoveDeletedSnapins && (Alias->IsDeleted()))
473 delete Alias->Snapin();
474 delete Alias;
475 }
476 }
477}
478
479void
481{
482 if (m_RootAlias)
483 {
484 DeleteSnapinAliasesRecursive(m_RootAlias, RemoveDeletedSnapins);
485 m_RootAlias->m_SubNodes.RemoveAll();
486 delete m_RootAlias;
488 }
489}
490
491BOOL
493{
494 return m_Advanced;
495}
496
497VOID
499{
500 m_Advanced = Advanced;
501}
CConsole Console
#define IDC_ADD_BUTTON_REMOVE
Definition: resource.h:74
#define IDC_ADD_BUTTON_DOWN
Definition: resource.h:79
#define IDC_ADD_BUTTON_UP
Definition: resource.h:78
#define IDC_ADD_TEXT_SELECTED
Definition: resource.h:81
#define IDC_ADD_LIST_PARENT
Definition: resource.h:83
#define IDS_MODULE
Definition: resource.h:13
#define IDC_ADD_BUTTON_ADD
Definition: resource.h:73
#define IDC_ADD_LIST_AVAILABLE
Definition: resource.h:75
#define IDS_VENDOR
Definition: resource.h:14
#define IDC_ADD_LIST_SELECTED
Definition: resource.h:76
#define IDC_ADD_DESCRIPTION
Definition: resource.h:77
#define IDC_ADD_ADVANCED
Definition: resource.h:80
#define IDC_ADD_TEXT_PARENT
Definition: resource.h:82
static VOID CenterWindow(HWND hWnd)
Definition: reactos.c:45
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1116
BOOL SetWindowText(LPCTSTR lpszString)
Definition: atlwin.h:1300
HWND m_hWnd
Definition: atlwin.h:273
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1333
void Attach(HWND hWndNew)
Definition: atlwin.h:298
BOOL EnableWindow(BOOL bEnable=TRUE)
Definition: atlwin.h:523
VOID InsertSnapinAliasesRecursive(CSnapinAlias *ParentAlias, INT Indent)
Definition: CAddDialog.cpp:101
VOID SetAdvanced(BOOL Advanced)
Definition: CAddDialog.cpp:498
void UpdateButtons()
Definition: CAddDialog.cpp:398
void InitTV(CTreeView &treeView)
Definition: CAddDialog.cpp:51
CListView m_Available
Definition: CAddDialog.h:35
CSnapin * m_RootSnapin
Definition: CAddDialog.h:51
LRESULT OnInitDialog(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CAddDialog.cpp:119
CSnapinAlias * m_ParentAlias
Definition: CAddDialog.h:53
VOID InitCB(CWindow &comboBox)
Definition: CAddDialog.cpp:76
CMainWnd * m_MainWnd
Definition: CAddDialog.h:48
VOID AppendComboBoxItem(CWindow &comboBox, CSnapinAlias *Alias, int iIndent)
Definition: CAddDialog.cpp:82
LRESULT OnItemChanged(INT uCode, LPNMHDR hdr, BOOL &bHandled)
Definition: CAddDialog.cpp:350
void CreateSnapinAliases(CSnapinAlias *ParentAlias, CSnapin *ParentSnapin)
Definition: CAddDialog.cpp:426
CWindow m_BtnUp
Definition: CAddDialog.h:39
void DeleteSnapinAliases(BOOL RemoveDeletedSnapins)
Definition: CAddDialog.cpp:480
CWindow m_BtnRemove
Definition: CAddDialog.h:38
CWindow m_SelectedText
Definition: CAddDialog.h:42
LRESULT OnItemDblClicked(INT uCode, LPNMHDR hdr, BOOL &bHandled)
Definition: CAddDialog.cpp:376
CComPtr< CConsoleWnd > m_Console
Definition: CAddDialog.h:49
CWindow m_ParentText
Definition: CAddDialog.h:43
void DeleteSnapinAliasesRecursive(CSnapinAlias *ParentAlias, BOOL RemoveDeletedSnapins)
Definition: CAddDialog.cpp:462
void InsertListItem(CListView &listView, CSnapinCacheEntry *CacheEntry)
Definition: CAddDialog.cpp:37
void InitLV(CListView &listView)
Definition: CAddDialog.cpp:23
CWindow m_Description
Definition: CAddDialog.h:41
CWindow m_ParentList
Definition: CAddDialog.h:44
CSnapinAlias * m_RootAlias
Definition: CAddDialog.h:52
HTREEITEM InsertTreeItem(CTreeView &treeView, CSnapinAlias *Alias, HTREEITEM hParent=NULL, HTREEITEM hInsertAfter=TVI_LAST)
Definition: CAddDialog.cpp:57
LRESULT OnCommand(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CAddDialog.cpp:169
CTreeView m_Selected
Definition: CAddDialog.h:36
CAddDialog(CMainWnd *MainWnd, CConsoleWnd *console)
Definition: CAddDialog.cpp:11
BOOL m_Advanced
Definition: CAddDialog.h:46
CWindow m_BtnDown
Definition: CAddDialog.h:40
BOOL GetAdvanced()
Definition: CAddDialog.cpp:492
LRESULT OnSelectionChanged(INT uCode, LPNMHDR hdr, BOOL &bHandled)
Definition: CAddDialog.cpp:369
CWindow m_BtnAdd
Definition: CAddDialog.h:37
void ReconnectSnapins(CSnapinAlias *ParentAlias, CSnapin *ParentSnapin)
Definition: CAddDialog.cpp:442
int GetNextItem(int i, WORD flags)
Definition: rosctrls.h:161
BOOL DeleteAllItems()
Definition: rosctrls.h:126
int InsertItem(const LV_ITEM *pitem)
Definition: rosctrls.h:96
DWORD_PTR GetItemData(int i)
Definition: rosctrls.h:204
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:91
int InsertColumn(int iCol, LV_COLUMN *pcol)
Definition: rosctrls.h:52
BOOL SetItemText(int i, int subItem, LPCWSTR text)
Definition: rosctrls.h:186
int GetSnapinCacheCount()
Definition: CMainWnd.cpp:638
CSnapin * GetRootSnapin()
Definition: CMainWnd.cpp:668
CSnapinCacheEntry * GetSnapinCacheEntry(int nIndex)
Definition: CMainWnd.cpp:644
HIMAGELIST SnapinImageList()
Definition: CMainWnd.cpp:662
UINT GetNextNodeId()
Definition: CMainWnd.cpp:695
HTREEITEM hTreeItem
Definition: CSnapinAlias.h:19
CAtlList< CSnapinAlias * > m_SubNodes
Definition: CSnapinAlias.h:18
const CAtlString & Description() const
const CAtlString & Provider() const
const CAtlString & Name() const
CAtlList< CSnapin * > m_SubNodes
Definition: CSnapin.h:46
BOOL Expand(HTREEITEM item, DWORD action)
Definition: rosctrls.h:609
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:540
BOOL DeleteItem(HTREEITEM i)
Definition: rosctrls.h:550
BOOL SelectItem(HTREEITEM item, DWORD action=TVGN_CARET)
Definition: rosctrls.h:614
DWORD_PTR GetItemData(HTREEITEM item)
Definition: rosctrls.h:595
HTREEITEM GetNextItem(HTREEITEM i, WORD flags)
Definition: rosctrls.h:580
HTREEITEM GetSelection()
Definition: rosctrls.h:604
HTREEITEM InsertItem(const TVINSERTSTRUCTW *pitem)
Definition: rosctrls.h:545
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
const WCHAR * vendor
Definition: db.cpp:873
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define INT_MAX
Definition: limits.h:26
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
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
unsigned int UINT
Definition: sysinfo.c:13
char hdr[14]
Definition: iptest.cpp:33
#define ZeroMemory
Definition: minwinbase.h:31
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define LVSIL_SMALL
Definition: commctrl.h:2304
#define TVGN_PARENT
Definition: commctrl.h:3460
#define CBEIF_IMAGE
Definition: commctrl.h:3792
#define TVIF_TEXT
Definition: commctrl.h:3271
#define LVNI_SELECTED
Definition: commctrl.h:2429
#define TVIF_IMAGE
Definition: commctrl.h:3272
#define CBEIF_SELECTEDIMAGE
Definition: commctrl.h:3793
#define TVSIL_NORMAL
Definition: commctrl.h:3448
#define TVI_FIRST
Definition: commctrl.h:3374
#define CBEIF_TEXT
Definition: commctrl.h:3791
#define TVE_EXPAND
Definition: commctrl.h:3428
#define TVGN_PREVIOUS
Definition: commctrl.h:3459
struct tagNMITEMACTIVATE * LPNMITEMACTIVATE
#define TVI_ROOT
Definition: commctrl.h:3373
#define ListView_GetSelectedCount(hwndLV)
Definition: commctrl.h:2714
#define LVITEM
Definition: commctrl.h:2380
#define CBEM_INSERTITEM
Definition: commctrl.h:3850
#define LVIF_PARAM
Definition: commctrl.h:2316
#define LVIF_TEXT
Definition: commctrl.h:2314
#define CBEM_SETIMAGELIST
Definition: commctrl.h:3832
#define CBEIF_INDENT
Definition: commctrl.h:3795
#define LVCFMT_LEFT
Definition: commctrl.h:2603
#define TVGN_CARET
Definition: commctrl.h:3466
#define CBEIF_LPARAM
Definition: commctrl.h:3796
#define LVIF_IMAGE
Definition: commctrl.h:2315
#define TVIF_PARAM
Definition: commctrl.h:3273
#define TVIF_SELECTEDIMAGE
Definition: commctrl.h:3276
#define TVGN_NEXT
Definition: commctrl.h:3458
#define SW_HIDE
Definition: winuser.h:779
#define IDCANCEL
Definition: winuser.h:842
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define CB_ERR
Definition: winuser.h:2471
#define CB_SETCURSEL
Definition: winuser.h:1990
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:841
#define HWND_DESKTOP
Definition: winuser.h:1220
#define CB_GETITEMDATA
Definition: winuser.h:1979
#define SendMessage
Definition: winuser.h:6009
#define SW_SHOW
Definition: winuser.h:786
#define CB_GETCURSEL
Definition: winuser.h:1972
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
HTREEITEM hParent
Definition: commctrl.h:3398
HTREEITEM hInsertAfter
Definition: commctrl.h:3399
PSYMCRYPT_PARALLEL_HASH_OPERATION next
uint16_t * LPWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
_In_ WDFCOLLECTION _In_ WDFOBJECT Item