so much... mdi stuff.. AND IT'S STILL NOT OVER

This commit is contained in:
freedom
2023-08-02 00:59:58 -06:00
parent 8ab85cecf0
commit 1206264a68
7 changed files with 143 additions and 69 deletions

View File

@@ -15,4 +15,52 @@
// #define WIN32_LEAN_AND_MEAN
#include <Windows.h>
/* Functions */
/* Functions */
/* * * *\
GroupWndProc -
Group window procedure.
RETURNS -
Zero if nothing, otherwise returns the good stuff.
\* * * */
LRESULT CALLBACK GroupWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
break;
}
default:
GrpProcDefault:
return DefMDIChildProc(hWnd, message, wParam, lParam);
}
return 0;
}
/* * * *\
TempCreateGroup -
th
RETURNS -
handle to window
\* * * */
HWND TempCreateGroup(HWND hMDIClient)
{
MDICREATESTRUCT mcs;
HWND hChild;
mcs.szTitle = L"[Untitled]";
mcs.szClass = szGrpClass;
mcs.hOwner = GetModuleHandle(NULL);
mcs.x = mcs.cx = CW_USEDEFAULT;
mcs.y = mcs.cy = CW_USEDEFAULT;
mcs.style = MDIS_ALLCHILDSTYLES;
hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
if (!hChild)
{
MessageBox(hMDIClient, L"MDI Child creation failed.", L"Oh Oh...",
MB_ICONEXCLAMATION | MB_OK);
}
return hChild;
}

View File

@@ -13,3 +13,6 @@
/* Includes */
#include <wtypes.h>
/* Function Prototypes */
LRESULT CALLBACK GroupWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
HWND TempCreateGroup(HWND hMDIClient);

Binary file not shown.

View File

@@ -9,6 +9,7 @@
/* Headers */
#include "progmgr.h"
#include "group.h"
#include "resource.h"
#include "registry.h"
// #define WIN32_LEAN_AND_MEAN
@@ -18,15 +19,18 @@
/* Variables */
// Global
BOOL bIsDefaultShell = FALSE;
// Window Related
HICON hProgMgrIcon = NULL;
HICON hGroupIcon = NULL;
HINSTANCE hAppInstance;
HWND hWndProgMgr = NULL;
HWND hWndMDIClient = NULL;
// Global Strings
WCHAR szAppTitle[32];
WCHAR szProgMgr[] = L"progmgr";
WCHAR szWebsite[64];
// Window Related
HICON hProgMgrIcon = NULL;
HINSTANCE hAppInstance;
HWND hWndProgMgr = NULL;
HWND hWndMDIClient = NULL;
WCHAR szClass[16];
WCHAR szGrpClass[16];
/* Functions */
@@ -41,8 +45,8 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
HMENU hMenu;
HMENU hSystemMenu;
WNDCLASS wc = { 0 };
WNDCLASSEX wce = { 0 };
WCHAR szBuffer[MAX_PATH];
WCHAR szClass[16];
RECT rcRoot;
POINT ptOffset;
@@ -50,24 +54,41 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
// Create Strings
LoadString(hAppInstance, IDS_PMCLASS, szClass, ARRAYSIZE(szClass));
LoadString(hAppInstance, IDS_GRPCLASS, szGrpClass, ARRAYSIZE(szGrpClass));
LoadString(hAppInstance, IDS_APPTITLE, szAppTitle, ARRAYSIZE(szAppTitle));
LoadString(hAppInstance, IDS_WEBSITE, szWebsite, ARRAYSIZE(szWebsite));
// Get Desktop background color
//CreateSolidBrush(GetBackgroundColor
// Register the Frame Window
// Register the Frame Window Class
wc.lpfnWndProc = WndProc;
wc.hInstance = hAppInstance;
wc.hIcon = hProgMgrIcon = LoadImage(hAppInstance, MAKEINTRESOURCE(IDI_PROGMGR), IMAGE_ICON,
0, 0, LR_DEFAULTSIZE | LR_SHARED);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
// wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
wc.hbrBackground = NULL;
wc.lpszMenuName = MAKEINTRESOURCE(IDM_MAIN);
wc.lpszClassName = szClass;
if (!RegisterClass(&wc))
return FALSE;
// Register the Group Window Class
wce.cbSize = sizeof(WNDCLASSEX);
wce.lpfnWndProc = GroupWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wce.hInstance = hAppInstance;
wce.hIcon = hGroupIcon = LoadImage(hAppInstance, MAKEINTRESOURCE(IDI_PROGMGR), IMAGE_ICON,
0, 0, LR_DEFAULTSIZE | LR_SHARED);
wce.hCursor = LoadCursor(NULL, IDC_ARROW);
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wce.lpszMenuName = NULL;
wce.lpszClassName = szGrpClass;
if (!RegisterClassEx(&wce))
return FALSE;
// Load the Accelerator table
hAccel = LoadAccelerators(hAppInstance, MAKEINTRESOURCE(IDA_ACCELS));
if (!hAccel)

View File

@@ -32,12 +32,15 @@
// PROGMGR.C
extern BOOL bIsDefaultShell;
extern HICON hProgMgrIcon;
extern HICON hGroupIcon;
extern HINSTANCE hAppInstance;
extern HWND hWndProgMgr;
extern HWND hWndMDIClient;
extern WCHAR szAppTitle[32];
extern WCHAR szProgMgr[];
extern WCHAR szWebsite[64];
extern WCHAR szClass[16];
extern WCHAR szGrpClass[16];
/* Function Prototypes */
// DESKTOP.C

Binary file not shown.

View File

@@ -9,6 +9,7 @@
/* Headers */
#include "progmgr.h"
#include "group.h"
#include "resource.h"
#include "registry.h"
// #define WIN32_LEAN_AND_MEAN
@@ -30,78 +31,76 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
RECT rc;
CLIENTCREATESTRUCT ccs;
// Frame Window
hWndProgMgr = hWnd;
// MDI Client Window
ccs.hWindowMenu = GetSubMenu(GetMenu(hWnd), IDM_WINDOW);
ccs.idFirstChild = IDM_WINDOW_CHILDSTART;
GetClientRect(hWndProgMgr, &rc);
hWndMDIClient = CreateWindow(L"MDIClient", NULL,
WS_CLIPCHILDREN | WS_CHILD | WS_VSCROLL | WS_HSCROLL,
// rc.left - 1, rc.top - 1, rc.right + 2, rc.bottom + 2,
0, 0, 0, 0,
hWnd, (HMENU)1, hAppInstance, (LPWSTR)&ccs);
if (!hWndMDIClient) {
return -1;
}
break;
}
case WM_SYSCOMMAND:
{
if (wParam == IDM_TASKMGR)
case WM_CREATE:
{
ShellExecute(hWndProgMgr, L"open", L"TASKMGR.EXE", NULL, NULL, SW_NORMAL);
CLIENTCREATESTRUCT ccs;
RECT rc;
// Frame Window
hWndProgMgr = hWnd;
// MDI Client Window
ccs.hWindowMenu = GetSubMenu(GetMenu(hWnd), IDM_WINDOW);
ccs.idFirstChild = IDM_WINDOW_CHILDSTART;
GetClientRect(hWndProgMgr, &rc);
if (!(hWndMDIClient = CreateWindowEx(WS_EX_COMPOSITED, L"MDIClient",
NULL, WS_CLIPCHILDREN | WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE,
// rc.left - 1, rc.top - 1, rc.right + 2, rc.bottom + 2,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hWnd, (HMENU)1, hAppInstance, (LPWSTR)&ccs)))
{
return FALSE;
}
//TempCreateGroup(hWndMDIClient);
break;
}
if (wParam == IDM_SHUTDOWN)
if (wParam == IDM_FILE_EXIT)
if (wParam == IDM_FILE_RUN)
case WM_SYSCOMMAND:
{
CmdProc(hWnd, wParam, lParam);
break;
if (wParam == IDM_TASKMGR)
{
ShellExecute(hWndProgMgr, L"open", L"TASKMGR.EXE", NULL, NULL, SW_NORMAL);
break;
}
if (wParam == IDM_SHUTDOWN)
if (wParam == IDM_FILE_EXIT)
if (wParam == IDM_FILE_RUN)
{
CmdProc(hWnd, wParam, lParam);
break;
}
goto WndProcDefault;
}
goto WndProcDefault;
//return DefFrameProc(hWnd, hwndMDIClient, uiMsg, wParam, lParam);
}
case WM_COMMAND:
if (CmdProc(hWnd, wParam, lParam))
break;
case WM_COMMAND:
if (CmdProc(hWnd, wParam, lParam))
{
goto WndProcDefault;
case WM_CLOSE:
if (bSaveSettings)
SaveConfig(TRUE, TRUE, TRUE);
if (bIsDefaultShell && (GetShellWindow() != NULL))
SetShellWindow(0);
PostQuitMessage(0);
break;
}
goto WndProcDefault;
case WM_CLOSE:
if (bSaveSettings)
SaveConfig(TRUE, TRUE, TRUE);
case WM_ENDSESSION:
PostQuitMessage(0);
break;
if (bIsDefaultShell && (GetShellWindow() != NULL))
SetShellWindow(0);
PostQuitMessage(0);
break;
case WM_ENDSESSION:
PostQuitMessage(0);
break;
default:
default:
WndProcDefault:
return DefFrameProc(hWnd, hWndMDIClient, message, wParam, lParam);
}
return DefFrameProc(hWnd, hWndMDIClient, message, wParam, lParam);
}
return 0;
}