mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
[DESK] Add desktop icon change feature
- All functions now implemented, except no support for themes. - Fixed listview height to avoid vertical scrollbar in Windows. - Refactored existing code for show/hide desktop icons. CORE-3567 CORE-8427
This commit is contained in:
parent
43ecf7e4e4
commit
769fcd895b
32 changed files with 327 additions and 47 deletions
|
@ -1146,19 +1146,15 @@ static VOID
|
|||
OnCustomButton(HWND hwndDlg, PBACKGROUND_DATA pData)
|
||||
{
|
||||
HPROPSHEETPAGE hpsp[1] = {0};
|
||||
PROPSHEETHEADER psh;
|
||||
PROPSHEETPAGE psp;
|
||||
PROPSHEETHEADER psh = {sizeof(psh)};
|
||||
PROPSHEETPAGE psp = {sizeof(psp)};
|
||||
|
||||
ZeroMemory(&psh, sizeof(psh));
|
||||
psh.dwSize = sizeof(psh);
|
||||
psh.dwFlags = PSH_NOAPPLYNOW;
|
||||
psh.hwndParent = GetParent(hwndDlg);
|
||||
psh.hInstance = hApplet;
|
||||
psh.pszCaption = MAKEINTRESOURCE(IDS_DESKTOP_ITEMS);
|
||||
psh.phpage = hpsp;
|
||||
|
||||
ZeroMemory(&psp, sizeof(psp));
|
||||
psp.dwSize = sizeof(psp);
|
||||
psp.dwFlags = PSP_DEFAULT;
|
||||
psp.hInstance = hApplet;
|
||||
psp.pszTemplate = MAKEINTRESOURCE(IDD_DESKTOP_GENERAL);
|
||||
|
|
|
@ -81,8 +81,8 @@ ULONG __cdecl DbgPrint(PCCH Format,...);
|
|||
#define MAX_DESK_PAGES 32
|
||||
#define NUM_SPECTRUM_BITMAPS 3
|
||||
|
||||
/* This number must match DesktopIcons array size */
|
||||
#define NUM_DESKTOP_ICONS 4
|
||||
#define NUM_DESKTOP_ICONS 4 /* DesktopIcons array size */
|
||||
#define NUM_CHANGE_ICONS 5 /* IconChange array size */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -90,15 +90,33 @@ typedef struct
|
|||
BOOL bHideNewStart; /* Hide icon in Modern Start menu mode */
|
||||
} HIDE_ICON;
|
||||
|
||||
typedef struct _ICON_PATH
|
||||
{
|
||||
TCHAR szPath[MAX_PATH];
|
||||
} ICON_PATH;
|
||||
|
||||
typedef struct _ICON_DATA
|
||||
{
|
||||
TCHAR szPath[MAX_PATH];
|
||||
TCHAR szTitle[40];
|
||||
} ICON_DATA;
|
||||
|
||||
typedef struct _DESKTOP_DATA
|
||||
{
|
||||
BOOL bSettingsChanged;
|
||||
HIDE_ICON optIcons[NUM_DESKTOP_ICONS];
|
||||
BOOL bHideChanged[NUM_DESKTOP_ICONS];
|
||||
BOOL bIconChanged[NUM_CHANGE_ICONS];
|
||||
ICON_PATH Icon[NUM_CHANGE_ICONS];
|
||||
ICON_PATH DefIcon[NUM_CHANGE_ICONS];
|
||||
|
||||
BOOL bLocalSettingsChanged;
|
||||
BOOL bLocalHideIcon[NUM_DESKTOP_ICONS];
|
||||
BOOL bLocalHideChanged[NUM_DESKTOP_ICONS];
|
||||
BOOL bLocalIconChanged[NUM_CHANGE_ICONS];
|
||||
ICON_DATA LocalIcon[NUM_CHANGE_ICONS];
|
||||
HIMAGELIST hLocalImageList;
|
||||
INT iLocalCurIcon;
|
||||
} DESKTOP_DATA, *PDESKTOP_DATA;
|
||||
|
||||
/* As slider control can't contain user data, we have to keep an
|
||||
|
|
|
@ -7,7 +7,24 @@
|
|||
|
||||
#include "desk.h"
|
||||
|
||||
#define FCIDM_DESKBROWSER_REFRESH 0xA220 /* From shresdef.h */
|
||||
#include <shlwapi.h>
|
||||
#include <shellapi.h>
|
||||
|
||||
/* From shresdef.h */
|
||||
#define FCIDM_DESKBROWSER_REFRESH 0xA220
|
||||
|
||||
#define IDS_TITLE_MYCOMP 30386
|
||||
#define IDS_TITLE_MYNET 30387
|
||||
#define IDS_TITLE_BIN_1 30388
|
||||
#define IDS_TITLE_BIN_0 30389
|
||||
|
||||
/* Workaround:
|
||||
* There's no special fallback icon title string
|
||||
* for My Documents in shell32.dll, so use IDS_PERSONAL.
|
||||
*
|
||||
* Windows does this in some different way.
|
||||
*/
|
||||
#define IDS_PERSONAL 9227
|
||||
|
||||
static const TCHAR szHideDesktopIcons[] = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons");
|
||||
static const TCHAR szClassicStartMenu[] = TEXT("ClassicStartMenu");
|
||||
|
@ -24,11 +41,30 @@ struct
|
|||
{TEXT("{871C5380-42A0-1069-A2EA-08002B30309D}"), IDC_ICONS_INTERNET}, /* Internet Browser */
|
||||
};
|
||||
|
||||
static const TCHAR szUserClass[] = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\");
|
||||
static const TCHAR szSysClass[] = TEXT("CLSID\\");
|
||||
static const TCHAR szDefaultIcon[] = TEXT("\\DefaultIcon");
|
||||
static const TCHAR szFallbackIcon[] = TEXT("%SystemRoot%\\system32\\shell32.dll,0");
|
||||
|
||||
struct
|
||||
{
|
||||
LPCTSTR CLSID;
|
||||
UINT TitleId;
|
||||
LPCTSTR IconName;
|
||||
} IconChange[NUM_CHANGE_ICONS] = {
|
||||
{TEXT("{20D04FE0-3AEA-1069-A2D8-08002B30309D}"), IDS_TITLE_MYCOMP, NULL}, /* My Computer */
|
||||
{TEXT("{450D8FBA-AD25-11D0-98A8-0800361B1103}"), IDS_PERSONAL, NULL}, /* My Documents */
|
||||
{TEXT("{208D2C60-3AEA-1069-A2D7-08002B30309D}"), IDS_TITLE_MYNET, NULL}, /* My Network Places */
|
||||
{TEXT("{645FF040-5081-101B-9F08-00AA002F954E}"), IDS_TITLE_BIN_1, TEXT("Full")}, /* Recycle Bin (full) */
|
||||
{TEXT("{645FF040-5081-101B-9F08-00AA002F954E}"), IDS_TITLE_BIN_0, TEXT("Empty")}, /* Recycle Bin (empty) */
|
||||
};
|
||||
|
||||
VOID
|
||||
InitDesktopSettings(PDESKTOP_DATA pData)
|
||||
{
|
||||
HKEY regKey, iconKey1, iconKey2;
|
||||
UINT i;
|
||||
DWORD dwType, cbData;
|
||||
|
||||
/* Default values */
|
||||
for (i = 0; i < _countof(pData->optIcons); i++)
|
||||
|
@ -41,7 +77,7 @@ InitDesktopSettings(PDESKTOP_DATA pData)
|
|||
if (RegOpenKeyEx(HKEY_CURRENT_USER, szHideDesktopIcons,
|
||||
0, KEY_QUERY_VALUE, ®Key) != ERROR_SUCCESS)
|
||||
{
|
||||
return;
|
||||
goto LoadIcons;
|
||||
}
|
||||
|
||||
if (RegOpenKeyEx(regKey, szClassicStartMenu, 0, KEY_QUERY_VALUE, &iconKey1) != ERROR_SUCCESS)
|
||||
|
@ -53,7 +89,7 @@ InitDesktopSettings(PDESKTOP_DATA pData)
|
|||
for (i = 0; i < _countof(pData->optIcons); i++)
|
||||
{
|
||||
LSTATUS res;
|
||||
DWORD dwType, dwData, cbData;
|
||||
DWORD dwData;
|
||||
|
||||
if (iconKey1)
|
||||
{
|
||||
|
@ -81,6 +117,47 @@ InitDesktopSettings(PDESKTOP_DATA pData)
|
|||
RegCloseKey(iconKey2);
|
||||
|
||||
RegCloseKey(regKey);
|
||||
|
||||
LoadIcons:
|
||||
for (i = 0; i < _countof(IconChange); i++)
|
||||
{
|
||||
TCHAR iconPath[MAX_PATH];
|
||||
TCHAR szData[MAX_PATH];
|
||||
|
||||
/* Current icons */
|
||||
StringCchCopy(iconPath, _countof(iconPath), szUserClass);
|
||||
StringCchCat(iconPath, _countof(iconPath), IconChange[i].CLSID);
|
||||
StringCchCat(iconPath, _countof(iconPath), szDefaultIcon);
|
||||
cbData = sizeof(szData);
|
||||
|
||||
if (SHGetValue(HKEY_CURRENT_USER, iconPath, IconChange[i].IconName, &dwType,
|
||||
&szData, &cbData) == ERROR_SUCCESS &&
|
||||
(dwType == REG_SZ || dwType == REG_EXPAND_SZ))
|
||||
{
|
||||
StringCchCopy(pData->Icon[i].szPath, _countof(pData->Icon[i].szPath), szData);
|
||||
}
|
||||
|
||||
/* Default icons */
|
||||
/* FIXME: Get default icons from theme data, fallback to CLSID data on error. */
|
||||
StringCchCopy(iconPath, _countof(iconPath), szSysClass);
|
||||
StringCchCat(iconPath, _countof(iconPath), IconChange[i].CLSID);
|
||||
StringCchCat(iconPath, _countof(iconPath), szDefaultIcon);
|
||||
cbData = sizeof(szData);
|
||||
|
||||
if (SHGetValue(HKEY_CLASSES_ROOT, iconPath, IconChange[i].IconName, &dwType,
|
||||
&szData, &cbData) == ERROR_SUCCESS &&
|
||||
(dwType == REG_SZ || dwType == REG_EXPAND_SZ))
|
||||
{
|
||||
StringCchCopy(pData->DefIcon[i].szPath, _countof(pData->DefIcon[i].szPath), szData);
|
||||
}
|
||||
|
||||
/* Emergency fallback */
|
||||
if (lstrlen(pData->DefIcon[i].szPath) == 0)
|
||||
StringCchCopy(pData->DefIcon[i].szPath, _countof(pData->DefIcon[i].szPath), szFallbackIcon);
|
||||
|
||||
if (lstrlen(pData->Icon[i].szPath) == 0)
|
||||
StringCchCopy(pData->Icon[i].szPath, _countof(pData->Icon[i].szPath), pData->DefIcon[i].szPath);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL
|
||||
|
@ -93,13 +170,21 @@ SaveDesktopSettings(PDESKTOP_DATA pData)
|
|||
|
||||
for (i = 0; i < _countof(DesktopIcons); i++)
|
||||
{
|
||||
if (pData->bLocalHideChanged[i])
|
||||
pData->bHideChanged[i] = TRUE;
|
||||
else
|
||||
if (!pData->bLocalHideChanged[i])
|
||||
continue;
|
||||
|
||||
pData->optIcons[i].bHideClassic =
|
||||
pData->optIcons[i].bHideNewStart = pData->bLocalHideIcon[i];
|
||||
pData->bHideChanged[i] = TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < _countof(IconChange); i++)
|
||||
{
|
||||
if (!pData->bLocalIconChanged[i])
|
||||
continue;
|
||||
|
||||
StringCchCopy(pData->Icon[i].szPath, _countof(pData->Icon[i].szPath), pData->LocalIcon[i].szPath);
|
||||
pData->bIconChanged[i] = TRUE;
|
||||
}
|
||||
|
||||
pData->bSettingsChanged = TRUE;
|
||||
|
@ -187,24 +272,55 @@ SetDesktopSettings(PDESKTOP_DATA pData)
|
|||
pData->bHideChanged[i] = FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < _countof(IconChange); i++)
|
||||
{
|
||||
TCHAR iconPath[MAX_PATH];
|
||||
DWORD dwType = (pData->Icon[i].szPath[0] == TEXT('%') ? REG_EXPAND_SZ : REG_SZ);
|
||||
|
||||
if (!pData->bIconChanged[i])
|
||||
continue;
|
||||
|
||||
StringCchCopy(iconPath, _countof(iconPath), szUserClass);
|
||||
StringCchCat(iconPath, _countof(iconPath), IconChange[i].CLSID);
|
||||
StringCchCat(iconPath, _countof(iconPath), szDefaultIcon);
|
||||
|
||||
SHSetValue(HKEY_CURRENT_USER, iconPath, IconChange[i].IconName, dwType,
|
||||
pData->Icon[i].szPath, sizeof(pData->Icon[i].szPath));
|
||||
if (IconChange[i].TitleId == IDS_TITLE_BIN_0)
|
||||
{
|
||||
/* Also apply to the root value */
|
||||
SHSetValue(HKEY_CURRENT_USER, iconPath, NULL, dwType,
|
||||
pData->Icon[i].szPath, sizeof(pData->Icon[i].szPath));
|
||||
}
|
||||
pData->bIconChanged[i] = FALSE;
|
||||
}
|
||||
|
||||
pData->bSettingsChanged = FALSE;
|
||||
|
||||
/* Refresh the desktop */
|
||||
PostMessage(GetShellWindow(), WM_COMMAND, FCIDM_DESKBROWSER_REFRESH, 0);
|
||||
}
|
||||
|
||||
static HICON
|
||||
GetIconFromLocation(LPTSTR szIconPath)
|
||||
{
|
||||
INT iIndex;
|
||||
TCHAR szPath[MAX_PATH];
|
||||
|
||||
ExpandEnvironmentStrings(szIconPath, szPath, _countof(szPath));
|
||||
iIndex = PathParseIconLocation(szPath);
|
||||
return ExtractIcon(hApplet, szPath, iIndex);
|
||||
}
|
||||
|
||||
static VOID
|
||||
DesktopOnInitDialog(IN HWND hwndDlg, IN PDESKTOP_DATA pData)
|
||||
{
|
||||
UINT i;
|
||||
SHELLSTATE ss = {0};
|
||||
HWND hwndList;
|
||||
|
||||
SHGetSetSettings(&ss, SSF_STARTPANELON, FALSE);
|
||||
|
||||
/* Disable unimplemented features */
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ICONS_CHANGEICON), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ICONS_SETDEFAULT), FALSE);
|
||||
|
||||
for (i = 0; i < _countof(pData->optIcons); i++)
|
||||
{
|
||||
BOOL bHide;
|
||||
|
@ -222,9 +338,86 @@ DesktopOnInitDialog(IN HWND hwndDlg, IN PDESKTOP_DATA pData)
|
|||
pData->bLocalHideChanged[i] = FALSE;
|
||||
}
|
||||
|
||||
pData->iLocalCurIcon = 0;
|
||||
hwndList = GetDlgItem(hwndDlg, IDC_ICONS_LISTVIEW);
|
||||
pData->hLocalImageList = ImageList_Create(GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), ILC_COLOR32 | ILC_MASK, 1, 1);
|
||||
ListView_SetImageList(hwndList, pData->hLocalImageList, LVSIL_NORMAL);
|
||||
|
||||
for (i = 0; i < _countof(IconChange); i++)
|
||||
{
|
||||
TCHAR szClassPath[MAX_PATH];
|
||||
DWORD dwType, cbData;
|
||||
LVITEM lvitem = {0};
|
||||
HICON hIcon;
|
||||
|
||||
StringCchCopy(pData->LocalIcon[i].szPath, _countof(pData->LocalIcon[i].szPath), pData->Icon[i].szPath);
|
||||
pData->bLocalIconChanged[i] = FALSE;
|
||||
|
||||
/* Try loading user-defined desktop icon title */
|
||||
StringCchCopy(szClassPath, _countof(szClassPath), szUserClass);
|
||||
StringCchCat(szClassPath, _countof(szClassPath), IconChange[i].CLSID);
|
||||
cbData = sizeof(pData->LocalIcon[i].szTitle);
|
||||
|
||||
if (SHGetValue(HKEY_CURRENT_USER, szClassPath, IconChange[i].IconName, &dwType,
|
||||
pData->LocalIcon[i].szTitle, &cbData) != ERROR_SUCCESS || dwType != REG_SZ)
|
||||
{
|
||||
/* Try loading system-defined class icon title */
|
||||
StringCchCopy(szClassPath, _countof(szClassPath), szSysClass);
|
||||
StringCchCat(szClassPath, _countof(szClassPath), IconChange[i].CLSID);
|
||||
cbData = sizeof(pData->LocalIcon[i].szTitle);
|
||||
|
||||
if (SHGetValue(HKEY_CLASSES_ROOT, szClassPath, IconChange[i].IconName, &dwType,
|
||||
pData->LocalIcon[i].szTitle, &cbData) != ERROR_SUCCESS || dwType != REG_SZ)
|
||||
{
|
||||
/* Fallback to predefined strings */
|
||||
LoadString(GetModuleHandle(TEXT("shell32.dll")),
|
||||
IconChange[i].TitleId,
|
||||
pData->LocalIcon[i].szTitle,
|
||||
_countof(pData->LocalIcon[i].szTitle));
|
||||
}
|
||||
}
|
||||
|
||||
hIcon = GetIconFromLocation(pData->LocalIcon[i].szPath);
|
||||
|
||||
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
|
||||
lvitem.iItem = i;
|
||||
lvitem.iSubItem = 0;
|
||||
lvitem.pszText = pData->LocalIcon[i].szTitle;
|
||||
lvitem.lParam = (LPARAM)i;
|
||||
|
||||
if (hIcon)
|
||||
{
|
||||
if (pData->hLocalImageList)
|
||||
lvitem.iImage = ImageList_AddIcon(pData->hLocalImageList, hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
}
|
||||
|
||||
if (ListView_InsertItem(hwndList, &lvitem) < 0)
|
||||
continue;
|
||||
|
||||
if (i > 0)
|
||||
continue;
|
||||
|
||||
lvitem.state = LVIS_FOCUSED | LVIS_SELECTED;
|
||||
lvitem.stateMask = LVIS_FOCUSED | LVIS_SELECTED;
|
||||
SendMessage(hwndList, LVM_SETITEMSTATE, 0, (LPARAM)&lvitem);
|
||||
}
|
||||
|
||||
pData->bLocalSettingsChanged = FALSE;
|
||||
}
|
||||
|
||||
static VOID
|
||||
DesktopOnDestroyDialog(IN HWND hwndDlg, IN PDESKTOP_DATA pData)
|
||||
{
|
||||
if (pData->hLocalImageList)
|
||||
{
|
||||
ListView_SetImageList(GetDlgItem(hwndDlg, IDC_ICONS_LISTVIEW), NULL, LVSIL_NORMAL);
|
||||
ImageList_Destroy(pData->hLocalImageList);
|
||||
}
|
||||
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, 0);
|
||||
}
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
DesktopPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
|
||||
|
@ -245,6 +438,12 @@ DesktopPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPara
|
|||
break;
|
||||
}
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
DesktopOnDestroyDialog(hwndDlg, pData);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
DWORD controlId = LOWORD(wParam);
|
||||
|
@ -253,6 +452,7 @@ DesktopPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPara
|
|||
if (command == BN_CLICKED)
|
||||
{
|
||||
UINT i;
|
||||
BOOL bUpdateIcon = FALSE;
|
||||
|
||||
for (i = 0; i < _countof(DesktopIcons); i++)
|
||||
{
|
||||
|
@ -268,6 +468,72 @@ DesktopPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPara
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (controlId == IDC_ICONS_CHANGEICON)
|
||||
{
|
||||
TCHAR szPath[MAX_PATH];
|
||||
INT iIndex;
|
||||
i = pData->iLocalCurIcon;
|
||||
|
||||
ExpandEnvironmentStrings(pData->LocalIcon[i].szPath, szPath, _countof(szPath));
|
||||
iIndex = PathParseIconLocation(szPath);
|
||||
|
||||
if (PickIconDlg(hwndDlg, szPath, _countof(szPath), &iIndex))
|
||||
{
|
||||
StringCchCopy(pData->LocalIcon[i].szPath, _countof(pData->LocalIcon[i].szPath), szPath);
|
||||
PathUnExpandEnvStrings(pData->LocalIcon[i].szPath, szPath, _countof(szPath));
|
||||
|
||||
StringCchPrintf(pData->LocalIcon[i].szPath, _countof(pData->LocalIcon[i].szPath), TEXT("%s,%d"), szPath, iIndex);
|
||||
bUpdateIcon = TRUE;
|
||||
}
|
||||
}
|
||||
else if (controlId == IDC_ICONS_SETDEFAULT)
|
||||
{
|
||||
i = pData->iLocalCurIcon;
|
||||
|
||||
StringCchCopy(pData->LocalIcon[i].szPath, _countof(pData->LocalIcon[i].szPath), pData->DefIcon[i].szPath);
|
||||
bUpdateIcon = TRUE;
|
||||
}
|
||||
|
||||
if (bUpdateIcon)
|
||||
{
|
||||
HWND hwndList = GetDlgItem(hwndDlg, IDC_ICONS_LISTVIEW);
|
||||
HICON hIcon;
|
||||
|
||||
hIcon = GetIconFromLocation(pData->LocalIcon[i].szPath);
|
||||
|
||||
if (hIcon)
|
||||
{
|
||||
if (pData->hLocalImageList)
|
||||
ImageList_ReplaceIcon(pData->hLocalImageList, i, hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
}
|
||||
|
||||
pData->bLocalSettingsChanged =
|
||||
pData->bLocalIconChanged[i] = TRUE;
|
||||
|
||||
InvalidateRect(hwndList, NULL, TRUE);
|
||||
SetFocus(hwndList);
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
LPNMLISTVIEW nm = (LPNMLISTVIEW)lParam;
|
||||
|
||||
switch (nm->hdr.code)
|
||||
{
|
||||
case LVN_ITEMCHANGED:
|
||||
{
|
||||
if ((nm->uNewState & LVIS_SELECTED) == 0)
|
||||
return FALSE;
|
||||
|
||||
pData->iLocalCurIcon = nm->iItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -174,7 +174,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -178,7 +178,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -175,7 +175,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -170,7 +170,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -170,7 +170,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -178,7 +178,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -173,7 +173,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -177,7 +177,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -168,7 +168,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "С&менить значок...", IDC_ICONS_CHANGEICON, 74, 120, 70, 15
|
||||
PUSHBUTTON "&Обычный значок", IDC_ICONS_SETDEFAULT, 148, 120, 70, 15
|
||||
END
|
||||
|
|
|
@ -170,7 +170,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -172,7 +172,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -170,7 +170,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -170,7 +170,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -176,7 +176,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -178,7 +178,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -176,7 +176,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
|
@ -177,7 +177,7 @@ BEGIN
|
|||
BS_AUTOCHECKBOX | WS_TABSTOP, 116, 28, 100, 12
|
||||
CONTROL "", IDC_ICONS_LISTVIEW, "SysListView32",
|
||||
LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_HSCROLL,
|
||||
6, 60, 212, 54
|
||||
6, 60, 212, 56
|
||||
PUSHBUTTON "C&hange Icon...", IDC_ICONS_CHANGEICON, 86, 120, 64, 15
|
||||
PUSHBUTTON "Re&store Default", IDC_ICONS_SETDEFAULT, 154, 120, 64, 15
|
||||
END
|
||||
|
|
Loading…
Reference in a new issue