mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-03 04:13:31 +00:00
Move global variables into a struct that is attached to the property sheet page dialog.
svn path=/trunk/; revision=24979
This commit is contained in:
@@ -41,34 +41,37 @@ typedef struct _DISPLAY_DEVICE_ENTRY
|
||||
SETTINGS_ENTRY InitialSettings;
|
||||
} DISPLAY_DEVICE_ENTRY, *PDISPLAY_DEVICE_ENTRY;
|
||||
|
||||
static PDISPLAY_DEVICE_ENTRY DisplayDeviceList = NULL;
|
||||
static PDISPLAY_DEVICE_ENTRY CurrentDisplayDevice = NULL;
|
||||
|
||||
HBITMAP hBitmap = NULL;
|
||||
int cxSource, cySource;
|
||||
typedef struct _GLOBAL_DATA
|
||||
{
|
||||
PDISPLAY_DEVICE_ENTRY DisplayDeviceList;
|
||||
PDISPLAY_DEVICE_ENTRY CurrentDisplayDevice;
|
||||
HBITMAP hBitmap;
|
||||
int cxSource;
|
||||
int cySource;
|
||||
} GLOBAL_DATA, *PGLOBAL_DATA;
|
||||
|
||||
static VOID
|
||||
UpdateDisplay(IN HWND hwndDlg)
|
||||
UpdateDisplay(IN HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||
{
|
||||
TCHAR Buffer[64];
|
||||
TCHAR Pixel[64];
|
||||
DWORD index;
|
||||
|
||||
LoadString(hApplet, IDS_PIXEL, Pixel, sizeof(Pixel) / sizeof(TCHAR));
|
||||
_stprintf(Buffer, Pixel, CurrentDisplayDevice->CurrentSettings->dmPelsWidth, CurrentDisplayDevice->CurrentSettings->dmPelsHeight, Pixel);
|
||||
_stprintf(Buffer, Pixel, pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth, pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight, Pixel);
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_RESOLUTION_TEXT, WM_SETTEXT, 0, (LPARAM)Buffer);
|
||||
|
||||
for (index = 0; index < CurrentDisplayDevice->ResolutionsCount; index++)
|
||||
for (index = 0; index < pGlobalData->CurrentDisplayDevice->ResolutionsCount; index++)
|
||||
{
|
||||
|
||||
if (CurrentDisplayDevice->Resolutions[index].dmPelsWidth == CurrentDisplayDevice->CurrentSettings->dmPelsWidth &&
|
||||
CurrentDisplayDevice->Resolutions[index].dmPelsHeight == CurrentDisplayDevice->CurrentSettings->dmPelsHeight)
|
||||
if (pGlobalData->CurrentDisplayDevice->Resolutions[index].dmPelsWidth == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth &&
|
||||
pGlobalData->CurrentDisplayDevice->Resolutions[index].dmPelsHeight == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight)
|
||||
{
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_RESOLUTION, TBM_SETPOS, TRUE, index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (LoadString(hApplet, (2900 + CurrentDisplayDevice->CurrentSettings->dmBitsPerPel), Buffer, sizeof(Buffer) / sizeof(TCHAR)))
|
||||
if (LoadString(hApplet, (2900 + pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel), Buffer, sizeof(Buffer) / sizeof(TCHAR)))
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_BPP, CB_SELECTSTRING, (WPARAM)-1, (LPARAM)Buffer);
|
||||
}
|
||||
|
||||
@@ -149,7 +152,7 @@ GetPossibleSettings(IN LPTSTR DeviceName, OUT DWORD* pSettingsCount, OUT PSETTIN
|
||||
}
|
||||
|
||||
static BOOL
|
||||
AddDisplayDevice(IN LPTSTR Description, IN LPTSTR DeviceName)
|
||||
AddDisplayDevice(IN PGLOBAL_DATA pGlobalData, IN LPTSTR Description, IN LPTSTR DeviceName)
|
||||
{
|
||||
PDISPLAY_DEVICE_ENTRY newEntry = NULL;
|
||||
LPTSTR description = NULL;
|
||||
@@ -201,8 +204,8 @@ AddDisplayDevice(IN LPTSTR Description, IN LPTSTR DeviceName)
|
||||
memcpy(name, DeviceName, nameSize);
|
||||
newEntry->DeviceDescription = description;
|
||||
newEntry->DeviceName = name;
|
||||
newEntry->Flink = DisplayDeviceList;
|
||||
DisplayDeviceList = newEntry;
|
||||
newEntry->Flink = pGlobalData->DisplayDeviceList;
|
||||
pGlobalData->DisplayDeviceList = newEntry;
|
||||
return TRUE;
|
||||
|
||||
ByeBye:
|
||||
@@ -230,12 +233,12 @@ ByeBye:
|
||||
}
|
||||
|
||||
static VOID
|
||||
OnDisplayDeviceChanged(IN HWND hwndDlg, IN PDISPLAY_DEVICE_ENTRY pDeviceEntry)
|
||||
OnDisplayDeviceChanged(IN HWND hwndDlg, IN PGLOBAL_DATA pGlobalData, IN PDISPLAY_DEVICE_ENTRY pDeviceEntry)
|
||||
{
|
||||
PSETTINGS_ENTRY Current;
|
||||
DWORD index;
|
||||
|
||||
CurrentDisplayDevice = pDeviceEntry; /* Update global variable */
|
||||
pGlobalData->CurrentDisplayDevice = pDeviceEntry; /* Update global variable */
|
||||
|
||||
/* Fill color depths combo box */
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_BPP, CB_RESETCONTENT, 0, 0);
|
||||
@@ -257,7 +260,7 @@ OnDisplayDeviceChanged(IN HWND hwndDlg, IN PDISPLAY_DEVICE_ENTRY pDeviceEntry)
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_RESOLUTION, TBM_CLEARTICS, TRUE, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_RESOLUTION, TBM_SETRANGE, TRUE, MAKELONG(0, pDeviceEntry->ResolutionsCount - 1));
|
||||
|
||||
UpdateDisplay(hwndDlg);
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
}
|
||||
|
||||
static VOID
|
||||
@@ -267,6 +270,13 @@ OnInitDialog(IN HWND hwndDlg)
|
||||
DWORD iDevNum = 0;
|
||||
DISPLAY_DEVICE displayDevice;
|
||||
BITMAP bitmap;
|
||||
PGLOBAL_DATA pGlobalData;
|
||||
|
||||
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
||||
if (pGlobalData == NULL)
|
||||
return;
|
||||
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
||||
|
||||
/* Get video cards list */
|
||||
displayDevice.cb = (DWORD)sizeof(DISPLAY_DEVICE);
|
||||
@@ -274,7 +284,7 @@ OnInitDialog(IN HWND hwndDlg)
|
||||
{
|
||||
if ((displayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) != 0)
|
||||
{
|
||||
if (AddDisplayDevice(displayDevice.DeviceString, displayDevice.DeviceName))
|
||||
if (AddDisplayDevice(pGlobalData, displayDevice.DeviceString, displayDevice.DeviceName))
|
||||
Result++;
|
||||
}
|
||||
iDevNum++;
|
||||
@@ -290,8 +300,8 @@ OnInitDialog(IN HWND hwndDlg)
|
||||
else if (Result == 1)
|
||||
{
|
||||
/* Single video adapter */
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_DEVICE, WM_SETTEXT, 0, (LPARAM)DisplayDeviceList->DeviceDescription);
|
||||
OnDisplayDeviceChanged(hwndDlg, DisplayDeviceList);
|
||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_DEVICE, WM_SETTEXT, 0, (LPARAM)pGlobalData->DisplayDeviceList->DeviceDescription);
|
||||
OnDisplayDeviceChanged(hwndDlg, pGlobalData, pGlobalData->DisplayDeviceList);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -299,18 +309,18 @@ OnInitDialog(IN HWND hwndDlg)
|
||||
/* FIXME: choose selected adapter being the primary one */
|
||||
}
|
||||
|
||||
hBitmap = LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT);
|
||||
if (hBitmap != NULL)
|
||||
pGlobalData->hBitmap = LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT);
|
||||
if (pGlobalData->hBitmap != NULL)
|
||||
{
|
||||
GetObject(hBitmap, sizeof(BITMAP), &bitmap);
|
||||
GetObject(pGlobalData->hBitmap, sizeof(BITMAP), &bitmap);
|
||||
|
||||
cxSource = bitmap.bmWidth;
|
||||
cySource = bitmap.bmHeight;
|
||||
pGlobalData->cxSource = bitmap.bmWidth;
|
||||
pGlobalData->cySource = bitmap.bmHeight;
|
||||
}
|
||||
}
|
||||
|
||||
static VOID
|
||||
OnBPPChanged(IN HWND hwndDlg)
|
||||
OnBPPChanged(IN HWND hwndDlg, IN PGLOBAL_DATA pGlobalData)
|
||||
{
|
||||
/* if new BPP is not compatible with resolution:
|
||||
* 1) try to find the nearest smaller matching resolution
|
||||
@@ -326,7 +336,7 @@ OnBPPChanged(IN HWND hwndDlg)
|
||||
dmNewBitsPerPel = (DWORD) SendDlgItemMessage(hwndDlg, IDC_SETTINGS_BPP, CB_GETITEMDATA, index, 0);
|
||||
|
||||
/* find if new parameters are valid */
|
||||
Current = CurrentDisplayDevice->CurrentSettings;
|
||||
Current = pGlobalData->CurrentDisplayDevice->CurrentSettings;
|
||||
if (dmNewBitsPerPel == Current->dmBitsPerPel)
|
||||
{
|
||||
/* no change */
|
||||
@@ -341,11 +351,11 @@ OnBPPChanged(IN HWND hwndDlg)
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (Current->dmBitsPerPel == dmNewBitsPerPel
|
||||
&& Current->dmPelsHeight == CurrentDisplayDevice->CurrentSettings->dmPelsHeight
|
||||
&& Current->dmPelsWidth == CurrentDisplayDevice->CurrentSettings->dmPelsWidth)
|
||||
&& Current->dmPelsHeight == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight
|
||||
&& Current->dmPelsWidth == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Blink;
|
||||
@@ -357,11 +367,11 @@ OnBPPChanged(IN HWND hwndDlg)
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (Current->dmBitsPerPel == dmNewBitsPerPel
|
||||
&& Current->dmPelsHeight == CurrentDisplayDevice->CurrentSettings->dmPelsHeight
|
||||
&& Current->dmPelsWidth == CurrentDisplayDevice->CurrentSettings->dmPelsWidth)
|
||||
&& Current->dmPelsHeight == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight
|
||||
&& Current->dmPelsWidth == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Flink;
|
||||
@@ -369,26 +379,26 @@ OnBPPChanged(IN HWND hwndDlg)
|
||||
}
|
||||
|
||||
/* search smaller resolution compatible with current color depth */
|
||||
Current = CurrentDisplayDevice->CurrentSettings->Blink;
|
||||
Current = pGlobalData->CurrentDisplayDevice->CurrentSettings->Blink;
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (Current->dmBitsPerPel == dmNewBitsPerPel)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Blink;
|
||||
}
|
||||
|
||||
/* search bigger resolution compatible with current color depth */
|
||||
Current = CurrentDisplayDevice->CurrentSettings->Flink;
|
||||
Current = pGlobalData->CurrentDisplayDevice->CurrentSettings->Flink;
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (Current->dmBitsPerPel == dmNewBitsPerPel)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Flink;
|
||||
@@ -398,18 +408,18 @@ OnBPPChanged(IN HWND hwndDlg)
|
||||
}
|
||||
|
||||
static VOID
|
||||
OnResolutionChanged(IN HWND hwndDlg, IN DWORD NewPosition)
|
||||
OnResolutionChanged(IN HWND hwndDlg, IN PGLOBAL_DATA pGlobalData, IN DWORD NewPosition)
|
||||
{
|
||||
/* if new resolution is not compatible with color depth:
|
||||
* 1) try to find the nearest bigger matching color depth
|
||||
* 2) otherwise, get the nearest smaller color depth
|
||||
*/
|
||||
PSETTINGS_ENTRY Current;
|
||||
DWORD dmNewPelsHeight = CurrentDisplayDevice->Resolutions[NewPosition].dmPelsHeight;
|
||||
DWORD dmNewPelsWidth = CurrentDisplayDevice->Resolutions[NewPosition].dmPelsWidth;
|
||||
DWORD dmNewPelsHeight = pGlobalData->CurrentDisplayDevice->Resolutions[NewPosition].dmPelsHeight;
|
||||
DWORD dmNewPelsWidth = pGlobalData->CurrentDisplayDevice->Resolutions[NewPosition].dmPelsWidth;
|
||||
|
||||
/* find if new parameters are valid */
|
||||
Current = CurrentDisplayDevice->CurrentSettings;
|
||||
Current = pGlobalData->CurrentDisplayDevice->CurrentSettings;
|
||||
if (dmNewPelsHeight == Current->dmPelsHeight && dmNewPelsWidth == Current->dmPelsWidth)
|
||||
{
|
||||
/* no change */
|
||||
@@ -425,10 +435,10 @@ OnResolutionChanged(IN HWND hwndDlg, IN DWORD NewPosition)
|
||||
{
|
||||
if (Current->dmPelsHeight == dmNewPelsHeight
|
||||
&& Current->dmPelsWidth == dmNewPelsWidth
|
||||
&& Current->dmBitsPerPel == CurrentDisplayDevice->CurrentSettings->dmBitsPerPel)
|
||||
&& Current->dmBitsPerPel == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Blink;
|
||||
@@ -441,10 +451,10 @@ OnResolutionChanged(IN HWND hwndDlg, IN DWORD NewPosition)
|
||||
{
|
||||
if (Current->dmPelsHeight == dmNewPelsHeight
|
||||
&& Current->dmPelsWidth == dmNewPelsWidth
|
||||
&& Current->dmBitsPerPel == CurrentDisplayDevice->CurrentSettings->dmBitsPerPel)
|
||||
&& Current->dmBitsPerPel == pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Flink;
|
||||
@@ -452,26 +462,26 @@ OnResolutionChanged(IN HWND hwndDlg, IN DWORD NewPosition)
|
||||
}
|
||||
|
||||
/* search bigger color depth compatible with current resolution */
|
||||
Current = CurrentDisplayDevice->CurrentSettings->Flink;
|
||||
Current = pGlobalData->CurrentDisplayDevice->CurrentSettings->Flink;
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (dmNewPelsHeight == Current->dmPelsHeight && dmNewPelsWidth == Current->dmPelsWidth)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Flink;
|
||||
}
|
||||
|
||||
/* search smaller color depth compatible with current resolution */
|
||||
Current = CurrentDisplayDevice->CurrentSettings->Blink;
|
||||
Current = pGlobalData->CurrentDisplayDevice->CurrentSettings->Blink;
|
||||
while (Current != NULL)
|
||||
{
|
||||
if (dmNewPelsHeight == Current->dmPelsHeight && dmNewPelsWidth == Current->dmPelsWidth)
|
||||
{
|
||||
CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg);
|
||||
pGlobalData->CurrentDisplayDevice->CurrentSettings = Current;
|
||||
UpdateDisplay(hwndDlg, pGlobalData);
|
||||
return;
|
||||
}
|
||||
Current = Current->Blink;
|
||||
@@ -490,6 +500,10 @@ OnAdvancedButton()
|
||||
INT_PTR CALLBACK
|
||||
SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
|
||||
{
|
||||
PGLOBAL_DATA pGlobalData;
|
||||
|
||||
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
@@ -503,7 +517,7 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
if (controlId == IDC_SETTINGS_ADVANCED && command == BN_CLICKED)
|
||||
OnAdvancedButton();
|
||||
else if (controlId == IDC_SETTINGS_BPP && command == CBN_SELCHANGE)
|
||||
OnBPPChanged(hwndDlg);
|
||||
OnBPPChanged(hwndDlg, pGlobalData);
|
||||
break;
|
||||
}
|
||||
case WM_HSCROLL:
|
||||
@@ -519,7 +533,7 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
case TB_ENDTRACK:
|
||||
{
|
||||
DWORD newPosition = (DWORD) SendDlgItemMessage(hwndDlg, IDC_SETTINGS_RESOLUTION, TBM_GETPOS, 0, 0);
|
||||
OnResolutionChanged(hwndDlg, newPosition);
|
||||
OnResolutionChanged(hwndDlg, pGlobalData, newPosition);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -529,9 +543,9 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
LPNMHDR lpnm = (LPNMHDR)lParam;
|
||||
if (lpnm->code == (UINT)PSN_APPLY)
|
||||
{
|
||||
if (CurrentDisplayDevice->CurrentSettings->dmPelsWidth != CurrentDisplayDevice->InitialSettings.dmPelsWidth
|
||||
|| CurrentDisplayDevice->CurrentSettings->dmPelsHeight != CurrentDisplayDevice->InitialSettings.dmPelsHeight
|
||||
|| CurrentDisplayDevice->CurrentSettings->dmBitsPerPel != CurrentDisplayDevice->InitialSettings.dmBitsPerPel)
|
||||
if (pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth != pGlobalData->CurrentDisplayDevice->InitialSettings.dmPelsWidth
|
||||
|| pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight != pGlobalData->CurrentDisplayDevice->InitialSettings.dmPelsHeight
|
||||
|| pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel != pGlobalData->CurrentDisplayDevice->InitialSettings.dmBitsPerPel)
|
||||
{
|
||||
/* FIXME: Need to test changes */
|
||||
/* Apply new settings */
|
||||
@@ -539,12 +553,12 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
DEVMODE devmode;
|
||||
RtlZeroMemory(&devmode, sizeof(DEVMODE));
|
||||
devmode.dmSize = (WORD)sizeof(DEVMODE);
|
||||
devmode.dmPelsWidth = CurrentDisplayDevice->CurrentSettings->dmPelsWidth;
|
||||
devmode.dmPelsHeight = CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
|
||||
devmode.dmBitsPerPel = CurrentDisplayDevice->CurrentSettings->dmBitsPerPel;
|
||||
devmode.dmPelsWidth = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth;
|
||||
devmode.dmPelsHeight = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
|
||||
devmode.dmBitsPerPel = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel;
|
||||
devmode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
|
||||
rc = ChangeDisplaySettingsEx(
|
||||
CurrentDisplayDevice->DeviceName,
|
||||
pGlobalData->CurrentDisplayDevice->DeviceName,
|
||||
&devmode,
|
||||
NULL,
|
||||
CDS_UPDATEREGISTRY,
|
||||
@@ -552,9 +566,9 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
switch (rc)
|
||||
{
|
||||
case DISP_CHANGE_SUCCESSFUL:
|
||||
CurrentDisplayDevice->InitialSettings.dmPelsWidth = CurrentDisplayDevice->CurrentSettings->dmPelsWidth;
|
||||
CurrentDisplayDevice->InitialSettings.dmPelsHeight = CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
|
||||
CurrentDisplayDevice->InitialSettings.dmBitsPerPel = CurrentDisplayDevice->CurrentSettings->dmBitsPerPel;
|
||||
pGlobalData->CurrentDisplayDevice->InitialSettings.dmPelsWidth = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth;
|
||||
pGlobalData->CurrentDisplayDevice->InitialSettings.dmPelsHeight = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
|
||||
pGlobalData->CurrentDisplayDevice->InitialSettings.dmBitsPerPel = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel;
|
||||
break;
|
||||
case DISP_CHANGE_FAILED:
|
||||
MessageBox(NULL, TEXT("Failed to apply new settings..."), TEXT("Display settings"), MB_OK | MB_ICONSTOP);
|
||||
@@ -579,9 +593,13 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
hdc = BeginPaint(hwndDlg, &ps);
|
||||
|
||||
hdcMem = CreateCompatibleDC(hdc);
|
||||
SelectObject(hdcMem, hBitmap);
|
||||
SelectObject(hdcMem, pGlobalData->hBitmap);
|
||||
|
||||
TransparentBlt(hdc, 98, 0, cxSource, cySource, hdcMem, 0, 0, cxSource, cySource, 0xFF80FF);
|
||||
TransparentBlt(hdc, 98, 0,
|
||||
pGlobalData->cxSource,
|
||||
pGlobalData->cySource, hdcMem, 0, 0,
|
||||
pGlobalData->cxSource,
|
||||
pGlobalData->cySource, 0xFF80FF);
|
||||
|
||||
DeleteDC(hdcMem);
|
||||
EndPaint(hwndDlg, &ps);
|
||||
@@ -591,7 +609,7 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
PDISPLAY_DEVICE_ENTRY Current = DisplayDeviceList;
|
||||
PDISPLAY_DEVICE_ENTRY Current = pGlobalData->DisplayDeviceList;
|
||||
while (Current != NULL)
|
||||
{
|
||||
PDISPLAY_DEVICE_ENTRY Next = Current->Flink;
|
||||
@@ -606,7 +624,9 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||
Current = Next;
|
||||
}
|
||||
|
||||
DeleteObject(hBitmap);
|
||||
DeleteObject(pGlobalData->hBitmap);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, pGlobalData);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
Reference in New Issue
Block a user