mirror of
https://github.com/WCBROW01/WinPowerDMS.git
synced 2025-12-12 02:18:05 -05:00
Add display name to display mode changing and testing functions
This commit is contained in:
@ -29,7 +29,7 @@ DISPLAY_MODE GetModeFromCB(HWND hComboBox) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// returns the result of the ChangeDisplaySettings call that this results in.
|
// returns the result of the ChangeDisplaySettings call that this results in.
|
||||||
LONG ChangeDisplayMode(const DISPLAY_MODE* mode, DWORD dwFlags) {
|
LONG ChangeDisplayMode(LPCWSTR displayName, const DISPLAY_MODE* mode, DWORD dwFlags) {
|
||||||
DEVMODE devMode = {
|
DEVMODE devMode = {
|
||||||
.dmSize = sizeof(devMode),
|
.dmSize = sizeof(devMode),
|
||||||
.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY,
|
.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY,
|
||||||
@ -37,6 +37,7 @@ LONG ChangeDisplayMode(const DISPLAY_MODE* mode, DWORD dwFlags) {
|
|||||||
.dmPelsHeight = mode->height,
|
.dmPelsHeight = mode->height,
|
||||||
.dmDisplayFrequency = mode->refresh
|
.dmDisplayFrequency = mode->refresh
|
||||||
};
|
};
|
||||||
|
if (displayName) wcscpy_s(devMode.dmDeviceName, sizeof(devMode.dmDeviceName) / sizeof(devMode.dmDeviceName[0]), displayName);
|
||||||
|
|
||||||
return ChangeDisplaySettings(&devMode, dwFlags);
|
return ChangeDisplaySettings(&devMode, dwFlags);
|
||||||
}
|
}
|
||||||
@ -55,14 +56,15 @@ static DWORD WINAPI MessageBoxAsync(LPVOID lpParam) {
|
|||||||
|
|
||||||
struct TestDisplayModeParams {
|
struct TestDisplayModeParams {
|
||||||
HWND hDlg;
|
HWND hDlg;
|
||||||
|
WCHAR displayName[32];
|
||||||
DISPLAY_MODE mode;
|
DISPLAY_MODE mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
static DWORD WINAPI TestDisplayModeThread(LPVOID lpParam) {
|
static DWORD WINAPI TestDisplayModeThread(LPVOID lpParam) {
|
||||||
struct TestDisplayModeParams* params = lpParam;
|
struct TestDisplayModeParams* params = lpParam;
|
||||||
DEVMODE originalMode = { .dmSize = sizeof(originalMode) };
|
DEVMODE originalMode = { .dmSize = sizeof(originalMode) };
|
||||||
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &originalMode);
|
EnumDisplaySettings(params->displayName, ENUM_CURRENT_SETTINGS, &originalMode);
|
||||||
ChangeDisplayMode(¶ms->mode, CDS_FULLSCREEN);
|
ChangeDisplayMode(params->displayName, ¶ms->mode, CDS_FULLSCREEN);
|
||||||
|
|
||||||
// Create the message box about the resolution change
|
// Create the message box about the resolution change
|
||||||
WCHAR msgText[96];
|
WCHAR msgText[96];
|
||||||
@ -88,10 +90,11 @@ static DWORD WINAPI TestDisplayModeThread(LPVOID lpParam) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestDisplayMode(HWND hDlg, DISPLAY_MODE* mode) {
|
void TestDisplayMode(HWND hDlg, LPCWSTR displayName, DISPLAY_MODE* mode) {
|
||||||
struct TestDisplayModeParams* tdmParams = HeapAlloc(GetProcessHeap(), 0, sizeof(*tdmParams));
|
struct TestDisplayModeParams* tdmParams = HeapAlloc(GetProcessHeap(), 0, sizeof(*tdmParams));
|
||||||
if (tdmParams) {
|
if (tdmParams) {
|
||||||
tdmParams->hDlg = hDlg;
|
tdmParams->hDlg = hDlg;
|
||||||
|
if (tdmParams->displayName) wcscpy_s(tdmParams->displayName, sizeof(tdmParams->displayName) / sizeof(tdmParams->displayName[0]), displayName);
|
||||||
tdmParams->mode = *mode;
|
tdmParams->mode = *mode;
|
||||||
HANDLE tdmThread = CreateThread(NULL, 0, TestDisplayModeThread, tdmParams, 0, NULL);
|
HANDLE tdmThread = CreateThread(NULL, 0, TestDisplayModeThread, tdmParams, 0, NULL);
|
||||||
if (tdmThread) CloseHandle(tdmThread);
|
if (tdmThread) CloseHandle(tdmThread);
|
||||||
|
|||||||
@ -14,6 +14,6 @@ BOOL DisplayModeEquals(const DISPLAY_MODE* a, const DISPLAY_MODE* b);
|
|||||||
DISPLAY_MODE GetModeFromCB(HWND hComboBox);
|
DISPLAY_MODE GetModeFromCB(HWND hComboBox);
|
||||||
|
|
||||||
// returns the result of the ChangeDisplaySettings call that this results in.
|
// returns the result of the ChangeDisplaySettings call that this results in.
|
||||||
LONG ChangeDisplayMode(const DISPLAY_MODE* mode, DWORD dwFlags);
|
LONG ChangeDisplayMode(LPCWSTR displayName, const DISPLAY_MODE* mode, DWORD dwFlags);
|
||||||
|
|
||||||
void TestDisplayMode(HWND hDlg, DISPLAY_MODE* mode);
|
void TestDisplayMode(HWND hDlg, LPCWSTR displayName, DISPLAY_MODE* mode);
|
||||||
@ -141,7 +141,7 @@ static INT_PTR CALLBACK PrefsDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPA
|
|||||||
SendMessage(hCheckStartup, BM_SETCHECK, userPrefs.runAtStartup ? BST_CHECKED : BST_UNCHECKED, 0);
|
SendMessage(hCheckStartup, BM_SETCHECK, userPrefs.runAtStartup ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WM_COMMAND: {
|
case WM_COMMAND: {
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
case IDC_BUTTON_APPLY:
|
case IDC_BUTTON_APPLY:
|
||||||
@ -158,12 +158,12 @@ static INT_PTR CALLBACK PrefsDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPA
|
|||||||
}
|
}
|
||||||
case IDC_BUTTON_TEST_BATT: {
|
case IDC_BUTTON_TEST_BATT: {
|
||||||
DISPLAY_MODE mode = GetModeFromCB(hComboBatt);
|
DISPLAY_MODE mode = GetModeFromCB(hComboBatt);
|
||||||
TestDisplayMode(hDlg, &mode);
|
TestDisplayMode(hDlg, NULL, &mode);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDC_BUTTON_TEST_AC: {
|
case IDC_BUTTON_TEST_AC: {
|
||||||
DISPLAY_MODE mode = GetModeFromCB(hComboAC);
|
DISPLAY_MODE mode = GetModeFromCB(hComboAC);
|
||||||
TestDisplayMode(hDlg, &mode);
|
TestDisplayMode(hDlg, NULL, &mode);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -222,7 +222,7 @@ static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
|
|||||||
if (GetSystemPowerStatus(&powerStatus) &&
|
if (GetSystemPowerStatus(&powerStatus) &&
|
||||||
(DisplayModeEquals(¤tMode, &userPrefs.modeBatt) || DisplayModeEquals(¤tMode, &userPrefs.modeAC)))
|
(DisplayModeEquals(¤tMode, &userPrefs.modeBatt) || DisplayModeEquals(¤tMode, &userPrefs.modeAC)))
|
||||||
{
|
{
|
||||||
ChangeDisplayMode(powerStatus.ACLineStatus ? &userPrefs.modeAC : &userPrefs.modeBatt, CDS_UPDATEREGISTRY);
|
ChangeDisplayMode(NULL, powerStatus.ACLineStatus ? &userPrefs.modeAC : &userPrefs.modeBatt, CDS_UPDATEREGISTRY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user