ReactOS 0.4.17-dev-940-g8bd6e85
CMainWnd.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: Main window class
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
13{
14 { BTN_UNDO, IDM_TB_UNDO, 0, BTNS_BUTTON, {0}, 0, 0 },
15 { BTN_REDO, IDM_TB_REDO, 0, BTNS_BUTTON, {0}, 0, 0 },
16 { 4, IDC_STATIC, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 },
19 { 4, IDC_STATIC, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 },
20// { BTN_EXPORT_LIST, IDM_TB_EXPORT_LIST, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 },
21 { 4, IDC_STATIC, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 },
22// { BTN_HELP, IDM_TB_HELP, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 },
24};
25
27 : m_ConsoleNumber(0)
28 , m_DocumentMode(DocumentMode_Author)
29 , m_LogicalReadOnly(FALSE)
30 , m_PreventViewCustomization(FALSE)
31 , m_bToolBarVisible(true)
32 , m_NextViewId(1)
33 , m_RootNode(NULL)
34{
36 m_pfnSuperWindowProc = m_FrameThunk.GetWNDPROC();
38 m_hMenuConsoleSmall = LoadMenu(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDM_CONSOLE_SMALL));
39 m_hMenuConsoleLarge = LoadMenu(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDM_CONSOLE_LARGE));
43 0,
44 4);
45
49 0,
50 4);
51
52 HBITMAP hToolBarBitmap = LoadBitmapW(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDB_TOOLBAR));
54 hToolBarBitmap,
55 RGB(0,0,0));
56 DeleteObject(hToolBarBitmap);
57
60}
61
63{
69}
70
73{
75 LPCTSTR lpFileName = (LPCTSTR)(((LPCREATESTRUCT)lParam)->lpCreateParams);
76 RECT rect;
77
79
80 /* Create and initialize the Toolbar */
82 m_ToolBar.Create(m_hWnd,
84 0);
85
86 m_ToolBar.SendMessageW(TB_SETBITMAPSIZE, 0, MAKELONG(16, 16));
87 m_ToolBar.SendMessageW(TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
88
91
92 m_ToolBar.GetClientRect(&rect);
94
97
98 /* Create the MDI client window */
101
105
106 if (lpFileName == NULL)
107 {
109 }
110 return 0;
111}
112
115{
116 UpdateLayout();
117 return 0;
118}
119
122{
123 UpdateTitle();
124 UpdateMenu();
125 return 0;
126}
127
130{
132 SetMenu(NULL);
133 return 0;
134}
135
138{
140 return 0;
141}
142
144CMainWnd::OnFileNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
145{
147 HWND hChild;
149// CAtlString nodeGuid(L"{C96401CC-0E17-11D3-885B-00C04F72C717}");
150
151 /* Close all views */
152 POSITION pos = m_ViewList.GetHeadPosition();
153 while (pos)
154 {
155 CConsoleWnd *console = (CConsoleWnd*)m_ViewList.GetNext(pos);
156 console->SendMessage(WM_CLOSE, 0, 0);
157 }
158
159 /* Delete the snapin tree */
160 delete m_RootNode;
162
163 /* Create a new snapin root node */
164 CSnapinCacheEntry *CacheEntry = GetSnapinCacheEntryByGuid((PWSTR)L"{C96401CC-0E17-11D3-885B-00C04F72C717}");
165 if (!CacheEntry)
166 {
167 DPRINT1("No folder cache entry!\n");
168 return 0;
169 }
170
171 m_RootNode = new CSnapin(CacheEntry, rootName.GetString());
172 if (!CacheEntry)
173 {
174 DPRINT1("No root folder!\n");
175 return 0;
176 }
177
178 /* Create a new view */
179 mcs.szTitle = rootName.GetString();
181 mcs.hOwner = _AtlBaseModule.GetModuleInstance();
182 mcs.x = mcs.cx = CW_USEDEFAULT;
183 mcs.y = mcs.cy = CW_USEDEFAULT;
184 mcs.style = MDIS_ALLCHILDSTYLES;
185 BOOL bMaximized = FALSE;
186 HWND hWndOld = (HWND)m_MDIClient.SendMessage(WM_MDIGETACTIVE, 0, (LPARAM)&bMaximized);
187 mcs.lParam = bMaximized || !hWndOld;
188 /* This object registers itself in the _AtlWinModule to be assigned to the next window created */
190 /* Ask for a new MDI Child window */
192 if (hChild)
193 {
195 }
196 else
197 {
198 delete child;
199 delete m_RootNode;
201 }
202
203 UpdateTitle();
204 UpdateMenu();
205
206 return 1;
207}
208
210CMainWnd::OnFileOpen(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
211{
212 OPENFILENAME openas;
214
216 if (child == NULL)
217 return 0;
218
219 ZeroMemory(&openas, sizeof(openas));
220 wcscpy(szPath, L"");
221
222 openas.lStructSize = sizeof(OPENFILENAME);
223 openas.hwndOwner = m_hWnd;
224 openas.hInstance = _AtlBaseModule.GetModuleInstance();
225 openas.lpstrFilter = L"MSC Files (*.msc)\0*.msc\0All Files (*.*)\0*.*\0";
226 openas.lpstrFile = szPath;
227 openas.nMaxFile = MAX_PATH;
229 openas.lpstrDefExt = L"msc";
230
231 if (GetOpenFileNameW(&openas))
232 {
235 if (ret == ERROR_SUCCESS)
237 }
238
239 return 0;
240}
241
243CMainWnd::OnFileSave(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
244{
246 if (child == NULL)
247 return 0;
248
249 if (m_Filename.IsEmpty())
250 return OnFileSaveAs(wNotifyCode, wID, hWndCtl, bHandled);
251
252 return SaveMscFile(m_Filename);
253}
254
256CMainWnd::OnFileSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
257{
258 OPENFILENAME saveas;
260
262 if (child == NULL)
263 return 0;
264
265 ZeroMemory(&saveas, sizeof(saveas));
266 if (!m_Filename.IsEmpty())
267 {
269 }
270 else
271 {
272 child->GetWindowText(szPath, MAX_PATH);
274 wcscat(szPath, L".msc");
275 }
276
277 saveas.lStructSize = sizeof(OPENFILENAME);
278 saveas.hwndOwner = m_hWnd;
279 saveas.hInstance = _AtlBaseModule.GetModuleInstance();
280 saveas.lpstrFilter = L"MSC Files (*.msc)\0*.msc\0All Files (*.*)\0*.*\0";
281 saveas.lpstrFile = szPath;
282 saveas.nMaxFile = MAX_PATH;
284 saveas.lpstrDefExt = L"msc";
285
286 if (GetSaveFileNameW(&saveas))
287 {
290 if (ret == ERROR_SUCCESS)
292 return ret;
293 }
294
295 return 0;
296}
297
299CMainWnd::OnFileAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
300{
302 if (child == NULL)
303 return 0;
304 CAddDialog dlg(this, child);
305 if (dlg.DoModal(m_hWnd, (LPARAM)child) == IDOK)
306 {
307 UpdateViews();
308 }
309
310 return 0;
311}
312
314CMainWnd::OnFileOptions(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
315{
317 if (child == NULL)
318 return 0;
319 COptionsDialog dlg(this, child);
320 dlg.DoModal(m_hWnd, (LPARAM)child);
321 return 0;
322}
323
325CMainWnd::OnFileRecent(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
326{
328
329 mi.cbSize = sizeof(MENUITEMINFOW);
330 mi.fMask = MIIM_DATA;
331 if (GetMenuItemInfoW(GetMenu(), wID, FALSE, &mi))
332 {
333 CRecentFileEntry *FileEntry = (CRecentFileEntry *)mi.dwItemData;
334
335 LRESULT ret = LoadMscFile(FileEntry->FileName());
336 if (ret == ERROR_SUCCESS)
337 AddToRecentFiles(FileEntry->FileName());
338 }
339
340 return 0;
341}
342
344CMainWnd::OnFileExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
345{
346 PostMessage(WM_CLOSE, 0, 0);
347 return 0;
348}
349
351CMainWnd::OnViewCustomize(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
352{
354 if (child == NULL)
355 return 0;
356
357 CCustomizeDialog dlg2(this, child);
358 dlg2.DoModal(m_hWnd, (LPARAM)child);
359 return 0;
360}
361
363CMainWnd::OnWindowsNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
364{
366 HWND hChild;
367
368 mcs.szTitle = m_RootNode->DisplayName().GetString();
370 mcs.hOwner = _AtlBaseModule.GetModuleInstance();
371 mcs.x = mcs.cx = CW_USEDEFAULT;
372 mcs.y = mcs.cy = CW_USEDEFAULT;
373 mcs.style = MDIS_ALLCHILDSTYLES;
374 BOOL bMaximized = FALSE;
375 HWND hWndOld = (HWND)m_MDIClient.SendMessage(WM_MDIGETACTIVE, 0, (LPARAM)&bMaximized);
376 mcs.lParam = bMaximized || !hWndOld;
377 /* This object registers itself in the _AtlWinModule to be assigned to the next window created */
379 /* Ask for a new MDI Child window */
381 if (!hChild)
382 {
383 delete child;
384 }
385
386 UpdateMenu();
387 return 0;
388}
389
391CMainWnd::OnWindowsCascade(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
392{
394 return 0;
395}
396
398CMainWnd::OnWindowsTile(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
399{
401 return 0;
402}
403
405CMainWnd::OnWindowsArrange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
406{
408 return 0;
409}
410
412CMainWnd::OnHelpAboutMMC(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
413{
414 HICON hIcon = LoadIcon(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDI_MAINAPP));
417 CAtlString TitleString;
418
419 TitleString = AboutTitle;
420 TitleString += L"#";
421 TitleString += AppTitle;
422
423 ::ShellAboutW(this->m_hWnd, (LPWSTR)TitleString.GetString(), NULL, hIcon);
424
425 return 0;
426}
427
429CMainWnd::OnToolbarScopePane(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
430{
432 if (child == NULL)
433 return 0;
434
435 child->SetTreeViewVisible(!child->IsTreeViewVisible());
436 return 0;
437}
438
440CMainWnd::OnToolbarActionsPane(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
441{
443 if (child == NULL)
444 return 0;
445
446 child->SetActionsPaneVisible(!child->IsActionsPaneVisible());
447 return 0;
448}
449
451CMainWnd::OnMDIForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
452{
454 if (hChild)
455 {
456 WPARAM wParam = MAKEWPARAM(wNotifyCode, wID);
457 LPARAM lParam = (LPARAM)hWndCtl;
459 }
460 return 0;
461}
462
464{
465 return &m_ConsoleTitle;
466}
467
469{
470 m_ConsoleTitle = consoleTitle;
471 SetWindowTextW(consoleTitle.GetString());
472}
473
474BOOL
476{
477 return m_bToolBarVisible;
478}
479
480VOID
482{
483 m_bToolBarVisible = bVisible;
484 UpdateLayout();
485}
486
487BOOL
489{
491}
492
493VOID
495{
496 m_bStandardMenusVisible = bVisible;
497// m_MainWnd->UpdateMenu(m_bStandardMenusVisible);
498// UpdateLayout();
499}
500
503{
504 CRegKey SnapinsKey;
505 if (ERROR_SUCCESS == SnapinsKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\MMC\\SnapIns", KEY_READ))
506 {
507 WCHAR namebuf[MAX_PATH];
508 DWORD index = 0, namelen = _countof(namebuf);
509 while (ERROR_SUCCESS == SnapinsKey.EnumKey(index++, namebuf, &namelen))
510 {
511 DPRINT1("%S\n", namebuf);
512 CSnapinCacheEntry* snapin = CSnapinCacheEntry::Create(SnapinsKey, namebuf, m_hSnapinImageList);
513 DPRINT1("CacheEntry %p\n", snapin);
514 if (snapin)
515 {
516 m_SnapinCache.Add(snapin);
517 }
518 namelen = _countof(namebuf);
519 }
520 SnapinsKey.Close();
521 }
522 return S_OK;
523}
524
525int
527{
528 return m_SnapinCache.GetSize();
529}
530
533{
534 return m_SnapinCache[nIndex];
535}
536
539{
540 for (int i = 0; i < m_SnapinCache.GetSize(); i++)
541 {
543 if (entry->GuidString().CompareNoCase(pszGuid) == 0)
544 return entry;
545 }
546 return NULL;
547}
548
551{
552 return m_hSnapinImageList;
553}
554
555CSnapin *
557{
558 return m_RootNode;
559}
560
561int
563{
564 m_ViewList.AddTail(pView);
565 return m_NextViewId++;
566}
567
568void
570{
571 POSITION pos = m_ViewList.Find(pView);
572 if (pos)
573 m_ViewList.RemoveAt(pos);
574}
575
576void
578{
579 CConsoleWnd *console;
581
582 pos = m_ViewList.GetHeadPosition();
583 while (pos)
584 {
585 console = (CConsoleWnd*)m_ViewList.GetNext(pos);
586 if (console)
587 console->UpdateView();
588
589 }
590}
591
592void
594{
595 RECT rcClient, rcToolBar = {0, 0, 0, 0};
596 GetClientRect(&rcClient);
597
598 int nToolBarFlags = SWP_NOZORDER;
600 {
601 rcClient.top += m_iToolBarHeight;
602 rcClient.bottom -= m_iToolBarHeight;
603
604 rcToolBar.right = rcClient.right;
605 rcToolBar.bottom = m_iToolBarHeight;
606 nToolBarFlags |= SWP_SHOWWINDOW;
607 }
608 else
609 {
610 nToolBarFlags |= SWP_HIDEWINDOW;
611 }
612
613 m_ToolBar.SetWindowPos(NULL, rcToolBar.left, rcToolBar.top, rcToolBar.right, rcToolBar.bottom, nToolBarFlags);
614
615 m_MDIClient.SetWindowPos(NULL, rcClient.left, rcClient.top, rcClient.right, rcClient.bottom, SWP_NOZORDER);
616}
617
620{
621 return m_DocumentMode;
622}
623
624void
626{
627 m_DocumentMode = DocumentMode;
628}
629
630BOOL
632{
633 return m_LogicalReadOnly;
634}
635
636void
638{
639 m_LogicalReadOnly = LogicalReadOnly;
640}
641
642BOOL
644{
646}
647
648void
650{
651 m_PreventViewCustomization = PreventCustomization;
652}
653
654VOID
656{
658 HMENU hMenu = GetMenu();
659
660 mi.cbSize = sizeof(MENUITEMINFOW);
662 mi.fType = MFT_STRING;
663 mi.wID = IDM_FILE_RECENT1;
664
666
667 INT i = 0;
669 POSITION pos = m_RecentFilesList.GetHeadPosition();
670 while (pos != NULL)
671 {
673
674 CRecentFileEntry *FileEntry = m_RecentFilesList.GetNext(pos);
675 ValueName.Format(L"%d %s", i + 1, FileEntry->DisplayName().GetString());
676 mi.dwTypeData = ValueName.GetString();
677 mi.dwItemData = (ULONG_PTR)FileEntry;
678
680 mi.wID++;
681
682 i++;
683 if (i >= MAX_RECENT_FILES)
684 break;
685 }
686
687 mi.fType = MFT_SEPARATOR;
688 mi.fMask = MIIM_FTYPE | MIIM_ID;
690}
691
692VOID
694{
695 CRegKey RecentFilesKey;
696 if (ERROR_SUCCESS == RecentFilesKey.Open(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\MMC_NEW\\Recent Files List", KEY_READ))
697 {
698 WCHAR pathBuf[MAX_PATH];
699 ULONG pathLength, i;
700 DWORD err;
701
702 CAtlString valueName;
703 CAtlString fileName;
704
705 for (i = 0; i < MAX_RECENT_FILES; i++)
706 {
707 valueName.Format(L"File%u", i + 1);
708 pathLength = _countof(pathBuf);
709 err = RecentFilesKey.QueryStringValue(valueName.GetString(),
710 pathBuf,
711 &pathLength);
712 if (err == ERROR_SUCCESS)
713 {
714 CAtlString fileName(pathBuf);
715 m_RecentFilesList.AddTail(new CRecentFileEntry(fileName));
716 }
717 }
718
719 RecentFilesKey.Close();
720 }
721
723}
724
725VOID
727{
728 POSITION pos = m_RecentFilesList.GetHeadPosition();
729 while (pos != NULL)
730 {
732 if (ValueData->FileName() == FileName)
733 break;
734
735 m_RecentFilesList.GetNext(pos);
736 }
737
738 if (pos == NULL)
739 {
740 /* Insert at top */
742 if (m_RecentFilesList.GetCount() > 4)
743 m_RecentFilesList.RemoveTail();
744 }
745 else
746 {
747 /* Move to top */
748 /* m_RecentFilesList.MoveToHead(pos); */
750 m_RecentFilesList.RemoveAt(pos);
752 }
753
754 /* Update the registry key */
755 CRegKey RecentFilesKey;
756 if (ERROR_SUCCESS == RecentFilesKey.Create(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\MMC_NEW\\Recent Files List"))
757 {
758 INT count = 0;
760 pos = m_RecentFilesList.GetHeadPosition();
761 while (pos != NULL)
762 {
764 ValueName.Format(L"File%u", count + 1);
765 RecentFilesKey.SetStringValue(ValueName, ValueData->FileName().GetString());
766 count++;
767 if (count >= MAX_RECENT_FILES)
768 break;
769 }
770
771 RecentFilesKey.Close();
772 }
773
775}
776
777DWORD
779{
780 DWORD_PTR args[1] = { (DWORD_PTR)Number };
782
783 str.LoadString(IDS_CONSOLETITLE);
784
786 str.GetString(), 0, 0, pBuffer, dwSize, (va_list*)args);
787}
788
789LPWSTR
791{
792 switch (m_DocumentMode)
793 {
795 return (LPWSTR)L"Author";
796
798 return (LPWSTR)L"User";
799
801 return (LPWSTR)L"UserMDI";
802
804 return (LPWSTR)L"UserSDI";
805
806 default:
807 return (LPWSTR)L"";
808 }
809}
810
813{
814 IXMLDOMElement *pRootNode = NULL;
815 IXMLDOMElement *pNode = NULL;
816 IXMLDOMElement *pFrameStateNode = NULL;
817 IXMLDOMElement *pViewsNode = NULL;
818 IXMLDOMElement *pScopeTreeNode = NULL;
819 IXMLDOMElement *pSnapinCacheNode = NULL;
820 IXMLDOMElement *pSnapinNode = NULL;
821 IXMLDOMElement *pNodesNode = NULL;
823 CConsoleWnd* console;
824 HRESULT hr = S_OK;
825
826 MscFile *mscFile = new MscFile(FileName.GetString());
827
828 CHK_HR(mscFile->CreateAndInitDOM());
829
830 /* <?xml version="1.0"?> */
831 CHK_HR(mscFile->CreateAndAddPINode(L"xml", L"version='1.0'"));
832
833 /* <MMC_ConsoleFile ConsoleVersion="2.0" ProgramMode="Author"> */
834 CHK_HR(mscFile->CreateElement(L"MMC_ConsoleFile", &pRootNode));
835 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ConsoleVersion", L"2.0", pRootNode));
836 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ProgramMode", ProgramModeToString(), pRootNode));
837
838 /* <ConsoleFileID> */
839 CHK_HR(mscFile->CreateAndAddElementNode(L"ConsoleFileID", pRootNode, &pNode));
840 CHK_HR(mscFile->CreateAndAddTextNode(L"{Random GUID}", pNode));
841 SAFE_RELEASE(pNode); /* </ConsoleFileID> */
842
843 /* <FrameState> */
844 CHK_HR(mscFile->CreateAndAddElementNode(L"FrameState", pRootNode, &pFrameStateNode));
845 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ShowStatusBar", L"true", pFrameStateNode));
847 CHK_HR(mscFile->CreateAndAddAttributeNode(L"LogicalReadOnly", L"true", pFrameStateNode));
849 CHK_HR(mscFile->CreateAndAddAttributeNode(L"PreventViewCustomization", L"true", pFrameStateNode));
850
851 mscFile->SaveWindowPlacement(this, pFrameStateNode);
852
853 SAFE_RELEASE(pFrameStateNode); /* </FrameState> */
854
855 /* <Views> */
856 CHK_HR(mscFile->CreateAndAddElementNode(L"Views", pRootNode, &pViewsNode));
857 pos = m_ViewList.GetHeadPosition();
858 do
859 {
860 console = (CConsoleWnd*)m_ViewList.GetNext(pos);
861 if (console)
862 console->SaveView(mscFile, pViewsNode);
863
864 } while (pos != NULL);
865 SAFE_RELEASE(pViewsNode); /* </Views> */
866
867 /* <ScopeTree> */
868 CHK_HR(mscFile->CreateAndAddElementNode(L"ScopeTree", pRootNode, &pScopeTreeNode));
869
870 /* <SnapinCache> */
871 CHK_HR(mscFile->CreateAndAddElementNode(L"SnapinCache", pScopeTreeNode, &pSnapinCacheNode));
872
873 for (int i = 0; i < GetSnapinCacheCount(); i++)
874 {
876 if (entry)
877 {
878 /* <Snapin> */
879 CHK_HR(mscFile->CreateAndAddElementNode(L"Snapin", pSnapinCacheNode, &pSnapinNode));
880 CHK_HR(mscFile->CreateAndAddAttributeNode(L"CLSID", entry->GuidString().GetString(), pSnapinNode));
881 CHK_HR(mscFile->CreateAndAddAttributeNode(L"AllExtensionsEnabled", L"true", pSnapinNode)); /* FIXME */
882 CHK_HR(mscFile->CreateAndAddAttributeNode(L"Name", entry->Name().GetString(), pSnapinNode));
883 CHK_HR(mscFile->CreateAndAddAttributeNode(L"Provider", entry->Provider().GetString(), pSnapinNode));
884 SAFE_RELEASE(pSnapinNode); /* </Snapin> */
885 }
886 }
887 SAFE_RELEASE(pSnapinCacheNode); /* </SnapinCache> */
888
889 /* <Nodes> */
890 CHK_HR(mscFile->CreateAndAddElementNode(L"Nodes", pScopeTreeNode, &pNodesNode));
891 if (m_RootNode)
892 m_RootNode->SaveNode(mscFile, pNodesNode);
893 SAFE_RELEASE(pNodesNode); /* </Nodes> */
894
895 SAFE_RELEASE(pScopeTreeNode); /* </ScopeTree> */
896
897 CHK_HR(mscFile->AppendChildToParent(pRootNode));
898
899 CHK_HR(mscFile->SaveDOM());
900
901CleanUp:
902 SAFE_RELEASE(pRootNode); /* </MMC_ConsoleFile> */
903
904 delete mscFile;
905
906 return 0;
907}
908
911{
912 HRESULT hr = S_OK;
913
914 MscFile *mscFile = new MscFile(FileName.GetString());
915
916 CHK_HR(mscFile->CreateAndInitDOM());
917
918 CHK_HR(mscFile->LoadDOM());
919
920 /* FIXME: Parse the dom and set up the app, the views and the snapin tree */
921
922CleanUp:
923
924 delete mscFile;
925
926 return 0;
927}
static TBBUTTON TbButtons[]
Definition: CMainWnd.cpp:12
#define BTN_SCOPE_PANE
Definition: CMainWnd.h:16
#define BTN_REDO
Definition: CMainWnd.h:14
#define BTN_ACTIONS_PANE
Definition: CMainWnd.h:19
#define BTN_UNDO
Definition: CMainWnd.h:13
#define MAX_RECENT_FILES
Definition: CMainWnd.h:21
#define BTN_UP
Definition: CMainWnd.h:15
static struct myctx * mcs
Definition: adnstest.c:53
#define IDC_STATIC
Definition: resource.h:4
#define IDM_CONSOLE_SMALL
Definition: resource.h:8
#define IDI_MAINAPP
Definition: resource.h:6
#define IDM_FILE_NEW
Definition: resource.h:11
#define IDM_MDI_FIRSTCHILD
Definition: resource.h:19
#define IDM_CONSOLE_LARGE
Definition: resource.h:9
#define IDS_CONSOLETITLE
Definition: resource.h:4
#define IDM_FILE_EXIT
Definition: resource.h:15
#define IDS_APPTITLE
Definition: resource.h:3
@ DocumentMode_UserSDI
Definition: precomp.h:46
@ DocumentMode_User
Definition: precomp.h:44
@ DocumentMode_Author
Definition: precomp.h:43
@ DocumentMode_UserMDI
Definition: precomp.h:45
enum _DOCUMENT_MODE DOCUMENT_MODE
#define IDB_TOOLBAR
Definition: resource.h:19
#define IDM_FILE_RECENT1
Definition: resource.h:32
#define IDS_CONSOLEROOT
Definition: resource.h:98
#define IDM_FILE_RECENT_SEP
Definition: resource.h:36
#define IDM_TB_ACTIONS_PANE
Definition: resource.h:68
#define IDM_TB_REDO
Definition: resource.h:64
#define IDM_TB_UP
Definition: resource.h:65
#define IDM_TB_UNDO
Definition: resource.h:63
#define IDS_ABOUTTITLE
Definition: resource.h:15
#define IDM_TB_SCOPE_PANE
Definition: resource.h:66
#define DPRINT1
Definition: precomp.h:8
#define U(x)
Definition: wordpad.c:45
LONG Open(HKEY hKeyParent, LPCTSTR lpszKeyName, REGSAM samDesired=KEY_READ|KEY_WRITE) noexcept
Definition: atlbase.h:1173
LONG SetStringValue(LPCTSTR pszValueName, LPCTSTR pszValue, DWORD dwType=REG_SZ) noexcept
Definition: atlbase.h:1315
LONG QueryStringValue(LPCTSTR pszValueName, LPTSTR pszValue, ULONG *pnChars) noexcept
Definition: atlbase.h:1240
LONG Create(HKEY hKeyParent, LPCTSTR lpszKeyName, LPTSTR lpszClass=REG_NONE, DWORD dwOptions=REG_OPTION_NON_VOLATILE, REGSAM samDesired=KEY_READ|KEY_WRITE, LPSECURITY_ATTRIBUTES lpSecAttr=NULL, LPDWORD lpdwDisposition=NULL) noexcept
Definition: atlbase.h:1189
LONG Close() noexcept
Definition: atlbase.h:1156
LONG EnumKey(DWORD iIndex, LPTSTR pszName, LPDWORD pnNameLength, FILETIME *pftLastWriteTime=NULL) noexcept
Definition: atlbase.h:1421
bool IsEmpty() const noexcept
Definition: atlsimpstr.h:394
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
void __cdecl Format(UINT nFormatID,...)
Definition: cstringt.h:818
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
BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
Definition: atlwin.h:1288
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1116
BOOL UpdateWindow()
Definition: atlwin.h:1345
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1333
WNDPROC GetWNDPROC()
Definition: atlwin.h:258
BOOL Init(WNDPROC proc, void *pThis)
Definition: atlwin.h:250
VOID UpdateView()
VOID SaveView(MscFile *mscFile, IXMLDOMElement *pParentElement)
static LPCWSTR GetWndClassName()
Definition: CConsoleWnd.h:72
LRESULT OnFileRecent(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:325
CMainWnd()
Definition: CMainWnd.cpp:26
void SetPreventViewCustomization(BOOL PreventCustomization)
Definition: CMainWnd.cpp:649
CWndProcThunk m_FrameThunk
Definition: CMainWnd.h:27
BOOL GetPreventViewCustomization()
Definition: CMainWnd.cpp:643
LRESULT OnFileExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:344
LRESULT OnWindowsCascade(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:391
void UpdateViews()
Definition: CMainWnd.cpp:577
LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:129
void SetConsoleTitle(CAtlString consoleTitle)
Definition: CMainWnd.cpp:468
CAtlString m_ConsoleTitle
Definition: CMainWnd.h:30
HIMAGELIST m_hToolBarImageList
Definition: CMainWnd.h:40
BOOL GetLogicalReadOnly()
Definition: CMainWnd.cpp:631
static LRESULT CALLBACK XDefFrameProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CMainWnd.h:121
LPWSTR ProgramModeToString()
Definition: CMainWnd.cpp:790
CAtlString * GetConsoleTitle()
Definition: CMainWnd.cpp:463
int m_ConsoleNumber
Definition: CMainWnd.h:29
int RegisterView(CConsoleWnd *pView)
Definition: CMainWnd.cpp:562
VOID SetToolBarVisible(BOOL bVisible)
Definition: CMainWnd.cpp:481
VOID AddToRecentFiles(const CAtlString &FileName)
Definition: CMainWnd.cpp:726
int GetSnapinCacheCount()
Definition: CMainWnd.cpp:526
CAtlList< CRecentFileEntry * > m_RecentFilesList
Definition: CMainWnd.h:51
VOID LoadRecentFiles()
Definition: CMainWnd.cpp:693
LRESULT OnFileAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:299
LRESULT OnFileOptions(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:314
LRESULT OnWindowsNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:363
LRESULT OnCreate(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:72
void UpdateLayout()
Definition: CMainWnd.cpp:593
BOOL IsToolBarVisible()
Definition: CMainWnd.cpp:475
CSnapin * GetRootSnapin()
Definition: CMainWnd.cpp:556
~CMainWnd()
Definition: CMainWnd.cpp:62
DWORD CreateNewFilename(PWSTR pBuffer, DWORD dwSize, DWORD Number)
Definition: CMainWnd.cpp:778
int m_NextViewId
Definition: CMainWnd.h:47
CWindow m_MDIClient
Definition: CMainWnd.h:54
LRESULT LoadMscFile(const CAtlString &FileName)
Definition: CMainWnd.cpp:910
void UpdateMenu()
Definition: CMainWnd.h:129
HMENU m_hMenuConsoleSmall
Definition: CMainWnd.h:31
CSnapin * m_RootNode
Definition: CMainWnd.h:49
LRESULT OnFileSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:256
DOCUMENT_MODE GetDocumentMode()
Definition: CMainWnd.cpp:619
CSnapinCacheEntry * GetSnapinCacheEntry(int nIndex)
Definition: CMainWnd.cpp:532
HIMAGELIST SnapinImageList()
Definition: CMainWnd.cpp:550
void UnregisterView(CConsoleWnd *pView)
Definition: CMainWnd.cpp:569
void UpdateTitle()
Definition: CMainWnd.h:138
HIMAGELIST m_hSnapinImageList
Definition: CMainWnd.h:44
LRESULT LoadSnapinCache()
Definition: CMainWnd.cpp:502
CConsoleWnd * GetActiveChildInfo()
Definition: CMainWnd.h:147
LRESULT OnHelpAboutMMC(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:412
DOCUMENT_MODE m_DocumentMode
Definition: CMainWnd.h:33
void SetLogicalReadOnly(BOOL LogicalReadOnly)
Definition: CMainWnd.cpp:637
BOOL m_LogicalReadOnly
Definition: CMainWnd.h:34
VOID UpdateRecentFilesMenu()
Definition: CMainWnd.cpp:655
LRESULT OnWindowsArrange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:405
CToolbar< DWORD_PTR > m_ToolBar
Definition: CMainWnd.h:37
BOOL m_PreventViewCustomization
Definition: CMainWnd.h:35
CSimpleArray< CSnapinCacheEntry * > m_SnapinCache
Definition: CMainWnd.h:43
LRESULT OnViewCustomize(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:351
CAtlList< CConsoleWnd * > m_ViewList
Definition: CMainWnd.h:46
HMENU m_hMenuConsoleLarge
Definition: CMainWnd.h:32
BOOL m_bStandardMenusVisible
Definition: CMainWnd.h:41
LRESULT OnCloseChild(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:121
LRESULT OnWindowsTile(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:398
VOID SetStandardMenusVisible(BOOL bVisible)
Definition: CMainWnd.cpp:494
LRESULT OnClose(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:137
LRESULT OnFileSave(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:243
LRESULT OnFileNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:144
BOOL m_bToolBarVisible
Definition: CMainWnd.h:39
BOOL AreStandardMenusVisible()
Definition: CMainWnd.cpp:488
LRESULT OnToolbarScopePane(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:429
LRESULT OnFileOpen(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:210
LRESULT OnToolbarActionsPane(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:440
LRESULT OnSize(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:114
LRESULT OnMDIForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:451
LRESULT SaveMscFile(const CAtlString &FileName)
Definition: CMainWnd.cpp:812
CAtlString m_Filename
Definition: CMainWnd.h:55
void SetDocumentMode(DOCUMENT_MODE DocumentMode)
Definition: CMainWnd.cpp:625
CSnapinCacheEntry * GetSnapinCacheEntryByGuid(PWSTR pszGuid)
Definition: CMainWnd.cpp:538
int m_iToolBarHeight
Definition: CMainWnd.h:38
const CAtlString & DisplayName() const
const CAtlString & FileName() const
static CSnapinCacheEntry * Create(CRegKey &SnapinsKey, PWSTR guidString, HIMAGELIST hImageList)
const CAtlString & DisplayName() const
Definition: CSnapin.cpp:40
VOID SaveNode(MscFile *mscFile, IXMLDOMElement *pParentNode)
Definition: CSnapin.cpp:110
HWND Create(HWND hWndParent, DWORD dwStyles=0, DWORD dwExStyles=0)
Definition: rosctrls.h:256
HIMAGELIST SetImageList(HIMAGELIST himl)
Definition: rosctrls.h:424
HRESULT CreateAndInitDOM()
Definition: mscfile.cpp:46
HRESULT CreateAndAddTextNode(PCWSTR wszText, IXMLDOMNode *pParent)
Definition: mscfile.cpp:162
HRESULT CreateElement(PCWSTR wszName, IXMLDOMElement **ppElement)
Definition: mscfile.cpp:65
HRESULT LoadDOM()
Definition: mscfile.cpp:314
HRESULT SaveWindowPlacement(CWindow *pWindow, IXMLDOMElement *pParentNode)
Definition: mscfile.cpp:264
HRESULT SaveDOM()
Definition: mscfile.cpp:337
HRESULT CreateAndAddAttributeNode(PCWSTR wszName, PCWSTR wszValue, IXMLDOMElement *pParent)
Definition: mscfile.cpp:135
HRESULT AppendChildToParent(IXMLDOMNode *pChild, IXMLDOMNode *pParent=NULL)
Definition: mscfile.cpp:81
HRESULT CreateAndAddPINode(PCWSTR wszTarget, PCWSTR wszData)
Definition: mscfile.cpp:97
HRESULT CreateAndAddElementNode(PCWSTR wszName, IXMLDOMNode *pParent, IXMLDOMElement **ppElement=NULL)
Definition: mscfile.cpp:199
RECT rect
Definition: combotst.c:67
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define OFN_OVERWRITEPROMPT
Definition: commdlg.h:116
#define OFN_EXPLORER
Definition: commdlg.h:104
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
#define OFN_PATHMUSTEXIST
Definition: commdlg.h:117
OPENFILENAMEA OPENFILENAME
Definition: commdlg.h:657
HRESULT hr
Definition: delayimp.cpp:582
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(void *reserved, DWORD model)
Definition: combase.c:2803
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:941
INT WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hBitmap, COLORREF clrMask)
Definition: imagelist.c:573
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:814
BOOL WINAPI GetOpenFileNameW(OPENFILENAMEW *ofn)
Definition: filedlg.c:4760
BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn)
Definition: filedlg.c:4825
HANDLE HWND
Definition: compat.h:19
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
#define true
Definition: stdbool.h:24
char * va_list
Definition: vadefs.h:50
#define RGB(r, g, b)
Definition: precomp.h:67
return ret
Definition: mutex.c:147
#define L(x)
Definition: resources.c:13
#define ULONG_PTR
Definition: config.h:101
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
pKey DeleteObject()
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint namelen
Definition: glext.h:7232
GLuint index
Definition: glext.h:6031
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
_In_ GUID _In_ PVOID ValueData
Definition: hubbusif.h:312
#define S_OK
Definition: intsafe.h:52
uint32_t entry
Definition: isohybrid.c:63
#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
LPCWSTR szPath
Definition: env.c:37
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static HBITMAP
Definition: button.c:44
static HICON
Definition: imagelist.c:80
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
static MONITORINFO mi
Definition: win.c:9400
LPCSTR LPCTSTR
Definition: ms-dtyp.idl:130
#define SAFE_RELEASE(p)
Definition: mscfile.h:15
#define CHK_HR(stmt)
Definition: mscfile.h:9
HICON hIcon
Definition: msconfig.c:44
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
_In_ ULONG Number
Definition: haltypes.h:1872
#define KEY_READ
Definition: nt_native.h:1026
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:279
#define WS_CHILD
Definition: pedump.c:617
short WCHAR
Definition: pedump.c:58
#define WS_VSCROLL
Definition: pedump.c:627
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_HSCROLL
Definition: pedump.c:628
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define BTNS_BUTTON
Definition: commctrl.h:998
#define BTNS_SEP
Definition: commctrl.h:999
#define TB_BUTTONSTRUCTSIZE
Definition: commctrl.h:1134
#define ILC_COLOR32
Definition: commctrl.h:358
#define TBSTATE_ENABLED
Definition: commctrl.h:974
#define TB_SETBITMAPSIZE
Definition: commctrl.h:1136
#define TBSTYLE_FLAT
Definition: commctrl.h:992
#define ILC_MASK
Definition: commctrl.h:351
#define BTNS_CHECK
Definition: commctrl.h:1000
#define TB_ADDBUTTONSW
Definition: commctrl.h:1266
#define TBSTATE_CHECKED
Definition: commctrl.h:972
#define WM_MDITILE
Definition: winuser.h:1846
#define MAKEWPARAM(l, h)
Definition: winuser.h:4117
#define WM_CLOSE
Definition: winuser.h:1649
BOOL WINAPI SetMenu(_In_ HWND, _In_opt_ HMENU)
#define MF_BYCOMMAND
Definition: winuser.h:202
#define MIIM_STRING
Definition: winuser.h:738
#define MIIM_ID
Definition: winuser.h:733
#define WM_MDICREATE
Definition: winuser.h:1840
#define WM_MDICASCADE
Definition: winuser.h:1847
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_COMMAND
Definition: winuser.h:1768
#define MIIM_FTYPE
Definition: winuser.h:740
#define SM_CYSMICON
Definition: winuser.h:1024
#define MFT_SEPARATOR
Definition: winuser.h:755
#define IDOK
Definition: winuser.h:841
#define MDIS_ALLCHILDSTYLES
Definition: winuser.h:253
#define WM_MDIICONARRANGE
Definition: winuser.h:1848
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define SM_CXSMICON
Definition: winuser.h:1023
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define LoadIcon
Definition: winuser.h:5979
#define SWP_SHOWWINDOW
Definition: winuser.h:1259
#define SendMessage
Definition: winuser.h:6009
#define LoadMenu
Definition: winuser.h:5983
#define PostMessage
Definition: winuser.h:5998
#define CW_USEDEFAULT
Definition: winuser.h:225
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
#define SWP_HIDEWINDOW
Definition: winuser.h:1252
#define MFT_STRING
Definition: winuser.h:757
#define SW_SHOW
Definition: winuser.h:786
#define MDITILE_HORIZONTAL
Definition: winuser.h:2224
#define WS_EX_CLIENTEDGE
Definition: winuser.h:384
#define WM_MDIGETACTIVE
Definition: winuser.h:1849
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2532
#define SWP_NOZORDER
Definition: winuser.h:1258
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
#define MIIM_DATA
Definition: winuser.h:737
HMENU WINAPI GetMenu(_In_ HWND)
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
struct tagMENUITEMINFOW MENUITEMINFOW
PVOID pBuffer
#define err(...)
const WCHAR * str
wcscat
wcscpy
BOOL WINAPI ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon)
#define _countof(array)
Definition: sndvol32.h:70
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
Definition: match.c:390
DWORD cbSize
Definition: winuser.h:3892
LPCSTR lpstrDefExt
Definition: commdlg.h:345
HWND hwndOwner
Definition: commdlg.h:330
HINSTANCE hInstance
Definition: commdlg.h:331
LPSTR lpstrFile
Definition: commdlg.h:336
DWORD Flags
Definition: commdlg.h:342
DWORD lStructSize
Definition: commdlg.h:329
LPCSTR lpstrFilter
Definition: commdlg.h:332
DWORD nMaxFile
Definition: commdlg.h:337
#define DWORD_PTR
Definition: treelist.c:76
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t DWORD_PTR
Definition: typedefs.h:65
uint16_t * LPWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
#define MAKELONG(a, b)
Definition: typedefs.h:249
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
Definition: wdfregistry.h:243
_In_ LPCSTR lpFileName
Definition: winbase.h:2800
#define FORMAT_MESSAGE_FROM_STRING
Definition: winbase.h:398
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
Definition: winbase.h:401
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_CURRENT_USER
Definition: winreg.h:11