diff --git a/reactos/dll/cpl/desk/background.c b/reactos/dll/cpl/desk/background.c index 52d5ea3e8b3..c388e71365c 100644 --- a/reactos/dll/cpl/desk/background.c +++ b/reactos/dll/cpl/desk/background.c @@ -43,6 +43,9 @@ HWND g_hColorButton = NULL; HIMAGELIST g_hShellImageList = NULL; +HBITMAP hBitmap = NULL; +int cxSource, cySource; + /* Add the images in the C:\ReactOS directory and the current wallpaper if any */ void AddListViewItems() { @@ -226,6 +229,7 @@ void InitBackgroundDialog() DWORD bufferSize = sizeof(szBuffer); DWORD varType = REG_SZ; LONG result; + BITMAP bitmap; g_hBackgroundList = GetDlgItem(g_hBackgroundPage, IDC_BACKGROUND_LIST); g_hBackgroundPreview = GetDlgItem(g_hBackgroundPage, IDC_BACKGROUND_PREVIEW); @@ -280,6 +284,15 @@ void InitBackgroundDialog() } RegCloseKey(regKey); + + hBitmap = LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT); + if (hBitmap != NULL) + { + GetObject(hBitmap, sizeof(BITMAP), &bitmap); + + cxSource = bitmap.bmWidth; + cySource = bitmap.bmHeight; + } } void OnColorButton() @@ -569,6 +582,23 @@ INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, } } break; + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc, hdcMem; + + hdc = BeginPaint(hwndDlg, &ps); + + hdcMem = CreateCompatibleDC(hdc); + SelectObject(hdcMem, hBitmap); + + BitBlt(hdc, 98, 0, cxSource, cySource, hdcMem, 0, 0, SRCCOPY); + + DeleteDC(hdcMem); + EndPaint(hwndDlg, &ps); + + } break; + case WM_DRAWITEM: { LPDRAWITEMSTRUCT drawItem; @@ -616,6 +646,8 @@ INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, if(g_pWallpaperBitmap != NULL) DibFreeImage(g_pWallpaperBitmap); + DeleteObject(hBitmap); + } break; } diff --git a/reactos/dll/cpl/desk/desk.rc b/reactos/dll/cpl/desk/desk.rc index 6327e4cb303..0dfd3d11fb4 100644 --- a/reactos/dll/cpl/desk/desk.rc +++ b/reactos/dll/cpl/desk/desk.rc @@ -11,6 +11,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #include IDC_DESK_ICON ICON "resources/applet.ico" +IDC_MONITOR BITMAP "resources/monitor.bmp" #include "en.rc" #include "cz.rc" diff --git a/reactos/dll/cpl/desk/en.rc b/reactos/dll/cpl/desk/en.rc index 54615990228..5fa9d0bce61 100644 --- a/reactos/dll/cpl/desk/en.rc +++ b/reactos/dll/cpl/desk/en.rc @@ -1,22 +1,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -IDD_BACKGROUND DIALOGEX DISCARDABLE 0, 0, 246, 188 +IDD_BACKGROUND DIALOGEX DISCARDABLE 0, 0, 246, 205 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Background" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "",IDC_BACKGROUND_PREVIEW,"Static",SS_OWNERDRAW,78,10, - 90,65,WS_EX_STATICEDGE - CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT | - LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | - WS_BORDER | WS_TABSTOP,7,99,173,71 - LTEXT "Select an image to use as your desktop wallpaper:", - IDC_STATIC,8,87,180,8 - PUSHBUTTON "&Browse...",IDC_BROWSE_BUTTON,187,135,50,14 - PUSHBUTTON "&Color...",IDC_COLOR_BUTTON,187,155,50,14 - LTEXT "Placement:",IDC_STATIC,187,98,36,8 - COMBOBOX IDC_PLACEMENT_COMBO,187,108,50,90,CBS_DROPDOWNLIST | - CBS_SORT | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW, 80, 10, 83, 57, WS_EX_STATICEDGE + CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOCOLUMNHEADER + | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 8, 114, 174, 78 + LTEXT "Select an image to use as your desktop wallpaper:", IDC_STATIC, 8, 103, 180, 9 + PUSHBUTTON "&Browse...", IDC_BROWSE_BUTTON, 188, 114, 50, 15 + PUSHBUTTON "&Color...", IDC_COLOR_BUTTON, 188, 177, 50, 15 + LTEXT "Placement:", IDC_STATIC, 188, 138, 36, 9 + COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END IDD_SCREENSAVER DIALOGEX DISCARDABLE 0, 0, 246, 188 diff --git a/reactos/dll/cpl/desk/resource.h b/reactos/dll/cpl/desk/resource.h index 13d7886d3d1..fe54dc47486 100644 --- a/reactos/dll/cpl/desk/resource.h +++ b/reactos/dll/cpl/desk/resource.h @@ -25,12 +25,14 @@ /* Background Page */ #define IDC_BACKGROUND_LIST 1000 -#define IDC_BACKGROUND_PREVIEW 1001 -#define IDC_BROWSE_BUTTON 1002 -#define IDC_COLOR_BUTTON 1003 -#define IDC_PLACEMENT_COMBO 1004 -#define IDS_BACKGROUND_COMDLG_FILTER 1005 -#define IDS_SUPPORTED_EXT 1006 +#define IDC_MONITOR 1001 +#define IDC_BACKGROUND_PREVIEW 1002 +#define IDC_BROWSE_BUTTON 1003 +#define IDC_COLOR_BUTTON 1004 +#define IDC_PLACEMENT_COMBO 1005 +#define IDS_BACKGROUND_COMDLG_FILTER 1006 +#define IDS_SUPPORTED_EXT 1007 + /* Screensaver Page */ #define IDC_SCREENS_CHOICES 1010 diff --git a/reactos/dll/cpl/desk/resources/monitor.bmp b/reactos/dll/cpl/desk/resources/monitor.bmp new file mode 100644 index 00000000000..3e72fda04f2 Binary files /dev/null and b/reactos/dll/cpl/desk/resources/monitor.bmp differ