https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a8e06d92e8f3f7605024c…
commit a8e06d92e8f3f7605024c28fb16ce37251b09276
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Thu Nov 3 01:00:32 2022 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed Nov 16 21:55:22 2022 +0100
[SYSDM] Make ResourceMessageBox() support printf-like messages. (#4844)
+ Make usage of this new functionality.
+ Cleanup precomp.h.
---
dll/cpl/sysdm/environment.c | 18 ++++-----------
dll/cpl/sysdm/general.c | 1 -
dll/cpl/sysdm/hardprof.c | 31 ++++++++++++++-----------
dll/cpl/sysdm/precomp.h | 56 ++++++++++++---------------------------------
dll/cpl/sysdm/smbios.c | 1 -
dll/cpl/sysdm/startrec.c | 8 +++++++
dll/cpl/sysdm/sysdm.c | 30 +++++++++++++++---------
dll/cpl/sysdm/userprofile.c | 15 +++++-------
dll/cpl/sysdm/virtmem.c | 23 +++++++++++++++++++
9 files changed, 93 insertions(+), 90 deletions(-)
diff --git a/dll/cpl/sysdm/environment.c b/dll/cpl/sysdm/environment.c
index cf744ce3319..47461f65a76 100644
--- a/dll/cpl/sysdm/environment.c
+++ b/dll/cpl/sysdm/environment.c
@@ -11,9 +11,6 @@
#include <commctrl.h>
#include <commdlg.h>
#include <string.h>
-#include <strsafe.h>
-
-#define MAX_STR_LENGTH 128
typedef struct _VARIABLE_DATA
{
@@ -986,16 +983,11 @@ EditVariableDlgProc(HWND hwndDlg,
case IDC_BUTTON_EDIT_TEXT:
{
- TCHAR szStr[MAX_STR_LENGTH] = _T("");
- TCHAR szStr2[MAX_STR_LENGTH] = _T("");
-
- LoadString(hApplet, IDS_ENVIRONMENT_WARNING, szStr,
_countof(szStr));
- LoadString(hApplet, IDS_ENVIRONMENT_WARNING_TITLE, szStr2,
_countof(szStr2));
-
- if (MessageBox(hwndDlg,
- szStr,
- szStr2,
- MB_OKCANCEL | MB_ICONWARNING | MB_DEFBUTTON1) ==
IDOK)
+ if (ResourceMessageBox(hApplet,
+ hwndDlg,
+ MB_OKCANCEL | MB_ICONWARNING | MB_DEFBUTTON1,
+ IDS_ENVIRONMENT_WARNING_TITLE,
+ IDS_ENVIRONMENT_WARNING) == IDOK)
{
EndDialog(hwndDlg, -1);
}
diff --git a/dll/cpl/sysdm/general.c b/dll/cpl/sysdm/general.c
index d6d1288786a..9448f6d3415 100644
--- a/dll/cpl/sysdm/general.c
+++ b/dll/cpl/sysdm/general.c
@@ -14,7 +14,6 @@
#include <winnls.h>
#include <powrprof.h>
#include <buildno.h>
-#include <strsafe.h>
#define ANIM_STEP 2
#define ANIM_TIME 50
diff --git a/dll/cpl/sysdm/hardprof.c b/dll/cpl/sysdm/hardprof.c
index 5b402b90385..50a686c25dd 100644
--- a/dll/cpl/sysdm/hardprof.c
+++ b/dll/cpl/sysdm/hardprof.c
@@ -121,13 +121,17 @@ CopyProfileDlgProc(
pProfileNames->szDestinationName,
PROFILE_NAME_LENGTH);
if (IsProfileNameInUse(pProfileNames, FALSE))
+ {
ResourceMessageBox(hApplet,
- NULL,
+ hwndDlg,
MB_OK | MB_ICONERROR,
IDS_HWPROFILE_WARNING,
IDS_HWPROFILE_ALREADY_IN_USE);
+ }
else
+ {
EndDialog(hwndDlg, IDOK);
+ }
return TRUE;
case IDCANCEL:
@@ -238,13 +242,17 @@ RenameProfileDlgProc(
pProfileNames->szDestinationName,
PROFILE_NAME_LENGTH);
if (IsProfileNameInUse(pProfileNames, TRUE))
+ {
ResourceMessageBox(hApplet,
- NULL,
+ hwndDlg,
MB_OK | MB_ICONERROR,
IDS_HWPROFILE_WARNING,
IDS_HWPROFILE_ALREADY_IN_USE);
+ }
else
+ {
EndDialog(hwndDlg, IDOK);
+ }
return TRUE;
case IDCANCEL:
@@ -303,23 +311,20 @@ DeleteHardwareProfile(
HWND hwndDlg,
PPROFILEDATA pProfileData)
{
- WCHAR szMessage[256];
- WCHAR szBuffer[128];
- WCHAR szCaption[80];
PPROFILE pProfiles;
PPROFILE pProfile;
pProfile = &pProfileData->pProfiles[pProfileData->dwSelectedProfileIndex];
- LoadStringW(hApplet, IDS_HWPROFILE_CONFIRM_DELETE_TITLE, szCaption, sizeof(szCaption)
/ sizeof(WCHAR));
- LoadStringW(hApplet, IDS_HWPROFILE_CONFIRM_DELETE, szBuffer, sizeof(szBuffer) /
sizeof(WCHAR));
- swprintf(szMessage, szBuffer, pProfile->szFriendlyName);
-
- if (MessageBox(NULL,
- szMessage,
- szCaption,
- MB_YESNO | MB_ICONQUESTION) != IDYES)
+ if (ResourceMessageBox(hApplet,
+ hwndDlg,
+ MB_YESNO | MB_ICONQUESTION,
+ IDS_HWPROFILE_CONFIRM_DELETE_TITLE,
+ IDS_HWPROFILE_CONFIRM_DELETE,
+ pProfile->szFriendlyName) != IDYES)
+ {
return;
+ }
SendDlgItemMessageW(hwndDlg, IDC_HRDPROFLSTBOX, LB_DELETESTRING,
pProfileData->dwSelectedProfileIndex, 0);
diff --git a/dll/cpl/sysdm/precomp.h b/dll/cpl/sysdm/precomp.h
index ba296735c9d..825bfc433a1 100644
--- a/dll/cpl/sysdm/precomp.h
+++ b/dll/cpl/sysdm/precomp.h
@@ -21,16 +21,18 @@
#include <setupapi.h>
#include <cpl.h>
+#include <strsafe.h>
+
#include "resource.h"
#define NUM_APPLETS (1)
typedef struct _APPLET
{
- int idIcon;
- int idName;
- int idDescription;
- APPLET_PROC AppletProc;
+ int idIcon;
+ int idName;
+ int idDescription;
+ APPLET_PROC AppletProc;
} APPLET, *PAPPLET;
extern HINSTANCE hApplet;
@@ -53,45 +55,15 @@ INT_PTR CALLBACK LicenceDlgProc(HWND hDlg, UINT message, WPARAM
wParam, LPARAM l
/* System information */
BOOL GetSystemName(PWSTR pBuf, SIZE_T cchBuf);
-typedef struct _PAGEFILE
-{
- TCHAR szDrive[3];
- LPTSTR pszVolume;
- INT OldMinSize;
- INT OldMaxSize;
- INT NewMinSize;
- INT NewMaxSize;
- UINT FreeSize;
- BOOL bUsed;
-} PAGEFILE, *PPAGEFILE;
-
-typedef struct _VIRTMEM
-{
- HWND hSelf;
- HWND hListBox;
- LPTSTR szPagingFiles;
- TCHAR szDrive[10];
- INT Count;
- BOOL bModified;
- PAGEFILE Pagefile[26];
-} VIRTMEM, *PVIRTMEM;
-
-typedef struct _BOOTRECORD
-{
- DWORD BootType;
- WCHAR szSectionName[128];
- WCHAR szBootPath[MAX_PATH];
- WCHAR szOptions[512];
-
-}BOOTRECORD, *PBOOTRECORD;
+#define MAX_STR_LENGTH 256
-INT
+INT __cdecl
ResourceMessageBox(
- IN HINSTANCE hInstance,
- IN HWND hwnd,
- IN UINT uType,
- IN UINT uCaption,
- IN UINT uText);
-
+ _In_opt_ HINSTANCE hInstance,
+ _In_opt_ HWND hwnd,
+ _In_ UINT uType,
+ _In_ UINT uCaption,
+ _In_ UINT uText,
+ ...);
#endif /* __CPL_SYSDM_H */
diff --git a/dll/cpl/sysdm/smbios.c b/dll/cpl/sysdm/smbios.c
index 5bbcb8d883d..08d40fb9ef4 100644
--- a/dll/cpl/sysdm/smbios.c
+++ b/dll/cpl/sysdm/smbios.c
@@ -9,7 +9,6 @@
#include "precomp.h"
-#include <strsafe.h>
#include <udmihelp.h>
typedef struct GENERIC_NAME
diff --git a/dll/cpl/sysdm/startrec.c b/dll/cpl/sysdm/startrec.c
index ab29f89b745..a0bc3a8213c 100644
--- a/dll/cpl/sysdm/startrec.c
+++ b/dll/cpl/sysdm/startrec.c
@@ -12,6 +12,14 @@
#include <shlwapi.h>
+typedef struct _BOOTRECORD
+{
+ DWORD BootType;
+ WCHAR szSectionName[128];
+ WCHAR szBootPath[MAX_PATH];
+ WCHAR szOptions[512];
+} BOOTRECORD, *PBOOTRECORD;
+
typedef struct _STARTINFO
{
WCHAR szFreeldrIni[MAX_PATH + 15];
diff --git a/dll/cpl/sysdm/sysdm.c b/dll/cpl/sysdm/sysdm.c
index fbd7651a6f9..881134d7141 100644
--- a/dll/cpl/sysdm/sysdm.c
+++ b/dll/cpl/sysdm/sysdm.c
@@ -23,22 +23,30 @@ APPLET Applets[NUM_APPLETS] =
#define MAX_SYSTEM_PAGES 32
-INT
+INT __cdecl
ResourceMessageBox(
- IN HINSTANCE hInstance,
- IN HWND hwnd,
- IN UINT uType,
- IN UINT uCaption,
- IN UINT uText)
+ _In_opt_ HINSTANCE hInstance,
+ _In_opt_ HWND hwnd,
+ _In_ UINT uType,
+ _In_ UINT uCaption,
+ _In_ UINT uText,
+ ...)
{
- WCHAR szCaption[256];
- WCHAR szText[256];
+ va_list args;
+ WCHAR szCaption[MAX_STR_LENGTH];
+ WCHAR szText[MAX_STR_LENGTH];
+ WCHAR szCookedText[2*MAX_STR_LENGTH];
- LoadStringW(hInstance, uCaption, szCaption, 256);
- LoadStringW(hInstance, uText, szText, 256);
+ LoadStringW(hInstance, uCaption, szCaption, _countof(szCaption));
+ LoadStringW(hInstance, uText, szText, _countof(szText));
+
+ va_start(args, uText);
+ StringCchVPrintfW(szCookedText, _countof(szCookedText),
+ szText, args);
+ va_end(args);
return MessageBoxW(hwnd,
- szText,
+ szCookedText,
szCaption,
uType);
}
diff --git a/dll/cpl/sysdm/userprofile.c b/dll/cpl/sysdm/userprofile.c
index cd926abd1d7..25e0277b2de 100644
--- a/dll/cpl/sysdm/userprofile.c
+++ b/dll/cpl/sysdm/userprofile.c
@@ -150,7 +150,6 @@ BOOL
DeleteUserProfile(
_In_ HWND hwndDlg)
{
- WCHAR szTitle[64], szRawText[128], szCookedText[256];
HWND hwndListView;
LVITEM Item;
INT iSelected;
@@ -179,14 +178,12 @@ DeleteUserProfile(
if (pProfileData->dwRefCount != 0)
return FALSE;
- LoadStringW(hApplet, IDS_USERPROFILE_CONFIRM_DELETE_TITLE, szTitle,
ARRAYSIZE(szTitle));
- LoadStringW(hApplet, IDS_USERPROFILE_CONFIRM_DELETE, szRawText,
ARRAYSIZE(szRawText));
- swprintf(szCookedText, szRawText, pProfileData->pszFullName);
-
- if (MessageBoxW(hwndDlg,
- szCookedText,
- szTitle,
- MB_ICONQUESTION | MB_YESNO) == IDYES)
+ if (ResourceMessageBox(hApplet,
+ hwndDlg,
+ MB_ICONQUESTION | MB_YESNO,
+ IDS_USERPROFILE_CONFIRM_DELETE_TITLE,
+ IDS_USERPROFILE_CONFIRM_DELETE,
+ pProfileData->pszFullName) == IDYES)
{
/* FIXME: Delete the profile here! */
return TRUE;
diff --git a/dll/cpl/sysdm/virtmem.c b/dll/cpl/sysdm/virtmem.c
index 798223c8453..6c72ca6c4e4 100644
--- a/dll/cpl/sysdm/virtmem.c
+++ b/dll/cpl/sysdm/virtmem.c
@@ -12,6 +12,29 @@
#define NDEBUG
#include <debug.h>
+typedef struct _PAGEFILE
+{
+ TCHAR szDrive[3];
+ LPTSTR pszVolume;
+ INT OldMinSize;
+ INT OldMaxSize;
+ INT NewMinSize;
+ INT NewMaxSize;
+ UINT FreeSize;
+ BOOL bUsed;
+} PAGEFILE, *PPAGEFILE;
+
+typedef struct _VIRTMEM
+{
+ HWND hSelf;
+ HWND hListBox;
+ LPTSTR szPagingFiles;
+ INT Count;
+ BOOL bModified;
+ PAGEFILE Pagefile[26];
+} VIRTMEM, *PVIRTMEM;
+
+
static BOOL OnSelChange(HWND hwndDlg, PVIRTMEM pVirtMem);
static LPCTSTR lpKey = _T("SYSTEM\\CurrentControlSet\\Control\\Session
Manager\\Memory Management");