From 78410609a9bf19b68a9e2c55d089a2981713ee80 Mon Sep 17 00:00:00 2001 From: freedom Date: Thu, 20 Jul 2023 01:27:45 -0600 Subject: [PATCH] tons of stuff here, most importantly now displays the username in the titlebar like old progman --- misc/pman64.png | Bin 0 -> 11062 bytes progmgr/desktop.c | 9 ++++++++ progmgr/lang/res_en-US.rc | Bin 5518 -> 5750 bytes progmgr/progmgr.c | 46 +++++++++++++++++++++++++++++++------- progmgr/progmgr.h | 8 ++++--- progmgr/progmgr.vcxproj | 1 + progmgr/resource.h | Bin 2740 -> 3034 bytes progmgr/resource.rc | 4 +++- progmgr/wndproc.c | 45 ++++++++++++++++++++++--------------- 9 files changed, 83 insertions(+), 30 deletions(-) create mode 100644 misc/pman64.png create mode 100644 progmgr/desktop.c diff --git a/misc/pman64.png b/misc/pman64.png new file mode 100644 index 0000000000000000000000000000000000000000..54ef564e68aa692f1052dc137a8d5388477cba99 GIT binary patch literal 11062 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 delta 12 TcmeyS)2F>bj%70&Yk?pDABY3( diff --git a/progmgr/progmgr.c b/progmgr/progmgr.c index c800a53..9781942 100644 --- a/progmgr/progmgr.c +++ b/progmgr/progmgr.c @@ -12,7 +12,11 @@ #include "resource.h" #include "registry.h" // #define WIN32_LEAN_AND_MEAN +#define SECURITY_WIN32 #include +#include +#include +#include /* Variables */ // Global @@ -24,15 +28,23 @@ WCHAR szWebsite[64]; // Window Related HICON hProgMgrIcon = NULL; HINSTANCE hAppInstance; -HWND hwndProgMgr = NULL; -HWND hwndMDIClient = NULL; +HWND hWndProgMgr = NULL; +HWND hWndMDIClient = NULL; -/* Program Entry Point */ +/* Functions */ +/* * * *\ + wWinMain - + Program Manager's entry point. +\* * * */ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { MSG msg = { 0 }; + HANDLE hAccel; WNDCLASS wc = { 0 }; WCHAR szClass[16]; + WCHAR szUsername[UNLEN + 1] = L""; + DWORD dwUsernameLen = UNLEN; + WCHAR szWindowTitle[UNLEN + ARRAYSIZE(szAppTitle) + 4] = L""; hAppInstance = hInstance; @@ -48,29 +60,47 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine // Register the Frame Window wc.lpfnWndProc = WndProc; wc.hInstance = hAppInstance; - wc.hIcon = hProgMgrIcon = LoadImage(hAppInstance, MAKEINTRESOURCE(PROGMGRICON), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); + 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.lpszMenuName = MAKEINTRESOURCE(IDM_MAIN); wc.lpszClassName = szClass; if (!RegisterClass(&wc)) - return 1; + return FALSE; + + // Load the Accelerator table + hAccel = LoadAccelerators(hAppInstance, MAKEINTRESOURCE(IDA_ACCELS)); + if (!hAccel) + return FALSE; InitializeRegistryKeys(); //if (IsProgMgrDefaultShell) { //} + GetUserNameEx(NameSamCompatible, szUsername, &dwUsernameLen); + // OutputDebugString(szUsername); + + StringCchCopy(szWindowTitle, ARRAYSIZE(szAppTitle), szAppTitle); + StringCchCat(szWindowTitle, ARRAYSIZE(szWindowTitle), L" - "); + StringCchCat(szWindowTitle, ARRAYSIZE(szWindowTitle), szUsername); + if (!CreateWindow(wc.lpszClassName, - szAppTitle, + szWindowTitle, WS_OVERLAPPEDWINDOW | WS_VISIBLE, - 160, 80, 640, 480, 0, 0, hInstance, NULL)) + 160, 80, 640, 480, 0, 0, hAppInstance, NULL)) return 2; //hSystemMenu = GetSystemMenu(hwndProgman, FALSE); while (GetMessage(&msg, NULL, 0, 0) > 0) - DispatchMessage(&msg); + { + if (!TranslateMDISysAccel(hWndMDIClient, &msg) && + !TranslateAccelerator(hWndProgMgr, hAccel, &msg)) + { + DispatchMessage(&msg); + } + } return 0; } diff --git a/progmgr/progmgr.h b/progmgr/progmgr.h index 855680e..9f27f22 100644 --- a/progmgr/progmgr.h +++ b/progmgr/progmgr.h @@ -12,6 +12,7 @@ #pragma comment(linker,"\"/manifestdependency:type='win32' \ name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#pragma comment(lib, "Secur32.lib") /* Includes */ #include @@ -33,9 +34,10 @@ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") /* Global Variables */ // PROGMGR.C extern BOOL bIsDefaultShell; +extern HICON hProgMgrIcon; extern HINSTANCE hAppInstance; -extern HWND hwndProgMgr; -extern HWND hwndMDIClient; +extern HWND hWndProgMgr; +extern HWND hWndMDIClient; extern WCHAR szAppTitle[32]; extern WCHAR szProgMgr[]; extern WCHAR szWebsite[64]; @@ -46,4 +48,4 @@ BOOL RunFile(HWND hWndOwner, HICON hIcon, LPWSTR lpszDir, LPWSTR lpszTitle, LPWS BOOL ShutdownDlg(HWND hWndOwner); // WNDPROC.C LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); -LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam); +LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam); \ No newline at end of file diff --git a/progmgr/progmgr.vcxproj b/progmgr/progmgr.vcxproj index 3a9056e..ce57623 100644 --- a/progmgr/progmgr.vcxproj +++ b/progmgr/progmgr.vcxproj @@ -156,6 +156,7 @@ + diff --git a/progmgr/resource.h b/progmgr/resource.h index 657cf34c0d853eeaa71dfaaedf83284ea22d7b1e..55ff830e59c0ef87e4853c9ce4979dae444fe572 100644 GIT binary patch delta 348 zcmY+9u}i~H5XQeG5A$BpfVC1FOj0N=8e*y?bTd>j0Y!-!1r_NgwrGbgUB&$t2L~rz zh59!LPU7nBD(XL=m$)d$y@UI``|i7k*;o7iN~bkLOs6=&E;8(36Wg2_#TD27+vOhr zP#jIFi@AR+Mb1+NTcNQ&nh6lVLkB&aVt_7&7|^$F+cAzgx;WuH!x6I{*K^jJr^L9R z1yOTjb`tY!2OHSJUa49rD}-2P{U@WYg%nP>^daQ9Dy|I`G4RnwyKGx>lJ?aSS+YU5 z%HwL$p{yDa8~-#H=|(oRh+c$Sk}v5nS!Lq;2~u9U&P#K)kn#JwHbM(isPIw6SxI?7 bpYF_na#f>u)1yn}P*ZyJs2r_DZ|eC6n~6v8 delta 186 zcmca5zD0Dy3?}ISh9Cxi26qNuAP!>iWN-%Z{1`Za&~UOabM52~CXvY-*jXmOV{V(g zhDC /* Functions */ - /* * * *\ WndProc - Program Manager's window procedure. @@ -24,7 +23,6 @@ \* * * */ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - switch (message) { case WM_CREATE: @@ -32,21 +30,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) RECT rc; CLIENTCREATESTRUCT ccs; - hwndProgMgr = hWnd; + // Frame Window + hWndProgMgr = hWnd; - // ccs.hWindowMenu = GetSubMenu(GetMenu(hWnd), IDM_WINDOW); - // ccs.idFirstChild = IDM_CHILDSTART; + // MDI Client Window + ccs.hWindowMenu = GetSubMenu(GetMenu(hWnd), IDM_WINDOW); + ccs.idFirstChild = IDM_WINDOW_CHILDSTART; - GetClientRect(hwndProgMgr, &rc); + GetClientRect(hWndProgMgr, &rc); - hwndMDIClient = CreateWindow(TEXT("MDIClient"), - NULL, - WS_CLIPCHILDREN | WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_BORDER, - rc.left - 1, rc.top - 1, - rc.right + 2, rc.bottom + 2, - hWnd, (HMENU)1, hAppInstance, - (LPTSTR)&ccs); - if (!hwndMDIClient) { + 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; @@ -83,7 +82,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) default: WndProcDefault: - return DefWindowProc(hWnd, message, wParam, lParam); + return DefFrameProc(hWnd, hWndMDIClient, message, wParam, lParam); } return 0; @@ -114,11 +113,10 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam) case IDM_HELP_ABOUT: { WCHAR szTitle[40]; - OutputDebugString(L"ABOUT BALLS!"); - HICON hIcon = LoadIcon(hAppInstance, MAKEINTRESOURCE(PROGMGRICON)); + // OutputDebugString(L"ABOUT BALLS!"); LoadString(hAppInstance, IDS_APPTITLE, szTitle, CharSizeOf(szTitle)); - ShellAbout(hwndProgMgr, szTitle, NULL, hIcon); + ShellAbout(hWndProgMgr, szTitle, NULL, hProgMgrIcon); break; } @@ -127,4 +125,15 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam) } return TRUE; +} + +/* * * *\ + ChildWndProc - + Program Manager's window procedure. + RETURNS - + Zero if nothing, otherwise returns the good stuff. +\* * * */ +LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + return FALSE; } \ No newline at end of file