[DESK] Show monitor on "Settings" page when only one monitor detected

Hide multiple monitor selection controls in this case.
Otherwise, show them when multiple monitors are detected
and hide the monitor preview bitmap.

This fixes the focus on the resolution slider when tested in Windows XP.

Also use the monitor bitmap globally, because it's used on multiple pages.

CORE-17939 CORE-10606
This commit is contained in:
Stanislav Motylkov 2022-10-01 15:42:49 +03:00
parent 311fcc612e
commit 3aa5e8b897
No known key found for this signature in database
GPG key ID: AFE513258CBA9E92
34 changed files with 152 additions and 66 deletions

View file

@ -37,18 +37,6 @@ typedef enum
PLACEMENT_VALUE_FILL = 10
} PLACEMENT_VALUE;
/* The values in these macros are dependent on the
* layout of the monitor image and they must be adjusted
* if that image will be changed.
*/
#define MONITOR_LEFT 20
#define MONITOR_TOP 8
#define MONITOR_RIGHT 140
#define MONITOR_BOTTOM 92
#define MONITOR_WIDTH (MONITOR_RIGHT-MONITOR_LEFT)
#define MONITOR_HEIGHT (MONITOR_BOTTOM-MONITOR_TOP)
typedef struct
{
BOOL bWallpaper; /* Is this background a wallpaper */
@ -74,10 +62,6 @@ typedef struct _BACKGROUND_DATA
int listViewItemCount;
HBITMAP hBitmap;
int cxSource;
int cySource;
ULONG_PTR gdipToken;
} BACKGROUND_DATA, *PBACKGROUND_DATA;
@ -468,7 +452,6 @@ InitBackgroundDialog(HWND hwndDlg, PBACKGROUND_DATA pData)
HKEY regKey;
TCHAR szBuffer[3];
DWORD bufferSize = sizeof(szBuffer);
BITMAP bitmap;
AddListViewItems(hwndDlg, pData);
@ -490,15 +473,6 @@ InitBackgroundDialog(HWND hwndDlg, PBACKGROUND_DATA pData)
SendDlgItemMessage(hwndDlg, IDC_PLACEMENT_COMBO, CB_SETCURSEL, PLACEMENT_CENTER, 0);
pData->placementSelection = PLACEMENT_CENTER;
pData->hBitmap = (HBITMAP) LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
if (pData->hBitmap != NULL)
{
GetObject(pData->hBitmap, sizeof(BITMAP), &bitmap);
pData->cxSource = bitmap.bmWidth;
pData->cySource = bitmap.bmHeight;
}
/* Load the default settings from the registry */
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_QUERY_VALUE, &regKey) != ERROR_SUCCESS)
{
@ -822,7 +796,7 @@ DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PBACKGROUND_DATA pData)
};
hDC = CreateCompatibleDC(draw->hDC);
hOldObj = SelectObject(hDC, pData->hBitmap);
hOldObj = SelectObject(hDC, g_GlobalData.hMonitorBitmap);
if (pData->backgroundItems[pData->backgroundSelection].bWallpaper == FALSE)
{
@ -997,12 +971,12 @@ DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PBACKGROUND_DATA pData)
GdiTransparentBlt(draw->hDC,
draw->rcItem.left, draw->rcItem.top,
draw->rcItem.right-draw->rcItem.left+1,
draw->rcItem.bottom-draw->rcItem.top+1,
draw->rcItem.right - draw->rcItem.left + 1,
draw->rcItem.bottom - draw->rcItem.top + 1,
hDC,
0, 0,
pData->cxSource, pData->cySource,
0xFF00FF);
g_GlobalData.bmMonWidth, g_GlobalData.bmMonHeight,
MONITOR_ALPHA);
SelectObject(hDC, hOldObj);
DeleteDC(hDC);
@ -1265,7 +1239,6 @@ BackgroundPageProc(HWND hwndDlg,
if (pData->pWallpaperBitmap != NULL)
DibFreeImage(pData->pWallpaperBitmap);
DeleteObject(pData->hBitmap);
GdiplusShutdown(pData->gdipToken);
HeapFree(GetProcessHeap(), 0, pData);
break;

View file

@ -150,6 +150,7 @@ DisplayApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
LPCWSTR pwszFile = NULL;
LPCWSTR pwszAction = NULL;
INT nPage = 0;
BITMAP bitmap;
UNREFERENCED_PARAMETER(wParam);
@ -197,6 +198,16 @@ DisplayApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
g_GlobalData.pwszAction = pwszAction;
g_GlobalData.desktop_color = GetSysColor(COLOR_DESKTOP);
/* Initialize the monitor preview bitmap, used on multiple pages */
g_GlobalData.hMonitorBitmap = LoadBitmapW(hApplet, MAKEINTRESOURCEW(IDC_MONITOR));
if (g_GlobalData.hMonitorBitmap != NULL)
{
GetObjectW(g_GlobalData.hMonitorBitmap, sizeof(bitmap), &bitmap);
g_GlobalData.bmMonWidth = bitmap.bmWidth;
g_GlobalData.bmMonHeight = bitmap.bmHeight;
}
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE | PSH_USEICONID;
@ -238,6 +249,8 @@ DisplayApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
PropertySheet(&psh);
cleanup:
DeleteObject(g_GlobalData.hMonitorBitmap);
if (hpsxa != NULL)
SHDestroyPropSheetExtArray(hpsxa);

View file

@ -63,6 +63,21 @@ INT AllocAndLoadString(LPTSTR *lpTarget,
ULONG __cdecl DbgPrint(PCCH Format,...);
/*
* The values in these macros are dependent on the
* layout of the monitor image and they must be adjusted
* if that image is changed.
*/
#define MONITOR_LEFT 20
#define MONITOR_TOP 8
#define MONITOR_RIGHT 140
#define MONITOR_BOTTOM 92
#define MONITOR_WIDTH (MONITOR_RIGHT-MONITOR_LEFT)
#define MONITOR_HEIGHT (MONITOR_BOTTOM-MONITOR_TOP)
#define MONITOR_ALPHA 0xFF00FF
#define MAX_DESK_PAGES 32
#define NUM_SPECTRUM_BITMAPS 3
@ -106,6 +121,9 @@ typedef struct _GLOBAL_DATA
COLORREF desktop_color;
LPCWSTR pwszFile;
LPCWSTR pwszAction;
HBITMAP hMonitorBitmap;
LONG bmMonWidth;
LONG bmMonHeight;
} GLOBAL_DATA, *PGLOBAL_DATA;
extern GLOBAL_DATA g_GlobalData;

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Настройки"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Завлачете значетата на мониторите така, че да отговарят на действителното разположение на мониторите ви.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Завлачете значетата на мониторите така, че да отговарят на действителното разположение на мониторите ви.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Екран:", 1820, 3, 107, 70, 9

View file

@ -140,7 +140,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Nastavení"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Tažením nastavte ikony monitorů, aby odpovídaly fyzickému uspořádání vašich monitorů.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Tažením nastavte ikony monitorů, aby odpovídaly fyzickému uspořádání vašich monitorů.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Obrazovka:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Einstellungen"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Verschieben Sie die Monitor-Symbole, sodass sie der physischen Anordnung Ihrer Monitore entsprechen.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Verschieben Sie die Monitor-Symbole, sodass sie der physischen Anordnung Ihrer Monitore entsprechen.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Anzeige:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Ρυθμίσεις"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Σύρετε τα εικονίδια της οθόνης, ώστε να ταιριάξουν με τη φυσική διάταξη των οθονών σας.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Σύρετε τα εικονίδια της οθόνης, ώστε να ταιριάξουν με τη φυσική διάταξη των οθονών σας.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Εμφάνιση:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Settings"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Display:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Settings"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Display:", 1820, 3, 107, 70, 9

View file

@ -144,7 +144,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Configuración"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Arrastre los iconos para ajustar el orden físico de sus monitores.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Arrastre los iconos para ajustar el orden físico de sus monitores.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "Mostrar:", 1820, 3, 107, 70, 9

View file

@ -141,7 +141,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Sätted"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Lohista monitori ikoone kuni see kattub teie füüsilise monitoride järjekorraga.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Lohista monitori ikoone kuni see kattub teie füüsilise monitoride järjekorraga.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Kuva:", 1820, 3, 107, 70, 9

View file

@ -136,7 +136,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Paramètres"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Déplacez les icônes de moniteur pour qu'elles correspondent à l'arrangement physique de vos moniteurs.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Déplacez les icônes de moniteur pour qu'elles correspondent à l'arrangement physique de vos moniteurs.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Affichage :", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "הגדרות"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "תצוגה:", 1820, 3, 107, 70, 9

View file

@ -136,7 +136,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Beállítások"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Mozgassa a monitor ikonokat úgy, hogy megegyezzen a monitorjai fizikai elrendezésével.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Mozgassa a monitor ikonokat úgy, hogy megegyezzen a monitorjai fizikai elrendezésével.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Képernyő:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setelan"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Geser ikon monitor untuk mencocokkan penyesuaian fisik monitor.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Geser ikon monitor untuk mencocokkan penyesuaian fisik monitor.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Tampilan:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Impostazioni"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Trascinare le icone dei monitor in modo corrispondente alla disposizione fisica dei vostri monitor.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Trascinare le icone dei monitor in modo corrispondente alla disposizione fisica dei vostri monitor.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Schermo:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "設定"
FONT 9, "MS UI Gothic"
BEGIN
LTEXT "モニタのアイコンを実際のモニタの配列と一致するように移動してください。", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "モニタのアイコンを実際のモニタの配列と一致するように移動してください。", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "ディスプレイ(&D):", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Instellingen"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Scherm:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Innstillinger"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Dra skjermikonene for å tilpasse fysisk til din skjerm.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Dra skjermikonene for å tilpasse fysisk til din skjerm.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Skjerm:", 1820, 3, 107, 70, 9

View file

@ -144,7 +144,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Ustawienia"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Przeciągnij ikony monitorów tak, by przedstawiały fizyczne rozmieszczenie twoich monitorów.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Przeciągnij ikony monitorów tak, by przedstawiały fizyczne rozmieszczenie twoich monitorów.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Ekran:", 1820, 3, 107, 70, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Configurações"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Arraste os ícones de monitor para que corresponda à disposição física de seus monitores.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Arraste os ícones de monitor para que corresponda à disposição física de seus monitores.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "Vídeo:", 1820, 3, 107, 70, 9

View file

@ -139,7 +139,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Definições"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Arraste os ícones dos monitores, para que correspondam à disposição física dos seus monitores.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Arraste os ícones dos monitores, para que correspondam à disposição física dos seus monitores.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 250, 82, WS_EX_CLIENTEDGE
LTEXT "Monitor:", 1820, 3, 107, 70, 9

View file

@ -139,7 +139,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Configurare"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Mișcați miniaturile ecranelor până vor corespunde cu amplasamentul fizic al ecranelor (opțiune pentru ecrane multiple).", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Mișcați miniaturile ecranelor până vor corespunde cu amplasamentul fizic al ecranelor (opțiune pentru ecrane multiple).", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Dispozitive de afișare:", 1820, 3, 107, 75, 9

View file

@ -134,7 +134,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Параметры"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Разместите значки мониторов в соответствии с их расположением.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Разместите значки мониторов в соответствии с их расположением.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Дисплей:", 1820, 3, 107, 70, 9

View file

@ -136,7 +136,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Nastavenie"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Ťahaním zoraďte ikony podľa fyzického rozmiestnenia monitorov.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Ťahaním zoraďte ikony podľa fyzického rozmiestnenia monitorov.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Monitor:", 1820, 3, 107, 70, 9

View file

@ -138,7 +138,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Cilësimet"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Terheq monitorimin e ikonave të përputhet me marrëveshje fizike të vëzhguesit tuaj.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Terheq monitorimin e ikonave të përputhet me marrëveshje fizike të vëzhguesit tuaj.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Ekran:", 1820, 3, 107, 70, 9

View file

@ -136,7 +136,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Inställningar"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Drag the monitor icons to match the physical arrangement of your monitors.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Bild:", 1820, 3, 107, 70, 9

View file

@ -136,7 +136,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Ayarlar"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Monitörlerinizin fiziksel düzenlenmesini karşılaştırmak için monitör simgelerini sürükleyiniz.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Monitörlerinizin fiziksel düzenlenmesini karşılaştırmak için monitör simgelerini sürükleyiniz.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "Görü&ntü:", 1820, 3, 107, 70, 9

View file

@ -142,7 +142,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Параметри"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Розташуйте значки моніторів відповідно до фактичного розташування моніторів.", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "Розташуйте значки моніторів відповідно до фактичного розташування моніторів.", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "&Дисплей:", 1820, 3, 107, 70, 9

View file

@ -144,7 +144,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "设置"
FONT 9, "宋体"
BEGIN
LTEXT "拖动监视器图标以匹配监视器的物理排列。", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "拖动监视器图标以匹配监视器的物理排列。", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "显示(&D)", 1820, 3, 107, 70, 9

View file

@ -142,7 +142,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "設定"
FONT 9, "新細明體"
BEGIN
LTEXT "拖動顯示器圖示以便符合顯示器的實際設定。", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "拖動顯示器圖示以便符合顯示器的實際設定。", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "顯示(&D)", 1820, 3, 107, 70, 9

View file

@ -143,7 +143,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "設定"
FONT 9, "新細明體"
BEGIN
LTEXT "拖動顯示器圖示以便符合顯示器的實際設定。", -1, 3, 3, 240, 20
CONTROL "", IDC_RESOLUTION_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74, 0
LTEXT "拖動顯示器圖示以便符合顯示器的實際設定。", IDC_SETTINGS_MONTEXT, 3, 3, 240, 20
CONTROL "", IDC_SETTINGS_MONSEL, "MONITORSELWNDCLASS", WS_CHILD | WS_VISIBLE |
WS_TABSTOP, 3, 23, 240, 82, WS_EX_CLIENTEDGE
LTEXT "顯示(&D)", 1820, 3, 107, 70, 9

View file

@ -31,6 +31,7 @@
#define IDC_COLOR_BUTTON 1004
#define IDC_PLACEMENT_COMBO 1005
#define IDS_BACKGROUND_COMDLG_FILTER 1006
#define IDC_RESOLUTION_PREVIEW 1007
/* Screensaver Page */
#define IDC_SCREENS_PREVIEW 1010
@ -65,10 +66,11 @@
#define IDC_SETTINGS_ADVANCED 205
#define IDC_SETTINGS_MONSEL 206
#define IDC_SETTINGS_SPECTRUM 207
#define IDC_SETTINGS_MONTEXT 208
#define IDB_SPECTRUM_4 208
#define IDB_SPECTRUM_8 209
#define IDB_SPECTRUM_16 210
#define IDB_SPECTRUM_4 209
#define IDB_SPECTRUM_8 210
#define IDB_SPECTRUM_16 211
#define IDR_PREVIEW_MENU 2100
#define ID_MENU_NORMAL 2101

View file

@ -360,6 +360,9 @@ SettingsOnInitDialog(IN HWND hwndDlg)
/* Single video adapter */
OnDisplayDeviceChanged(hwndDlg, pData, pData->DisplayDeviceList);
ShowWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_MONTEXT), SW_HIDE);
ShowWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_MONSEL), SW_HIDE);
monitors.Position.x = monitors.Position.y = 0;
monitors.Size.cx = pData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth;
monitors.Size.cy = pData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
@ -377,6 +380,8 @@ SettingsOnInitDialog(IN HWND hwndDlg)
OnDisplayDeviceChanged(hwndDlg, pData, pData->DisplayDeviceList);
ShowWindow(GetDlgItem(hwndDlg, IDC_RESOLUTION_PREVIEW), SW_HIDE);
pMonitors = (PMONSL_MONINFO)HeapAlloc(GetProcessHeap(), 0, sizeof(MONSL_MONINFO) * Result);
if (pMonitors)
{
@ -421,6 +426,40 @@ SettingsOnInitDialog(IN HWND hwndDlg)
}
}
static VOID
ShowResolutionPreview(IN LPDRAWITEMSTRUCT draw, IN PSETTINGS_DATA pData)
{
HBRUSH hBrush;
HDC hDC;
HGDIOBJ hOldObj;
RECT rcItem = {
MONITOR_LEFT,
MONITOR_TOP,
MONITOR_RIGHT,
MONITOR_BOTTOM
};
hDC = CreateCompatibleDC(draw->hDC);
hOldObj = SelectObject(hDC, g_GlobalData.hMonitorBitmap);
/* FIXME: Draw resolution preview bitmap inside monitor. */
hBrush = CreateSolidBrush(g_GlobalData.desktop_color);
FillRect(hDC, &rcItem, hBrush);
DeleteObject(hBrush);
GdiTransparentBlt(draw->hDC,
draw->rcItem.left, draw->rcItem.top,
draw->rcItem.right - draw->rcItem.left + 1,
draw->rcItem.bottom - draw->rcItem.top + 1,
hDC,
0, 0,
g_GlobalData.bmMonWidth, g_GlobalData.bmMonHeight,
MONITOR_ALPHA);
SelectObject(hDC, hOldObj);
DeleteDC(hDC);
}
/* Get the ID for SETTINGS_DATA::hSpectrumBitmaps */
static VOID
ShowColorSpectrum(IN HDC hDC, IN LPRECT client, IN DWORD BitsPerPel, IN PSETTINGS_DATA pData)
@ -576,6 +615,7 @@ OnResolutionChanged(IN HWND hwndDlg, IN PSETTINGS_DATA pData, IN DWORD NewPositi
}
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
InvalidateRect(GetDlgItem(hwndDlg, IDC_RESOLUTION_PREVIEW), NULL, TRUE);
dmBitsPerPel = Current->dmBitsPerPel;
dmDisplayFrequency = Current->dmDisplayFrequency;
@ -854,8 +894,19 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
LPDRAWITEMSTRUCT lpDrawItem;
lpDrawItem = (LPDRAWITEMSTRUCT) lParam;
if (lpDrawItem->CtlID == IDC_SETTINGS_SPECTRUM)
ShowColorSpectrum(lpDrawItem->hDC, &lpDrawItem->rcItem, pData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel, pData);
switch (lpDrawItem->CtlID)
{
case IDC_RESOLUTION_PREVIEW:
{
ShowResolutionPreview(lpDrawItem, pData);
break;
}
case IDC_SETTINGS_SPECTRUM:
{
ShowColorSpectrum(lpDrawItem->hDC, &lpDrawItem->rcItem, pData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel, pData);
break;
}
}
break;
}
case WM_COMMAND: