ReactOS 0.4.17-dev-1190-g4c812f4
CConsoleWnd.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: Single 'console' window
5 * COPYRIGHT: Copyright 2006-2007 Thomas Weidenmueller
6 * Copyright 2017 Mark Jansen (mark.jansen@reactos.org)
7 * Copyright 2026 Eric Kohl (eric.kohl@reactos.org)
8 */
9
10#include "precomp.h"
11
12#define DEFAULT_COLUMN0_WIDTH 200
13
15{
16 m_MainWnd = MainWnd;
18 m_ViewSelectedNode = SelectedNode ? SelectedNode : RootNode;
20 m_ViewId = 0;
21
28
29 m_pfnSuperWindowProc = DefMDIChildProc;
30
31 m_hMenuTreeView = LoadMenu(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDM_TREEVIEW_CONTEXT));
32
33 if (!m_thunk.Init(NULL, NULL))
34 return;
35 _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
36}
37
39{
41}
42
45{
46 SetWindowLongPtr(0, (LONG_PTR)this);
47
50
51 RECT Rect;
53 if (m_iTreeViewWidth == 0)
54 m_iTreeViewWidth = (Rect.right - Rect.left) / 4;
55 if (m_iActionsPaneWidth == 0)
56 m_iActionsPaneWidth = (Rect.right - Rect.left) / 4;
57
58 m_StatusBar.Create(this->m_hWnd, NULL);
59 m_StatusBar.GetClientRect(&Rect);
60 m_iStatusBarHeight = Rect.bottom - Rect.top;
61
62 Rect.right = 0;
63 Rect.left = 0;
64 Rect.top = 0;
65 Rect.bottom = 0;
66 m_DescriptionBar.Create(L"Static", this->m_hWnd, &Rect, L"Description",
70
71 m_TreeView.Create(this->m_hWnd,
73
75
77
78 CAtlString Column0Name(MAKEINTRESOURCE(IDS_COLUMN0)); /* FIXME */
80
81 Rect.right = 0;
82 Rect.left = 0;
83 Rect.top = 0;
84 Rect.bottom = 0;
85 m_ActionsPane.Create(this->m_hWnd, &Rect, L"Actions", WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, WS_EX_CLIENTEDGE);
86
88
90
91 LPMDICREATESTRUCT mdicreate = reinterpret_cast<LPMDICREATESTRUCT>(reinterpret_cast<LPCREATESTRUCT>(lParam)->lpCreateParams);
92 if (mdicreate->lParam)
94
96
97 return 0;
98}
99
102{
104 m_MainWnd->PostMessage(WM_USER_CLOSE_CHILD, 0, 0);
105 return 0;
106}
107
110{
111 UpdateLayout();
112 return DefMDIChildProc(this->m_hWnd, WM_SIZE, wParam, lParam);
113}
114
117{
118 RECT rect;
119 int xPos = (INT)(WORD)LOWORD(lParam);
120
122 int iClientWidth = rect.right - rect.left;
123
125 {
128 }
129 else if ((m_bActionsPaneVisible) && (xPos >= (iClientWidth - m_iActionsPaneWidth - m_iSplitterWidth)) && (xPos <= (iClientWidth - m_iActionsPaneWidth)))
130 {
131 m_iSplitOffset = xPos - (iClientWidth - m_iActionsPaneWidth - m_iSplitterWidth);
133 }
134 else
135 {
137 }
138 SetCapture();
139 return 0;
140}
141
144{
147 return 0;
148}
149
152{
153 if ((GetCapture() == m_hWnd) && (m_iSplitSide != SPLITTER_NONE))
154 {
155 RECT rect;
156
158 int iClientWidth = rect.right - rect.left;
159
161 {
163
164 m_TreeView.GetWindowRect(&rect);
165 ::MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&rect, sizeof(RECT) / sizeof(POINT));
166
168
169 m_ListView.GetWindowRect(&rect);
170 ::MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&rect, sizeof(RECT) / sizeof(POINT));
171
172 int xWidth = iClientWidth - (m_iTreeViewWidth + m_iSplitterWidth);
175
177
179 ::MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&rect, sizeof(RECT) / sizeof(POINT));
180
182 }
183 else if (m_iSplitSide == SPLITTER_RIGHT)
184 {
185 int xPos = (INT)(WORD)LOWORD(lParam) - m_iSplitOffset;
186 m_iActionsPaneWidth = iClientWidth - (xPos + m_iSplitterWidth);
187
188 m_ListView.GetWindowRect(&rect);
189 ::MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&rect, sizeof(RECT) / sizeof(POINT));
190
191 int xWidth = iClientWidth - (m_iActionsPaneWidth + m_iSplitterWidth);
193 xWidth -= rect.left;
194
195 m_ListView.MoveWindow(rect.left, rect.top, xWidth, rect.bottom - rect.top);
196
198 ::MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&rect, sizeof(RECT) / sizeof(POINT));
199
201
202 m_ActionsPane.GetWindowRect(&rect);
203 ::MapWindowPoints(HWND_DESKTOP, m_hWnd, (LPPOINT)&rect, sizeof(RECT) / sizeof(POINT));
204
205 rect.left = iClientWidth - m_iActionsPaneWidth;
207 }
208 }
209
210 return 0;
211}
212
215{
216 POINT pt;
217
218 if ((HWND)wParam == m_TreeView.m_hWnd)
219 {
220 TVHITTESTINFO hti;
221 int nPos = 0;
222
223 pt.x = (short) LOWORD(lParam);
224 pt.y = (short) HIWORD(lParam);
225
226 if (pt.x == -1 && pt.y == -1)
227 {
228 RECT rc;
230 if (hti.hItem != NULL)
231 {
232 TreeView_GetItemRect(m_TreeView.m_hWnd, hti.hItem, &rc, TRUE);
233 pt.x = rc.left + 8;
234 pt.y = rc.top + 8;
235 m_TreeView.ClientToScreen(&pt);
236 hti.flags = TVHT_ONITEM;
237 }
238 else
239 {
240 hti.flags = 0;
241 }
242 }
243 else
244 {
245 hti.pt.x = pt.x;
246 hti.pt.y = pt.y;
247 m_TreeView.ScreenToClient(&hti.pt);
248 m_TreeView.HitTest(&hti);
249
250 if (hti.hItem)
251 {
252 if (hti.hItem == m_TreeView.GetSelection())
253 {
254 nPos = 1;
255 }
256 }
257 }
258
259 if (hti.flags & TVHT_ONITEM)
260 {
261 HMENU hContextMenu = GetSubMenu(m_hMenuTreeView, nPos);
262 if (nPos == 1)
263 {
264 CheckMenuRadioItem(hContextMenu,
269 }
270 TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, this->m_hWnd, NULL);
271 }
272 }
273 return 0;
274}
275
278{
280 WCHAR WindowText[256];
281
282 HBRUSH hBrush = GetSysColorBrush(COLOR_3DDKSHADOW);
283 FillRect(lpDrawItem->hDC, &lpDrawItem->rcItem, hBrush);
284
286
287 ::GetWindowTextW(lpDrawItem->hwndItem, WindowText, ARRAYSIZE(WindowText));
288 ::SetBkMode(lpDrawItem->hDC, TRANSPARENT);
289
290 lpDrawItem->rcItem.left += 4;
291 DrawTextW(lpDrawItem->hDC, (LPCWSTR)WindowText, -1, &lpDrawItem->rcItem,
293
294 return TRUE;
295}
296
299{
300
301 NMHDR *phdr = (NMHDR *)lParam;
302 switch (phdr->code)
303 {
305 return FALSE;
306
307 case TVN_ENDLABELEDIT:
308 {
310 LPWSTR pszText = pNM->item.pszText;
311 CSnapin *Snapin = (CSnapin *)pNM->item.lParam;
312 Snapin->SetDisplayName(pszText);
313 TreeView_SetItem(pNM->hdr.hwndFrom, &pNM->item);
315 }
316 return FALSE;
317
318 case TVN_SELCHANGED:
319 {
320 LPNMTREEVIEW pNmTreeview = (LPNMTREEVIEW)lParam;
321 CSnapin *OldSnapin = (CSnapin *)pNmTreeview->itemOld.lParam;
322 CSnapin *NewSnapin = (CSnapin *)pNmTreeview->itemNew.lParam;
323
324 m_DescriptionBar.SetWindowText(NewSnapin->DisplayName());
325 m_MainWnd->UpdateAboutSnapinMenu((NewSnapin == m_MainWnd->GetRootSnapin()) ? NULL : NewSnapin);
326 if ((OldSnapin == m_MainWnd->GetRootSnapin()) != (NewSnapin == m_MainWnd->GetRootSnapin()))
328 }
329 return FALSE;
330 }
331
332 return 0;
333}
334
337{
340 return 0;
341}
342
344CConsoleWnd::OnActionNewWindow(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
345{
346 HTREEITEM hTreeItem = m_TreeView.GetSelection();
347 if (!hTreeItem)
348 return 0;
349
350 CSnapin *Snapin = (CSnapin *)m_TreeView.GetItemData(hTreeItem);
351 if (!Snapin)
352 return 0;
353
355 HWND hChild;
356
357 mcs.szTitle = Snapin->DisplayName();
359 mcs.hOwner = _AtlBaseModule.GetModuleInstance();
360 mcs.x = mcs.cx = CW_USEDEFAULT;
361 mcs.y = mcs.cy = CW_USEDEFAULT;
362 mcs.style = MDIS_ALLCHILDSTYLES;
363
364 CConsoleWnd* child = new CConsoleWnd(m_MainWnd, Snapin);
365 BOOL bMaximized = FALSE;
366 HWND hWndOld = (HWND)m_MainWnd->m_MDIClient.SendMessage(WM_MDIGETACTIVE, 0, (LPARAM)&bMaximized);
367 mcs.lParam = bMaximized || !hWndOld;
369 if (!hChild)
370 {
371 delete child;
372 return 0;
373 }
374
378 m_MainWnd->UpdateViewMenu(child->GetListViewMode());
379
380 return 0;
381}
382
384CConsoleWnd::OnActionRename(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
385{
387 return 0;
388}
389
391CConsoleWnd::OnViewMode(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
392{
393 return m_MainWnd->OnViewMode(wNotifyCode, wID, hWndCtl, bHandled);
394}
395
397CConsoleWnd::OnViewCustomize(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
398{
399 return m_MainWnd->OnViewCustomize(wNotifyCode, wID, hWndCtl, bHandled);
400}
401
402VOID
404{
405 HTREEITEM hTreeItem;
406
407 hTreeItem = m_TreeView.AddItem(hParentTreeItem,
408 (LPWSTR)Node->DisplayName().GetString(),
409 Node->CacheEntry()->NormalImageIndex(),
410 Node->CacheEntry()->OpenImageIndex(),
411 (LPARAM)Node);
412 if (hTreeItem)
413 {
414 POSITION pos = Node->m_SubNodes.GetHeadPosition();
415 while (pos)
416 {
417 CSnapin *ChildNode = (CSnapin*)Node->m_SubNodes.GetNext(pos);
418 if (ChildNode)
419 AddTreeViewItemRecursive(hTreeItem, ChildNode);
420 }
421
422 m_TreeView.Expand(hTreeItem, TVE_EXPAND);
423
425 m_TreeView.SelectItem(hTreeItem);
426 }
427}
428
429VOID
431{
434}
435
436BOOL
438{
439 return m_bTreeViewVisible;
440}
441
442VOID
444{
445 m_bTreeViewVisible = bVisible;
446 UpdateLayout();
447}
448
449BOOL
451{
452 return m_bStatusBarVisible;
453}
454
455VOID
457{
458 m_bStatusBarVisible = bVisible;
459 UpdateLayout();
460}
461
462BOOL
464{
466}
467
468VOID
470{
471 m_bDescriptionBarVisible = bVisible;
472 UpdateLayout();
473}
474
475BOOL
477{
479}
480
481VOID
483{
484 m_bActionsPaneVisible = bVisible;
485 UpdateLayout();
486}
487
488VOID
490{
491 RECT Rect;
492 int iTreeViewWidth, iTreeViewHeight;
493 int iListViewPosX, iListViewPosY = 0;
494 int iListViewWidth, iListViewHeight;
495
497 int iClientHeight = Rect.bottom - Rect.top;
498 int iClientWidth = Rect.right - Rect.left;
499
500 int iStatusHeight = 0;
501
502 int iDescriptionBarHeight = 0;
503
505 {
506 iTreeViewWidth = m_iTreeViewWidth;
507 iListViewPosX = m_iTreeViewWidth + m_iSplitterWidth;
508 iListViewWidth = iClientWidth - m_iTreeViewWidth - m_iSplitterWidth;
509 }
510 else
511 {
512 iTreeViewWidth = 0;
513 iListViewPosX = 0;
514 iListViewWidth = iClientWidth;
515 }
516
517 iTreeViewHeight = iClientHeight;
518 iListViewHeight = iClientHeight;
519
521 {
522 iStatusHeight = m_iStatusBarHeight;
523 iTreeViewHeight -= iStatusHeight;
524 iListViewHeight -= iStatusHeight;
525 }
526
528 {
529 iDescriptionBarHeight = 24;
530 iListViewPosY += iDescriptionBarHeight;
531 iListViewHeight -= iDescriptionBarHeight;
532 }
533
535 {
536 iListViewWidth -= (m_iActionsPaneWidth + m_iSplitterWidth);
537 }
538
539 /* Move the status bar */
540 m_StatusBar.MoveWindow(0, iClientHeight - iStatusHeight, iClientWidth, iStatusHeight);
541
542 /* Move the tree view */
543 m_TreeView.MoveWindow(0, 0, iTreeViewWidth, iTreeViewHeight);
544
545 /* Move the list view */
546 m_ListView.MoveWindow(iListViewPosX, iListViewPosY, iListViewWidth, iListViewHeight);
547
548 m_DescriptionBar.MoveWindow(iListViewPosX, 0, iListViewWidth, iDescriptionBarHeight);
549
550 m_ActionsPane.MoveWindow(iClientWidth - m_iActionsPaneWidth, 0, m_iActionsPaneWidth, iClientHeight);
551}
552
553VOID
555{
557}
558
559VOID
561{
562 m_StatusBar.SetText(pszStatusText);
563}
564
565VOID
567{
569 if (hItem == NULL)
570 return;
571
573 return;
574
576 if (hParent)
577 m_TreeView.SelectItem(hParent);
578}
579
582{
583 return m_ListViewMode;
584}
585
586VOID
588{
589 m_ListViewMode = ListViewMode;
591}
592
593VOID
595{
596 IXMLDOMElement *pViewElement = NULL;
597 IXMLDOMElement *pViewOptionsElement = NULL;
598 IXMLDOMElement *pBookMarkElement = NULL;
599 WCHAR szBuffer[32];
600 HRESULT hr = S_OK;
601
602 /* <View ID="1" ScopePaneWidth="292" ActionsPaneWidth="-1"> */
603 CHK_HR(mscFile->CreateAndAddElementNode(L"View", pParentElement, &pViewElement));
604 _swprintf(szBuffer, L"%u", m_ViewId);
605 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ID", szBuffer, pViewElement));
606 _swprintf(szBuffer, L"%d", m_iTreeViewWidth);
607 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ScopePaneWidth", szBuffer, pViewElement));
608 _swprintf(szBuffer, L"%d", m_iActionsPaneWidth);
609 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ActionsPaneWidth", szBuffer, pViewElement));
610
611 /* Root Snap-in <BookMark Name="RootNode" NodeID="1"/> */
612 CHK_HR(mscFile->CreateAndAddElementNode(L"BookMark", pViewElement, &pBookMarkElement));
613 CHK_HR(mscFile->CreateAndAddAttributeNode(L"Name", L"RootNode", pBookMarkElement));
614 _swprintf(szBuffer, L"%u", m_ViewRootNode->GetNodeId());
615 CHK_HR(mscFile->CreateAndAddAttributeNode(L"NodeID", szBuffer, pBookMarkElement));
616 SAFE_RELEASE(pBookMarkElement);
617
618 /* Selected Snap-in <BookMark Name="SelectedNode" NodeID="1"/> */
619 CHK_HR(mscFile->CreateAndAddElementNode(L"BookMark", pViewElement, &pBookMarkElement));
620 CHK_HR(mscFile->CreateAndAddAttributeNode(L"Name", L"SelectedNode", pBookMarkElement));
621 _swprintf(szBuffer, L"%u", m_ViewSelectedNode->GetNodeId());
622 CHK_HR(mscFile->CreateAndAddAttributeNode(L"NodeID", szBuffer, pBookMarkElement));
623 SAFE_RELEASE(pBookMarkElement);
624
625 mscFile->SaveWindowPlacement(this, pViewElement);
626
627 /* <ViewOptions ViewMode="Report" ScopePaneVisible="true" ActionsPaneVisible="true" DescriptionBarVisible="false" DefaultColumn0Width="200" DefaultColumn1Width="0"/> */
628 CHK_HR(mscFile->CreateAndAddElementNode(L"ViewOptions", pViewElement, &pViewOptionsElement));
629 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ViewMode", ViewModeToString(m_ListViewMode), pViewOptionsElement));
630 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ScopePaneVisible", IsTreeViewVisible() ? L"true" : L"false", pViewOptionsElement));
631 if (!IsStatusBarVisible())
632 CHK_HR(mscFile->CreateAndAddAttributeNode(L"NoStatusBar", L"true", pViewOptionsElement));
633 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ActionsPaneVisible", IsActionsPaneVisible() ? L"true" : L"false", pViewOptionsElement));
634 CHK_HR(mscFile->CreateAndAddAttributeNode(L"DescriptionBarVisible", IsDescriptionBarVisible() ? L"true" : L"false", pViewOptionsElement));
635 _swprintf(szBuffer, L"%d", m_ListView.GetColumnWidth(0));
636 CHK_HR(mscFile->CreateAndAddAttributeNode(L"DefaultColumn0Width", szBuffer, pViewOptionsElement));
637 CHK_HR(mscFile->CreateAndAddAttributeNode(L"DefaultColumn1Width", L"0", pViewOptionsElement)); /* FIXME */
638 SAFE_RELEASE(pViewOptionsElement); /* </ViewOptions> */
639
640CleanUp:
641 SAFE_RELEASE(pViewElement); /* </View> */
642}
643
646 MscFile *mscFile,
647 IXMLDOMElement *pViewElement,
648 UINT *puViewID,
649 INT *piScopePanelWidth,
650 INT *piActionsPanelWidth)
651{
652 VARIANT ViewID, ScopePanel, ActionsPanel;
653 PWSTR ptr = NULL;
654 HRESULT hr = S_OK;
655
656 VariantInit(&ViewID);
657 VariantInit(&ScopePanel);
658 VariantInit(&ActionsPanel);
659
660 /* Attribut ID */
661 hr = mscFile->GetAttribute(pViewElement, (LPWSTR)L"ID", &ViewID);
662 if (hr == S_OK)
663 {
664 *puViewID = wcstoul(V_BSTR(&ViewID), &ptr, 10);
665 }
666
667 /* Attribute ScopePaneWidth */
668 hr = mscFile->GetAttribute(pViewElement, (LPWSTR)L"ScopePaneWidth", &ScopePanel);
669 if (hr == S_OK)
670 {
671 *piScopePanelWidth = wcstol(V_BSTR(&ScopePanel), &ptr, 10);
672 }
673
674 /* Attribute ActionsPaneWidth */
675 hr = mscFile->GetAttribute(pViewElement, (LPWSTR)L"ActionsPaneWidth", &ActionsPanel);
676 if (hr == S_OK)
677 {
678 *piActionsPanelWidth = wcstol(V_BSTR(&ActionsPanel), &ptr, 10);
679 }
680
681 VariantClear(&ViewID);
682 VariantClear(&ScopePanel);
683 VariantClear(&ActionsPanel);
684
685 return hr;
686}
687
690 CMainWnd *pMainWnd,
691 MscFile *mscFile,
692 IXMLDOMElement *pViewElement)
693{
694 IXMLDOMNodeList *pChildList = NULL;
695 IXMLDOMNode *nextItem;
697 BSTR NodeName = NULL;
698 CSnapin *pRootSnapin = NULL, *pSelectedSnapin = NULL;
699
701 HWND hChild;
702 HWND hWndOld;
703 BOOL bMaximized;
704 CConsoleWnd *pConsoleWnd = NULL;
705
706 UINT uViewId = 0;
707 INT iScopePanelWidth = 0;
708 INT iActionsPanelWidth = 0;
709 LISTVIEW_MODE ListViewMode = ListView_Detail;
710 BOOL bScopePaneVisible = FALSE;
711 BOOL bActionsPaneVisible = FALSE;
712 BOOL bDescriptionBarVisible = FALSE;
713 INT iColumn0Width = DEFAULT_COLUMN0_WIDTH;
714 HRESULT hr = S_OK;
715
716 ParseViewAttributes(mscFile, pViewElement, &uViewId, &iScopePanelWidth, &iActionsPanelWidth);
717
718 hr = pViewElement->get_childNodes(&pChildList);
719 if (FAILED(hr))
720 goto done;
721
722 for (;;)
723 {
724 hr = pChildList->nextNode(&nextItem);
725 if (hr == S_FALSE)
726 {
727 hr = S_OK;
728 break;
729 }
730
731 hr = nextItem->get_nodeType(&NodeType);
732 if (hr == S_OK)
733 {
734 NodeName = NULL;
735 hr = nextItem->get_baseName(&NodeName);
736 if (hr == S_OK)
737 {
738 if (NodeType == NODE_ELEMENT)
739 {
740 if (_wcsicmp(NodeName, L"BookMark") == 0)
741 {
742 VARIANT Name, NodeID;
743
745 VariantInit(&NodeID);
746
747 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"Name", &Name);
748 if (hr == S_OK)
749 {
750 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"NodeID", &NodeID);
751 if (hr == S_OK)
752 {
753 PWSTR ptr = NULL;
754 UINT uNodeId = wcstoul(V_BSTR(&NodeID), &ptr, 10);
755 if (uNodeId != 0)
756 {
757 CSnapin *pSnapin = pMainWnd->m_TempNodeMap->Lookup(uNodeId);
758 if (pSnapin)
759 {
760 if (_wcsicmp(V_BSTR(&Name), L"RootNode") == 0)
761 pRootSnapin = pSnapin;
762 else if (_wcsicmp(V_BSTR(&Name), L"SelectedNode") == 0)
763 pRootSnapin = pSnapin;
764 }
765 }
766 }
767 }
768
770 VariantClear(&NodeID);
771 }
772 else if (_wcsicmp(NodeName, L"ViewOptions") == 0)
773 {
774 VARIANT ViewMode, ScopePane, ActionsPane;
775 VARIANT DescriptionBar, Column0Width;
776
777 VariantInit(&ViewMode);
778 VariantInit(&ScopePane);
779 VariantInit(&ActionsPane);
780 VariantInit(&DescriptionBar);
781 VariantInit(&Column0Width);
782
783 /* Attribut ViewMode="Report" */
784 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"ViewMode", &ViewMode);
785 if (hr == S_OK)
786 {
787 ListViewMode = StringToViewMode(V_BSTR(&ViewMode));
788 }
789
790 /* Attribut ScopePaneVisible="true" */
791 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"ScopePaneVisible", &ScopePane);
792 if (hr == S_OK)
793 {
794 bScopePaneVisible = StringToBool(V_BSTR(&ScopePane));
795 }
796
797 /* Attribut ActionsPaneVisible="true" */
798 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"ActionsPaneVisible", &ActionsPane);
799 if (hr == S_OK)
800 {
801 bActionsPaneVisible = StringToBool(V_BSTR(&ActionsPane));
802 }
803
804 /* Attribut DescriptionBarVisible="false" */
805 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"DescriptionBarVisible", &DescriptionBar);
806 if (hr == S_OK)
807 {
808 bDescriptionBarVisible = StringToBool(V_BSTR(&DescriptionBar));
809 }
810
811 /* Attribut DefaultColumn0Width="200" */
812 hr = mscFile->GetAttribute((IXMLDOMElement *)nextItem, (LPWSTR)L"DefaultColumn0Width", &Column0Width);
813 if (hr == S_OK)
814 {
815 iColumn0Width = _wtoi(V_BSTR(&Column0Width));
816 }
817
818 /* FIXME: Attribut DefaultColumn1Width="0" */
819
820 VariantClear(&ViewMode);
821 VariantClear(&ScopePane);
822 VariantClear(&ActionsPane);
823 VariantClear(&DescriptionBar);
824 VariantClear(&Column0Width);
825 }
826 }
827
828 SysFreeString(NodeName);
829 NodeName = NULL;
830 }
831 }
832
833 nextItem->Release();
834 }
835
836 if (FAILED(hr))
837 goto done;
838
839 /* Create the view */
840
841 mcs.szTitle = pRootSnapin->DisplayName();
843 mcs.hOwner = _AtlBaseModule.GetModuleInstance();
844 mcs.x = mcs.cx = CW_USEDEFAULT;
845 mcs.y = mcs.cy = CW_USEDEFAULT;
846 mcs.style = MDIS_ALLCHILDSTYLES;
847
848 pConsoleWnd = new CConsoleWnd(pMainWnd, pRootSnapin, pSelectedSnapin);
849
850 pConsoleWnd->m_ViewId = uViewId;
851 pConsoleWnd->m_iTreeViewWidth = iScopePanelWidth;
852 pConsoleWnd->m_iActionsPaneWidth = iActionsPanelWidth;
853
854 bMaximized = FALSE;
855 hWndOld = (HWND)pMainWnd->m_MDIClient.SendMessage(WM_MDIGETACTIVE, 0, (LPARAM)&bMaximized);
856 mcs.lParam = bMaximized || !hWndOld;
858 if (!hChild)
859 {
860 delete pConsoleWnd;
861 hr = E_FAIL;
862 goto done;
863 }
864
865 pConsoleWnd->SetListViewMode(ListViewMode);
866 pConsoleWnd->SetTreeViewVisible(bScopePaneVisible);
867 pConsoleWnd->SetActionsPaneVisible(bActionsPaneVisible);
868 pConsoleWnd->SetDescriptionBarVisible(bDescriptionBarVisible);
869
870 pConsoleWnd->m_ListView.SetColumnWidth(0, iColumn0Width);
871
872 pMainWnd->UpdateLayout();
873 pMainWnd->UpdateTitle();
874 pMainWnd->UpdateMenu();
875 pMainWnd->UpdateViewMenu(ListViewMode);
876
877done:
878 if (pChildList)
879 pChildList->Release();
880
881 if (NodeName)
882 SysFreeString(NodeName);
883
884 return hr;
885}
886
887// +IConsole
890{
891 if (riid == IID_IUnknown || riid == IID_IConsole)
892 {
893 *ppvObject = static_cast<IConsole*>(this);
894 AddRef();
895 return S_OK;
896 }
897 else if (riid == IID_IConsole2)
898 {
899 *ppvObject = static_cast<IConsole2*>(this);
900 AddRef();
901 return S_OK;
902 }
903 else if (riid == IID_IConsoleNameSpace)
904 {
905 *ppvObject = static_cast<IConsoleNameSpace*>(this);
906 AddRef();
907 return S_OK;
908 }
909 else if (riid == IID_IConsoleNameSpace2)
910 {
911 *ppvObject = static_cast<IConsoleNameSpace2*>(this);
912 AddRef();
913 return S_OK;
914 }
915 else
916 {
917 CComHeapPtr<OLECHAR> guidstr;
918 HRESULT hr = StringFromCLSID(riid, &guidstr);
919 if (SUCCEEDED(hr))
920 DPRINT1("Unhandled riid: %S\n", (PCWSTR)guidstr);
921 else
922 DPRINT1("Unhandled riid\n");
923 }
924
925
926 *ppvObject = NULL;
927 return E_NOINTERFACE;
928}
929
932{
933 DPRINT("%s()\n", __FUNCTION__);
934 return 2;
935}
936
939{
940 DPRINT("%s()\n", __FUNCTION__);
941 return 1;
942}
943
944
947{
948 DPRINT("%s()\n", __FUNCTION__);
949 __debugbreak();
950 return E_NOTIMPL;
951}
952
955{
956 DPRINT("%s()\n", __FUNCTION__);
957 __debugbreak();
958 return E_NOTIMPL;
959}
960
963{
964 DPRINT("%s()\n", __FUNCTION__);
965 __debugbreak();
966 return E_NOTIMPL;
967}
968
971{
972 DPRINT("%s(%p)\n", __FUNCTION__);
973 if (!ppImageList)
974 return E_INVALIDARG;
975
976 __debugbreak();
977 //*ppImageList = m_ScopeImageList;
978 return S_OK;
979}
980
983{
984 DPRINT("%s()\n", __FUNCTION__);
985 __debugbreak();
986 return E_NOTIMPL;
987}
988
991{
992 DPRINT("%s()\n", __FUNCTION__);
993 __debugbreak();
994 return E_NOTIMPL;
995}
996
998CConsoleWnd::MessageBox(LPCWSTR lpszText, LPCWSTR lpszTitle, UINT fuStyle, int *piRetval)
999{
1000 DPRINT("%s()\n", __FUNCTION__);
1001 __debugbreak();
1002 return E_NOTIMPL;
1003}
1004
1007{
1008 DPRINT("%s()\n", __FUNCTION__);
1009 __debugbreak();
1010 return E_NOTIMPL;
1011}
1012
1015{
1016 DPRINT("%s()\n", __FUNCTION__);
1017 __debugbreak();
1018 return E_NOTIMPL;
1019}
1020
1023{
1024 DPRINT("%s()\n", __FUNCTION__);
1025 __debugbreak();
1026 return E_NOTIMPL;
1027}
1028
1031{
1032 DPRINT("%s()\n", __FUNCTION__);
1033 __debugbreak();
1034 return E_NOTIMPL;
1035}
1036// -IConsole
1037
1038// +IConsole2
1041{
1042 DPRINT("%s()\n", __FUNCTION__);
1043 __debugbreak();
1044 return E_NOTIMPL;
1045}
1046
1049{
1050 DPRINT("%s()\n", __FUNCTION__);
1051 __debugbreak();
1052 return E_NOTIMPL;
1053}
1054
1055
1057CConsoleWnd::SetStatusText(LPOLESTR pszStatusText)
1058{
1059 DPRINT("%s()\n", __FUNCTION__);
1060 __debugbreak();
1061 return E_NOTIMPL;
1062}
1063// -IConsole2
1064
1065// +IConsoleNameSpace
1068{
1069 DPRINT("%s()\n", __FUNCTION__);
1070 __debugbreak();
1071 return E_NOTIMPL;
1072}
1073
1076{
1077 DPRINT("%s()\n", __FUNCTION__);
1078 __debugbreak();
1079 return E_NOTIMPL;
1080}
1081
1084{
1085 DPRINT("%s()\n", __FUNCTION__);
1086 __debugbreak();
1087 return E_NOTIMPL;
1088}
1089
1092{
1093 DPRINT("%s()\n", __FUNCTION__);
1094 __debugbreak();
1095 return E_NOTIMPL;
1096}
1097
1100{
1101 DPRINT("%s()\n", __FUNCTION__);
1102 __debugbreak();
1103 return E_NOTIMPL;
1104}
1105
1108{
1109 DPRINT("%s()\n", __FUNCTION__);
1110 __debugbreak();
1111 return E_NOTIMPL;
1112}
1113
1116{
1117 DPRINT("%s()\n", __FUNCTION__);
1118 __debugbreak();
1119 return E_NOTIMPL;
1120}
1121// -IConsoleNameSpace
1122
1123
1124
1125// +IConsoleNameSpace2
1128{
1129 DPRINT("%s()\n", __FUNCTION__);
1130 __debugbreak();
1131 return E_NOTIMPL;
1132}
1133
1136{
1137 DPRINT("%s()\n", __FUNCTION__);
1138 __debugbreak();
1139 return E_NOTIMPL;
1140}
1141// -IConsoleNameSpace2
#define DEFAULT_COLUMN0_WIDTH
Definition: CConsoleWnd.cpp:12
@ SPLITTER_LEFT
Definition: CConsoleWnd.h:17
@ SPLITTER_NONE
Definition: CConsoleWnd.h:16
@ SPLITTER_RIGHT
Definition: CConsoleWnd.h:18
NodeType
Definition: Node.h:6
static struct myctx * mcs
Definition: adnstest.c:53
#define WM_USER_CLOSE_CHILD
Definition: precomp.h:14
DWORD ViewModeToStyle(LISTVIEW_MODE ListViewMode)
Definition: misc.cpp:109
LPWSTR ViewModeToString(LISTVIEW_MODE ListViewMode)
Definition: misc.cpp:67
UINT ViewModeToCmdId(LISTVIEW_MODE ListViewMode)
Definition: misc.cpp:11
LISTVIEW_MODE StringToViewMode(LPWSTR ViewMode)
Definition: misc.cpp:88
BOOL StringToBool(_In_ LPWSTR pszString)
Definition: misc.cpp:249
@ ListView_Detail
Definition: precomp.h:54
enum _LISTVIEW_MODE LISTVIEW_MODE
#define IDM_VIEW_LARGE_ICONS
Definition: resource.h:45
#define IDM_TREEVIEW_CONTEXT
Definition: resource.h:25
#define IDS_COLUMN0
Definition: resource.h:128
#define IDM_VIEW_DETAILS
Definition: resource.h:48
#define DPRINT1
Definition: precomp.h:8
#define STDMETHODIMP
Definition: basetyps.h:43
#define STDMETHODIMP_(t)
Definition: basetyps.h:44
const GUID IID_IUnknown
#define ARRAYSIZE(a)
Definition: cat.c:25
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
HWND Create(LPCTSTR lpstrWndClass, HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: atlwin.h:417
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1116
BOOL SetWindowText(LPCTSTR lpszString)
Definition: atlwin.h:1300
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:816
BOOL MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint=TRUE)
Definition: atlwin.h:1026
LRESULT OnActionNewWindow(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
STDMETHODIMP GetParentItem(HSCOPEITEM item, HSCOPEITEM *pItemParent, LONG *plCookie)
static HRESULT ParseViewAttributes(MscFile *mscFile, IXMLDOMElement *pViewElement, UINT *puViewID, INT *piScopePanelWidth, INT *piActionsPanelWidth)
CConsoleWnd(CMainWnd *MainWnd, CSnapin *RootNode, CSnapin *SelectedNode=NULL)
Definition: CConsoleWnd.cpp:14
LRESULT OnLButtonDown(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID AddTreeViewItemRecursive(HTREEITEM hParentTreeItem, CSnapin *Node)
LISTVIEW_MODE m_ListViewMode
Definition: CConsoleWnd.h:46
CSnapin * m_ViewRootNode
Definition: CConsoleWnd.h:48
STDMETHODIMP AddExtension(HSCOPEITEM hItem, LPCLSID lpClsid)
LRESULT OnViewMode(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
UINT m_ViewId
Definition: CConsoleWnd.h:52
LRESULT OnMouseMove(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
int m_iActionsPaneWidth
Definition: CConsoleWnd.h:34
BOOL m_bTreeViewVisible
Definition: CConsoleWnd.h:39
LRESULT OnDrawItem(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP UpdateAllViews(LPDATAOBJECT lpDataObject, LPARAM data, LONG_PTR hint)
STDMETHODIMP QueryResultImageList(LPIMAGELIST *ppImageList)
STDMETHODIMP DeleteItem(HSCOPEITEM hItem, LONG fDeleteThis)
BOOL m_bStatusBarVisible
Definition: CConsoleWnd.h:41
int m_iSplitterWidth
Definition: CConsoleWnd.h:35
STDMETHODIMP InsertItem(LPSCOPEDATAITEM item)
LRESULT OnCreate(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CConsoleWnd.cpp:44
STDMETHODIMP Expand(HSCOPEITEM hItem, BOOL bExpand)
CTreeView m_TreeView
Definition: CConsoleWnd.h:28
LRESULT OnActivate(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP SetStatusText(LPOLESTR pszStatusText)
VOID SetStatusBarText(LPWSTR pszStatusText)
VOID UpdateView()
VOID SetStatusBarVisible(BOOL bVisible)
LRESULT OnNotify(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LISTVIEW_MODE GetListViewMode()
STDMETHODIMP MessageBox(LPCWSTR lpszText, LPCWSTR lpszTitle, UINT fuStyle, int *piRetval)
static HRESULT ParseView(CMainWnd *pMainWnd, MscFile *mscFile, IXMLDOMElement *pViewElement)
VOID SetListViewMode(LISTVIEW_MODE ListViewMode)
int m_iSplitOffset
Definition: CConsoleWnd.h:36
CMainWnd * m_MainWnd
Definition: CConsoleWnd.h:27
SPLITTER_SIDE m_iSplitSide
Definition: CConsoleWnd.h:37
STDMETHODIMP GetMainWindow(HWND *phwnd)
BOOL IsDescriptionBarVisible()
CListView m_ListView
Definition: CConsoleWnd.h:29
CActionWnd m_ActionsPane
Definition: CConsoleWnd.h:32
BOOL m_bActionsPaneVisible
Definition: CConsoleWnd.h:40
CSnapin * m_ViewSelectedNode
Definition: CConsoleWnd.h:49
STDMETHODIMP GetItem(LPSCOPEDATAITEM item)
STDMETHODIMP GetChildItem(HSCOPEITEM item, HSCOPEITEM *pItemChild, LONG *plCookie)
LRESULT OnContextMenu(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnLButtonUp(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL m_bDescriptionBarVisible
Definition: CConsoleWnd.h:42
STDMETHODIMP SetHeader(LPHEADERCTRL pHeader)
STDMETHODIMP GetNextItem(HSCOPEITEM item, HSCOPEITEM *pItemNext, LONG *plCookie)
VOID SaveView(MscFile *mscFile, IXMLDOMElement *pParentElement)
VOID SetDescriptionBarVisible(BOOL bVisible)
int m_iTreeViewWidth
Definition: CConsoleWnd.h:33
BOOL IsTreeViewVisible()
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject)
STDMETHODIMP QueryScopeImageList(LPIMAGELIST *ppImageList)
CWindow m_DescriptionBar
Definition: CConsoleWnd.h:31
STDMETHODIMP SelectScopeItem(HSCOPEITEM hScopeItem)
LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnViewCustomize(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
VOID UpdateTreeView()
STDMETHODIMP QueryConsoleVerb(LPCONSOLEVERB *ppConsoleVerb)
CStatusBar m_StatusBar
Definition: CConsoleWnd.h:30
int m_iStatusBarHeight
Definition: CConsoleWnd.h:38
VOID SelectParent()
LRESULT OnSize(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP IsTaskpadViewPreferred()
STDMETHODIMP NewWindow(HSCOPEITEM hScopeItem, ULONG lOptions)
BOOL IsStatusBarVisible()
static LPCWSTR GetWndClassName()
Definition: CConsoleWnd.h:99
STDMETHODIMP SetToolbar(LPTOOLBAR pToolbar)
STDMETHODIMP QueryResultView(LPUNKNOWN *pUnknown)
LRESULT OnActionRename(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
STDMETHODIMP SetItem(LPSCOPEDATAITEM item)
HMENU m_hMenuTreeView
Definition: CConsoleWnd.h:44
VOID SetActionsPaneVisible(BOOL bVisible)
VOID SetTreeViewVisible(BOOL bVisible)
VOID UpdateLayout()
BOOL IsActionsPaneVisible()
int GetColumnWidth(int iCol)
Definition: rosctrls.h:86
int InsertColumn(int iCol, LV_COLUMN *pcol)
Definition: rosctrls.h:52
HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: rosctrls.h:8
BOOL SetColumnWidth(int iCol, int width)
Definition: rosctrls.h:91
VOID UpdateToolbuttons(BOOL bTreeViewVisible, BOOL bActionsPaneVisible)
Definition: CMainWnd.cpp:853
VOID UpdateUpToolButton(BOOL bShow)
Definition: CMainWnd.cpp:847
VOID UpdateAboutSnapinMenu(CSnapin *Snapin)
Definition: CMainWnd.cpp:809
VOID UpdateLayout()
Definition: CMainWnd.cpp:723
CSnapin * GetRootSnapin()
Definition: CMainWnd.cpp:668
VOID UpdateMenu()
Definition: CMainWnd.cpp:749
VOID UpdateViewMenu(LISTVIEW_MODE ListViewMode)
Definition: CMainWnd.cpp:837
CWindow m_MDIClient
Definition: CMainWnd.h:55
CSimpleMap< UINT, CSnapin * > * m_TempNodeMap
Definition: CMainWnd.h:59
HIMAGELIST SnapinImageList()
Definition: CMainWnd.cpp:662
LRESULT OnViewMode(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:405
LRESULT OnViewCustomize(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:422
VOID UpdateTitle()
Definition: CMainWnd.cpp:763
VOID RegisterView(CConsoleWnd *pView)
Definition: CMainWnd.cpp:674
VOID UnregisterView(CConsoleWnd *pView)
Definition: CMainWnd.cpp:684
const CAtlString & DisplayName() const
Definition: CSnapin.cpp:41
UINT GetNodeId()
Definition: CSnapin.cpp:49
void SetDisplayName(LPWSTR pszName)
Definition: CSnapin.cpp:43
VOID SetText(LPCWSTR lpszText)
Definition: rosctrls.h:467
HWND Create(HWND hwndParent, HMENU hMenu)
Definition: rosctrls.h:472
BOOL Expand(HTREEITEM item, DWORD action)
Definition: rosctrls.h:614
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:545
HWND Create(HWND hwndParent, DWORD dwStyles=0)
Definition: rosctrls.h:493
BOOL DeleteItem(HTREEITEM i)
Definition: rosctrls.h:555
BOOL SelectItem(HTREEITEM item, DWORD action=TVGN_CARET)
Definition: rosctrls.h:619
HTREEITEM HitTest(TVHITTESTINFO *phtInfo)
Definition: rosctrls.h:595
DWORD_PTR GetItemData(HTREEITEM item)
Definition: rosctrls.h:600
HTREEITEM AddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam)
Definition: rosctrls.h:513
HTREEITEM GetNextItem(HTREEITEM i, WORD flags)
Definition: rosctrls.h:585
HTREEITEM GetSelection()
Definition: rosctrls.h:609
HWND EditLabel(HTREEITEM i)
Definition: rosctrls.h:580
HRESULT SaveWindowPlacement(CWindow *pWindow, IXMLDOMElement *pParentNode)
Definition: mscfile.cpp:222
HRESULT GetAttribute(IXMLDOMElement *pElement, LPWSTR pszAttributeName, VARIANT *pAttributeValue)
Definition: mscfile.cpp:484
HRESULT CreateAndAddAttributeNode(PCWSTR wszName, PCWSTR wszValue, IXMLDOMElement *pParent)
Definition: mscfile.cpp:137
HRESULT CreateAndAddElementNode(PCWSTR wszName, IXMLDOMNode *pParent, IXMLDOMElement **ppElement=NULL)
Definition: mscfile.cpp:204
RECT rect
Definition: combotst.c:67
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
LPWSTR Name
Definition: desk.c:124
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT WINAPI StringFromCLSID(REFCLSID clsid, LPOLESTR *str)
Definition: combase.c:1515
OLECHAR * BSTR
Definition: compat.h:2293
HANDLE HWND
Definition: compat.h:19
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
Definition: wcs.c:2917
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
Definition: wcs.c:2752
_ACRTIMP int __cdecl _wtoi(const wchar_t *)
Definition: wcs.c:2778
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:164
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:94
#define pt(x, y)
Definition: drawing.c:79
#define L(x)
Definition: resources.c:13
#define NodeType(P)
Definition: nodetype.h:51
#define __FUNCTION__
Definition: types.h:116
_In_ PUNKNOWN pUnknown
Definition: drmk.h:76
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
unsigned int UINT
Definition: sysinfo.c:13
FxContextHeader * pHeader
Definition: handleapi.cpp:604
REFIID riid
Definition: atlbase.h:39
ULONG AddRef()
ULONG Release()
HRESULT nextNode([retval, out] IXMLDOMNode **outNode)
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
PCONFIGURATION_COMPONENT_DATA RootNode
Definition: macharm.c:19
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
LONG_PTR HSCOPEITEM
Definition: mmc.idl:115
static PVOID ptr
Definition: dispmode.c:27
#define _swprintf(buf, format,...)
Definition: sprintf.c:56
static HTREEITEM hChild
Definition: treeview.c:383
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static HWND child
Definition: cursoricon.c:298
#define SAFE_RELEASE(p)
Definition: mscfile.h:15
#define CHK_HR(stmt)
Definition: mscfile.h:9
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
enum tagDOMNodeType DOMNodeType
@ NODE_ELEMENT
Definition: msxml6.idl:113
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
Definition: defwnd.c:16
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
interface IDataObject * LPDATAOBJECT
Definition: objfwd.h:21
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:273
#define V_BSTR(A)
Definition: oleauto.h:226
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
short WCHAR
Definition: pedump.c:58
#define WS_VISIBLE
Definition: pedump.c:620
long LONG
Definition: pedump.c:60
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define INT
Definition: polytest.cpp:20
#define TVN_SELCHANGED
Definition: commctrl.h:3740
#define TVGN_PARENT
Definition: commctrl.h:3460
#define TVHT_ONITEM
Definition: commctrl.h:3532
#define TVN_BEGINLABELEDIT
Definition: commctrl.h:3748
#define LVS_TYPEMASK
Definition: commctrl.h:2270
#define TVSIL_NORMAL
Definition: commctrl.h:3448
#define LPNMTREEVIEW
Definition: commctrl.h:3648
#define TVS_SHOWSELALWAYS
Definition: commctrl.h:3257
#define TVN_ENDLABELEDIT
Definition: commctrl.h:3749
#define TVS_HASLINES
Definition: commctrl.h:3253
#define TreeView_GetItemRect(hwnd, hitem, prc, code)
Definition: commctrl.h:3434
#define TVE_EXPAND
Definition: commctrl.h:3428
#define TVI_ROOT
Definition: commctrl.h:3373
#define TV_DISPINFO
Definition: commctrl.h:3668
#define TVGN_ROOT
Definition: commctrl.h:3457
#define LVCFMT_LEFT
Definition: commctrl.h:2603
#define TVS_EDITLABELS
Definition: commctrl.h:3255
#define TreeView_SetItem(hwnd, pitem)
Definition: commctrl.h:3502
#define REFIID
Definition: guiddef.h:118
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
HWND WINAPI SetCapture(_In_ HWND hWnd)
DWORD WINAPI GetSysColor(_In_ int)
#define SetWindowLong
Definition: winuser.h:6019
#define WS_EX_STATICEDGE
Definition: winuser.h:403
#define MF_BYCOMMAND
Definition: winuser.h:202
#define WM_SYSCOMMAND
Definition: winuser.h:1769
#define DT_NOPREFIX
Definition: winuser.h:537
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890
#define WM_MDICREATE
Definition: winuser.h:1840
#define DT_END_ELLIPSIS
Definition: winuser.h:529
#define TPM_RIGHTBUTTON
Definition: winuser.h:2416
#define WM_SIZE
Definition: winuser.h:1639
HBRUSH WINAPI GetSysColorBrush(_In_ int)
#define SS_OWNERDRAW
Definition: winuser.h:352
#define DT_SINGLELINE
Definition: winuser.h:540
#define COLOR_3DDKSHADOW
Definition: winuser.h:950
HWND WINAPI GetCapture(void)
Definition: message.c:2881
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define MDIS_ALLCHILDSTYLES
Definition: winuser.h:253
#define HWND_DESKTOP
Definition: winuser.h:1220
#define DT_LEFT
Definition: winuser.h:534
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define DT_MODIFYSTRING
Definition: winuser.h:535
#define LoadMenu
Definition: winuser.h:5983
#define GetWindowLong
Definition: winuser.h:5962
#define DT_VCENTER
Definition: winuser.h:543
#define PostMessage
Definition: winuser.h:5998
#define CW_USEDEFAULT
Definition: winuser.h:225
BOOL WINAPI CheckMenuRadioItem(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define COLOR_3DHILIGHT
Definition: winuser.h:948
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
#define WS_EX_CLIENTEDGE
Definition: winuser.h:384
#define WM_MDIGETACTIVE
Definition: winuser.h:1849
#define GWL_STYLE
Definition: winuser.h:863
#define SC_MAXIMIZE
Definition: winuser.h:2624
#define DefMDIChildProc
Definition: ros2win.h:33
void __cdecl __debugbreak(void)
Definition: intrin_ppc.h:698
#define DPRINT
Definition: sndvol32.h:73
long y
Definition: dcommon.idl:24
long x
Definition: dcommon.idl:24
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
UINT code
Definition: winuser.h:3267
HTREEITEM hItem
Definition: commctrl.h:3526
#define SetWindowLongPtr
Definition: treelist.c:70
uint16_t * PWSTR
Definition: typedefs.h:56
const uint16_t * PCWSTR
Definition: typedefs.h:57
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
Definition: dlist.c:348
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:626
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:547
DWORD hint
Definition: vfdcmd.c:88
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1382
#define S_FALSE
Definition: winerror.h:3451
#define E_NOINTERFACE
Definition: winerror.h:3479
#define TRANSPARENT
Definition: wingdi.h:950
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:917