17#define MAX_BACKGROUNDS 100
102 if (!
_wcsicmp(codecInfo[
i].MimeType, MimeType))
104 *pClsid = codecInfo[
i].
Clsid;
159 if (!
lstrcmpiW(codecInfo[
i].FilenameExtension,
L"*.ico"))
230 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
256 listItem.iImage = sfi.
iIcon;
257 listItem.iItem =
pData->listViewItemCount;
258 listItem.lParam =
pData->listViewItemCount;
262 pData->listViewItemCount++;
298 HWND hwndBackgroundList;
313#define IDI_SHELL_NO 200
328 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
340 listItem.iItem =
pData->listViewItemCount;
341 listItem.lParam =
pData->listViewItemCount;
346 pData->listViewItemCount,
350 pData->listViewItemCount++;
370 hr =
StringCbCopy(wallpaperFilename,
sizeof(wallpaperFilename), originalWallpaper);
400 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
424 listItem.iImage = sfi.
iIcon;
425 listItem.iItem =
pData->listViewItemCount;
426 listItem.lParam =
pData->listViewItemCount;
430 pData->listViewItemCount,
434 pData->listViewItemCount++;
517 if (
_ttoi(szBuffer) == 1)
553 cc.hwndOwner = hwndDlg;
556 cc.lpCustColors =
pData->custom_colors;
602 lvfi.psz = tszFileName;
618 TCHAR fileTitle[256];
625 HWND hwndBackgroundList;
653 buffersize = (
_tcslen(extensions) * 2 + 6) *
sizeof(
TCHAR) +
sizeof(filterdesc);
662 sizeRemain = buffersize;
673 sizeRemain -=
sizeof(*c);
714 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
732 listItem.iImage = sfi.
iIcon;
733 listItem.iItem =
pData->listViewItemCount;
734 listItem.lParam =
pData->listViewItemCount;
738 pData->listViewItemCount,
743 pData->listViewItemCount++;
753 pData->backgroundSelection = itemIndex;
754 backgroundItem = &
pData->backgroundItems[
pData->backgroundSelection];
791 int fitFillScaleNum, fitFillScaleDen;
792 int fitFillWidth, fitFillHeight;
808 if (
pData->backgroundItems[
pData->backgroundSelection].bWallpaper ==
FALSE)
821 scaledWidth = (
int)(
pData->pWallpaperBitmap->width / scaleX);
822 scaledHeight = (
int)(
pData->pWallpaperBitmap->height / scaleY);
828 switch (
pData->placementSelection)
836 if (posX < 0) { desX = -posX / 2; posX = 0; }
837 if (posY < 0) { desY = -posY / 2; posY = 0; }
852 pData->pWallpaperBitmap->width - (
int)(desX * scaleX),
853 pData->pWallpaperBitmap->height - (
int)(desY * scaleY),
854 pData->pWallpaperBitmap->bits,
855 pData->pWallpaperBitmap->info,
868 pData->pWallpaperBitmap->width,
869 pData->pWallpaperBitmap->height,
870 pData->pWallpaperBitmap->bits,
871 pData->pWallpaperBitmap->info,
899 pData->pWallpaperBitmap->width * posX / scaledWidth,
900 pData->pWallpaperBitmap->height * posY / scaledHeight,
901 pData->pWallpaperBitmap->bits,
902 pData->pWallpaperBitmap->info,
915 fitFillScaleDen = scaledWidth;
920 fitFillScaleDen = scaledHeight;
923 fitFillWidth =
MulDiv(scaledWidth, fitFillScaleNum, fitFillScaleDen);
924 fitFillHeight =
MulDiv(scaledHeight, fitFillScaleNum, fitFillScaleDen);
936 pData->pWallpaperBitmap->width,
937 pData->pWallpaperBitmap->height,
938 pData->pWallpaperBitmap->bits,
939 pData->pWallpaperBitmap->info,
948 fitFillScaleDen = scaledWidth;
953 fitFillScaleDen = scaledHeight;
956 fitFillWidth =
MulDiv(scaledWidth, fitFillScaleNum, fitFillScaleDen);
957 fitFillHeight =
MulDiv(scaledHeight, fitFillScaleNum, fitFillScaleDen);
959 desX = (((fitFillWidth -
MONITOR_WIDTH) *
pData->pWallpaperBitmap->width) / (2 * fitFillWidth));
960 desY = (((fitFillHeight -
MONITOR_HEIGHT) *
pData->pWallpaperBitmap->height) / (2 * fitFillHeight));
971 pData->pWallpaperBitmap->bits,
972 pData->pWallpaperBitmap->info,
1050 if (
pData->backgroundItems[
pData->backgroundSelection].bWallpaper !=
FALSE)
1088 TEXT(
"ConvertedWallpaper"),
1098 TEXT(
"OriginalWallpaper"),
1259 if (
pData->bWallpaperChanged)
1261 if (
pData->bClrBackgroundChanged)
1263 if (
pData->desktopData.bSettingsChanged)
static VOID OnBrowseButton(HWND hwndDlg, PBACKGROUND_DATA pData)
static VOID InitBackgroundDialog(HWND hwndDlg, PBACKGROUND_DATA pData)
struct _BACKGROUND_DATA * PBACKGROUND_DATA
static VOID SetWallpaper(PBACKGROUND_DATA pData)
static VOID AddListViewItems(HWND hwndDlg, PBACKGROUND_DATA pData)
struct _BACKGROUND_DATA BACKGROUND_DATA
HRESULT GdipGetEncoderClsid(PCWSTR MimeType, CLSID *pClsid)
@ PLACEMENT_VALUE_STRETCH
static UINT AddWallpapersFromDirectory(UINT uCounter, HWND hwndBackgroundList, BackgroundItem *backgroundItem, PBACKGROUND_DATA pData, LPCTSTR wallpaperFilename, LPCTSTR wallpaperDirectory)
static VOID DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PBACKGROUND_DATA pData)
static BOOL CheckListViewFilenameExists(HWND hwndList, LPCTSTR tszFileName)
LPWSTR GdipGetSupportedFileExtensions(VOID)
INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static VOID OnColorButton(HWND hwndDlg, PBACKGROUND_DATA pData)
static VOID ListViewItemChanged(HWND hwndDlg, PBACKGROUND_DATA pData, int itemIndex)
static VOID SetDesktopBackColor(HWND hwndDlg, PBACKGROUND_DATA pData)
static VOID OnCustomButton(HWND hwndDlg, PBACKGROUND_DATA pData)
#define RegCloseKey(hKey)
#define OFN_FILEMUSTEXIST
#define OFN_PATHMUSTEXIST
OPENFILENAMEA OPENFILENAME
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
VOID InitDesktopSettings(PDESKTOP_DATA pData)
BOOL SaveDesktopSettings(PDESKTOP_DATA pData)
INT_PTR CALLBACK DesktopPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID SetDesktopSettings(PDESKTOP_DATA pData)
UINT ClrBtn_CustomDraw(NMCUSTOMDRAW *pCD, COLORREF Color)
VOID DibFreeImage(PDIBITMAP lpBitmap)
PDIBITMAP DibLoadImage(LPTSTR lpFilename)
#define IDC_BACKGROUND_LIST
#define IDD_DESKTOP_GENERAL
#define IDC_BACKGROUND_PREVIEW
#define IDS_BACKGROUND_COMDLG_FILTER
#define IDC_DESKTOP_CUSTOM
#define IDS_DESKTOP_ITEMS
#define IDC_PLACEMENT_COMBO
#define IDC_BROWSE_BUTTON
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage *image, GUID *format)
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size)
GpStatus WINGDIPAPI GdipGetImageDecodersSize(UINT *numDecoders, UINT *size)
GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage *image, GDIPCONST WCHAR *filename, GDIPCONST CLSID *clsidEncoder, GDIPCONST EncoderParameters *encoderParams)
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR *filename, GpImage **image)
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders)
GpStatus WINGDIPAPI GdipGetImageDecoders(UINT numDecoders, UINT size, ImageCodecInfo *decoders)
BOOL WINAPI FindClose(HANDLE hFindFile)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output)
void WINAPI GdiplusShutdown(ULONG_PTR)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static float(__cdecl *square_half_float)(float x
struct _PSP * HPROPSHEETPAGE
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define FILE_ATTRIBUTE_HIDDEN
#define REG_OPTION_NON_VOLATILE
#define MAKEINTRESOURCE(i)
#define PropSheet_Changed(d, w)
#define CreatePropertySheetPage
_Out_opt_ int _Out_opt_ int * cy
#define ListView_InsertItem(hwnd, pitem)
#define ListView_SetItemState(hwndLV, i, data, mask)
#define ListView_InsertColumn(hwnd, iCol, pcol)
#define ListView_SetImageList(hwnd, himl, iImageList)
#define ListView_GetImageList(hwnd, iImageList)
struct tagNMLISTVIEW * LPNMLISTVIEW
#define ImageList_AddIcon(himl, hicon)
#define ListView_FindItem(hwnd, iStart, plvfi)
#define IsEqualGUID(rguid1, rguid2)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
#define SHGFI_DISPLAYNAME
#define CSIDL_FLAG_CREATE
#define CSIDL_LOCAL_APPDATA
#define PathRemoveExtension
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
TCHAR szFilename[MAX_PATH]
BOOL bClrBackgroundChanged
COLORREF custom_colors[16]
PDIBITMAP pWallpaperBitmap
BackgroundItem backgroundItems[MAX_BACKGROUNDS]
CHAR szDisplayName[MAX_PATH]
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
BOOL WINAPI GdiTransparentBlt(HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, UINT crTransparent)
#define success(from, fromstr, to, tostr)
#define GetWindowsDirectory
#define ExpandEnvironmentStrings
#define SetDlgMsgResult(hwnd, msg, result)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
int WINAPI SetStretchBltMode(_In_ HDC, _In_ int)
int WINAPI StretchDIBits(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ const VOID *, _In_ const BITMAPINFO *, _In_ UINT, _In_ DWORD)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
#define SPI_SETDESKWALLPAPER
BOOL WINAPI SetSysColors(_In_ int cElements, _In_reads_(cElements) CONST INT *lpaElements, _In_reads_(cElements) CONST COLORREF *lpaRgbValues)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SPIF_UPDATEINIFILE
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
struct tagNMHDR * LPNMHDR
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
#define SystemParametersInfo
#define SendDlgItemMessage
int WINAPI GetSystemMetrics(_In_ int)