ReactOS 0.4.17-dev-784-g3812a95
CMainWnd.h
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#pragma once
11
12class CMainWnd :
13 public CWindowImpl<CMainWnd>
14{
15private:
16 CWndProcThunk m_FrameThunk;
17
23
26
27public:
28 CWindow m_MDIClient;
29
30public:
31
38
47
48 static CWndClassInfo& GetWndClassInfo()
49 {
50 static CWndClassInfo wc =
51 {
52 {
53 /* cbSize= */sizeof(WNDCLASSEX),
54 /* style= */0,
55 /* lpfnWndProc= */StartWindowProc,
56 /* cbClsExtra= */0,
57 /* cbWndExtra= */0,
58 /* hInstance= */NULL,
59 /* hIcon= */LoadIcon(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDI_MAINAPP)),
60 /* hCursor= */NULL,
61 /* hbrBackground= */(HBRUSH)(COLOR_BTNFACE + 1),
62 /* lpszMenuName= */NULL,
63 /* lpszClassName= */TEXT("MMCMainFrame"),
64 /* hIconSm= */LoadIcon(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCE(IDI_MAINAPP))
65 },
66 NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
67 };
68 return wc;
69 }
70
72 {
73 return GetWndClassInfo().m_wc.lpszClassName;
74 }
75
77 {
78 CMainWnd* pThis = reinterpret_cast<CMainWnd*>(hWnd);
79 return ::DefFrameProc(pThis->m_hWnd, pThis->m_MDIClient.m_hWnd, uMsg, wParam, lParam);
80 }
81
82private:
83
85 {
86 if (m_nConsoleCount == 0)
88 else
90 }
91
93 {
94 HWND hWndMDIChild;
95
96 hWndMDIChild = (HWND)m_MDIClient.SendMessage(WM_MDIGETACTIVE, 0, 0);
97 if (hWndMDIChild == NULL)
98 return NULL;
99
100 return (CConsoleWnd*)::GetWindowLongPtr(hWndMDIChild, 0);
101 }
102
103 void CreateNewConsoleTitle(CAtlString& str)
104 {
106 str.LoadString(IDS_CONSOLETITLE);
107
108 LPTSTR lpTarget = NULL;
110 str.GetString(), 0, 0, (LPTSTR)&lpTarget, 0, (va_list*)args);
111
112 if (Ret)
113 {
114 str = lpTarget;
115 LocalFree(lpTarget);
116 }
117 }
118
119
120public:
121 CMainWnd();
122 ~CMainWnd();
123
124 LRESULT OnCreate(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
125 LRESULT OnNewMDIChild(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
126
127 LRESULT OnFileSave(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
128 LRESULT OnFileSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
129 LRESULT OnFileAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
130 LRESULT OnFileExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
131 LRESULT OnHelpAbout(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
132 LRESULT OnMDIForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
133 LRESULT OnSize(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
134 LRESULT OnCloseChild(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
135 LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
136 LRESULT OnClose(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
137
138private:
140
141public:
146};
147
#define IDM_HELP_ABOUT
Definition: resource.h:387
HWND hWnd
Definition: settings.c:17
#define WM_USER_CLOSE_CHILD
Definition: precomp.h:14
#define IDI_MAINAPP
Definition: resource.h:6
#define IDM_FILE_NEW
Definition: resource.h:11
#define IDM_FILE_SAVE
Definition: resource.h:13
#define IDM_MDI_FIRSTCHILD
Definition: resource.h:19
#define IDS_CONSOLETITLE
Definition: resource.h:4
#define IDM_FILE_SAVEAS
Definition: resource.h:14
#define IDM_FILE_EXIT
Definition: resource.h:15
#define IDM_FILE_ADD
Definition: resource.h:29
CMainWnd()
Definition: CMainWnd.cpp:12
bool m_AppAuthorMode
Definition: CMainWnd.h:22
CWndProcThunk m_FrameThunk
Definition: CMainWnd.h:16
LRESULT OnFileExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:159
LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:213
int m_nConsoleCount
Definition: CMainWnd.h:19
static LRESULT CALLBACK XDefFrameProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CMainWnd.h:76
LRESULT OnHelpAbout(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:166
int GetSnapinCacheCount()
Definition: CMainWnd.cpp:252
LRESULT OnFileAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:148
LRESULT OnCreate(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:40
~CMainWnd()
Definition: CMainWnd.cpp:31
int m_NewConsoleCount
Definition: CMainWnd.h:18
void CreateNewConsoleTitle(CAtlString &str)
Definition: CMainWnd.h:103
CWindow m_MDIClient
Definition: CMainWnd.h:28
void UpdateMenu()
Definition: CMainWnd.h:84
HMENU m_hMenuConsoleSmall
Definition: CMainWnd.h:20
LRESULT OnFileSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:111
static LPCTSTR GetWndClassName()
Definition: CMainWnd.h:71
CSnapinCacheEntry * GetSnapinCacheEntry(int nIndex)
Definition: CMainWnd.cpp:258
HIMAGELIST SnapinImageList()
Definition: CMainWnd.cpp:276
HIMAGELIST m_hSnapinImageList
Definition: CMainWnd.h:25
LRESULT LoadSnapinCache()
Definition: CMainWnd.cpp:228
CConsoleWnd * GetActiveChildInfo()
Definition: CMainWnd.h:92
static CWndClassInfo & GetWndClassInfo()
Definition: CMainWnd.h:48
CSimpleArray< CSnapinCacheEntry * > m_SnapinCache
Definition: CMainWnd.h:24
HMENU m_hMenuConsoleLarge
Definition: CMainWnd.h:21
LRESULT OnCloseChild(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:205
LRESULT OnClose(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:221
LRESULT OnFileSave(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:99
LRESULT OnSize(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CMainWnd.cpp:196
LRESULT OnNewMDIChild(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:67
LRESULT OnMDIForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
Definition: CMainWnd.cpp:183
CSnapinCacheEntry * GetSnapinCacheEntryByGuid(PWSTR pszGuid)
Definition: CMainWnd.cpp:264
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
HANDLE HWND
Definition: compat.h:19
#define CALLBACK
Definition: compat.h:35
char * va_list
Definition: vadefs.h:50
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned int UINT
Definition: sysinfo.c:13
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
#define TEXT(s)
Definition: k32.h:28
#define MESSAGE_HANDLER(msg, func)
Definition: atlwin.h:1926
#define BEGIN_MSG_MAP(theClass)
Definition: atlwin.h:1898
#define COMMAND_ID_HANDLER(id, func)
Definition: atlwin.h:1953
#define END_MSG_MAP()
Definition: atlwin.h:1917
#define COMMAND_RANGE_HANDLER(idFirst, idLast, func)
Definition: atlwin.h:1971
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
LPSTR LPTSTR
Definition: ms-dtyp.idl:131
LPCSTR LPCTSTR
Definition: ms-dtyp.idl:130
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
const WCHAR * str
Definition: match.c:390
#define GetWindowLongPtr
Definition: treelist.c:73
#define DWORD_PTR
Definition: treelist.c:76
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define _T(x)
Definition: vfdio.h:22
#define FormatMessage
Definition: winbase.h:3516
#define FORMAT_MESSAGE_FROM_STRING
Definition: winbase.h:398
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:396
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
Definition: winbase.h:401
#define WM_CLOSE
Definition: winuser.h:1649
BOOL WINAPI SetMenu(_In_ HWND, _In_opt_ HMENU)
#define WM_CREATE
Definition: winuser.h:1636
#define WM_SIZE
Definition: winuser.h:1639
#define IDC_ARROW
Definition: winuser.h:695
#define LoadIcon
Definition: winuser.h:5979
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5885
#define WM_DESTROY
Definition: winuser.h:1637
#define WM_MDIGETACTIVE
Definition: winuser.h:1849
#define COLOR_BTNFACE
Definition: winuser.h:939