* PROJECT: ReactOS Display Control Panel
* FILE: lib/cpl/desk/background.c
* PURPOSE: Background property page
- *
+ *
* PROGRAMMERS: Trevor McCort (lycan359@gmail.com)
* Alexey Minnekhanov (minlexx@rambler.ru)
*/
HIMAGELIST himl;
TCHAR wallpaperFilename[MAX_PATH];
DWORD bufferSize = sizeof(wallpaperFilename);
+ TCHAR buffer[MAX_PATH];
DWORD varType = REG_SZ;
LONG result;
UINT i = 0;
TCHAR separators[] = TEXT(";");
TCHAR *token;
HWND hwndBackgroundList;
+ TCHAR *p;
hwndBackgroundList = GetDlgItem(hwndDlg, IDC_BACKGROUND_LIST);
dummy.mask = LVCF_SUBITEM | LVCF_WIDTH;
dummy.iSubItem = 0;
dummy.cx = (clientRect.right - clientRect.left) - GetSystemMetrics(SM_CXVSCROLL);
- ListView_InsertColumn(hwndBackgroundList, 0, &dummy);
+ (void)ListView_InsertColumn(hwndBackgroundList, 0, &dummy);
/* Add the "None" item */
backgroundItem = &pGlobalData->backgroundItems[pGlobalData->listViewItemCount];
listItem.iItem = pGlobalData->listViewItemCount;
listItem.lParam = pGlobalData->listViewItemCount;
- ListView_InsertItem(hwndBackgroundList, &listItem);
+ (void)ListView_InsertItem(hwndBackgroundList, &listItem);
ListView_SetItemState(hwndBackgroundList, pGlobalData->listViewItemCount, LVIS_SELECTED, LVIS_SELECTED);
pGlobalData->listViewItemCount++;
result = RegQueryValueEx(regKey, TEXT("Wallpaper"), 0, &varType, (LPBYTE)wallpaperFilename, &bufferSize);
if ((result == ERROR_SUCCESS) && (_tcslen(wallpaperFilename) > 0))
{
+ /* Allow environment variables in file name */
+ if (ExpandEnvironmentStrings(wallpaperFilename, buffer, MAX_PATH))
+ {
+ _tcscpy(wallpaperFilename, buffer);
+ }
+
himl = (HIMAGELIST)SHGetFileInfo(wallpaperFilename,
0,
&sfi,
{
if (i++ == 0)
{
- ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL);
+ (void)ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL);
}
backgroundItem = &pGlobalData->backgroundItems[pGlobalData->listViewItemCount];
backgroundItem->bWallpaper = TRUE;
_tcscpy(backgroundItem->szDisplayName, sfi.szDisplayName);
+ p = _tcsrchr(backgroundItem->szDisplayName, _T('.'));
+ if (p)
+ *p = (TCHAR)0;
_tcscpy(backgroundItem->szFilename, wallpaperFilename);
ZeroMemory(&listItem, sizeof(LV_ITEM));
listItem.iItem = pGlobalData->listViewItemCount;
listItem.lParam = pGlobalData->listViewItemCount;
- ListView_InsertItem(hwndBackgroundList, &listItem);
+ (void)ListView_InsertItem(hwndBackgroundList, &listItem);
ListView_SetItemState(hwndBackgroundList, pGlobalData->listViewItemCount, LVIS_SELECTED, LVIS_SELECTED);
pGlobalData->listViewItemCount++;
hFind = FindFirstFile(szSearchPath, &fd);
while (hFind != INVALID_HANDLE_VALUE)
{
- /* Don't add any hidden bitmaps */
- if ((fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0)
- {
- TCHAR filename[MAX_PATH];
+ TCHAR filename[MAX_PATH];
- GetWindowsDirectory(filename, MAX_PATH);
+ GetWindowsDirectory(filename, MAX_PATH);
- _tcscat(filename, TEXT("\\"));
- _tcscat(filename, fd.cFileName);
+ _tcscat(filename, TEXT("\\"));
+ _tcscat(filename, fd.cFileName);
+ /* Don't add any hidden bitmaps. Also don't add current wallpaper once more. */
+ if (((fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0) && (_tcscmp(wallpaperFilename, filename) != 0))
+ {
himl = (HIMAGELIST)SHGetFileInfo(filename,
0,
&sfi,
if (i++ == 0)
{
- ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL);
+ (void)ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL);
}
backgroundItem = &pGlobalData->backgroundItems[pGlobalData->listViewItemCount];
backgroundItem->bWallpaper = TRUE;
_tcscpy(backgroundItem->szDisplayName, sfi.szDisplayName);
+ p = _tcsrchr(backgroundItem->szDisplayName, _T('.'));
+ if (p)
+ *p = (TCHAR)0;
_tcscpy(backgroundItem->szFilename, filename);
ZeroMemory(&listItem, sizeof(LV_ITEM));
listItem.iItem = pGlobalData->listViewItemCount;
listItem.lParam = pGlobalData->listViewItemCount;
- ListView_InsertItem(hwndBackgroundList, &listItem);
+ (void)ListView_InsertItem(hwndBackgroundList, &listItem);
pGlobalData->listViewItemCount++;
}
SendDlgItemMessage(hwndDlg, IDC_PLACEMENT_COMBO, CB_SETCURSEL, PLACEMENT_CENTER, 0);
pGlobalData->placementSelection = PLACEMENT_CENTER;
}
-
+
if (_ttoi(szBuffer) == 2)
{
SendDlgItemMessage(hwndDlg, IDC_PLACEMENT_COMBO, CB_SETCURSEL, PLACEMENT_STRETCH, 0);
RegCloseKey(regKey);
- pGlobalData->hBitmap = LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT);
+ pGlobalData->hBitmap = (HBITMAP) LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT);
if (pGlobalData->hBitmap != NULL)
{
GetObject(pGlobalData->hBitmap, sizeof(BITMAP), &bitmap);
/* Save selected color to var */
pGlobalData->backgroundDesktopColor = cc.rgbResult;
- /* Allpy buuton will be activated */
+ /* Apply button will be activated */
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
/* Window will be updated :) */
InvalidateRect(GetDlgItem(hwndDlg, IDC_BACKGROUND_PREVIEW), NULL, TRUE);
- /* Save custom colors to reg. To this moment key must be ceated already. See above */
+ /* Save custom colors to reg. To this moment key must be created already. See above */
res = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Appearance"), 0,
KEY_WRITE, &hKey);
if (res == ERROR_SUCCESS)
SHFILEINFO sfi;
LV_ITEM listItem;
HWND hwndBackgroundList;
+ TCHAR *p;
hwndBackgroundList = GetDlgItem(hwndDlg, IDC_BACKGROUND_LIST);
LoadString(hApplet, IDS_BACKGROUND_COMDLG_FILTER, filter, sizeof(filter) / sizeof(TCHAR));
- /* Set lpstrFile[0] to '\0' so that GetOpenFileName does not
+ /* Set lpstrFile[0] to '\0' so that GetOpenFileName does not
* use the contents of szFile to initialize itself */
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = MAX_PATH;
backgroundItem->bWallpaper = TRUE;
_tcscpy(backgroundItem->szDisplayName, sfi.szDisplayName);
+ p = _tcsrchr(backgroundItem->szDisplayName, _T('.'));
+ if (p)
+ *p = (TCHAR)0;
_tcscpy(backgroundItem->szFilename, filename);
ZeroMemory(&listItem, sizeof(LV_ITEM));
listItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
- listItem.state = 0;
+ listItem.state = LVIS_SELECTED;
listItem.pszText = backgroundItem->szDisplayName;
listItem.iImage = sfi.iIcon;
listItem.iItem = pGlobalData->listViewItemCount;
listItem.lParam = pGlobalData->listViewItemCount;
- ListView_InsertItem(hwndBackgroundList, &listItem);
+ (void)ListView_InsertItem(hwndBackgroundList, &listItem);
+ SendMessage(hwndBackgroundList, WM_VSCROLL, SB_BOTTOM, 0);
pGlobalData->listViewItemCount++;
}
InvalidateRect(GetDlgItem(hwndDlg, IDC_BACKGROUND_PREVIEW),
NULL, TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_COLOR_BUTTON),
- (backgroundItem->bWallpaper == FALSE ? TRUE : FALSE));
EnableWindow(GetDlgItem(hwndDlg, IDC_PLACEMENT_COMBO),
backgroundItem->bWallpaper);
}
else
{
- SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TEXT(""), SPIF_UPDATEINIFILE);
+ SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*) TEXT(""), SPIF_UPDATEINIFILE);
}
}
if( result != ERROR_SUCCESS )
{
/* Key open failed; maybe it does not exist? create it! */
- result = RegCreateKeyEx( HKEY_CURRENT_USER, TEXT("Control Panel\\Colors"), 0, NULL, 0,
+ result = RegCreateKeyEx( HKEY_CURRENT_USER, TEXT("Control Panel\\Colors"), 0, NULL, 0,
KEY_ALL_ACCESS, NULL, &hKey, NULL );
/* Now key must be created and opened and hKey must point at newly created key */
/* On error result will not contain ERROR_SUCCESS. I don't know how to handle */
switch (uMsg)
{
case WM_INITDIALOG:
- pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
+ pGlobalData = (GLOBAL_DATA*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
InitBackgroundDialog(hwndDlg, pGlobalData);
break;
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, pGlobalData->hBitmap);
-
+/*
TransparentBlt(hdc, 98, 0,
pGlobalData->cxSource, pGlobalData->cySource, hdcMem, 0, 0,
pGlobalData->cxSource, pGlobalData->cySource, 0xFF80FF);
-
+*/
DeleteDC(hdcMem);
EndPaint(hwndDlg, &ps);
}
return FALSE;
}
+