https://git.reactos.org/?p=reactos.git;a=commitdiff;h=ed1c6bb0060d06f4c0167…
commit ed1c6bb0060d06f4c0167d9c2d732f4dc2b4cce4
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Thu May 24 06:25:11 2018 +0900
Commit: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed May 23 23:25:11 2018 +0200
[SHELL32] Add icons to the 'File Types' listview (#557)
This commit adds icons to the listview of the 'File Types' property sheet of
Folder Options.
CORE-12906
---
dll/win32/shell32/dialogs/folder_options.cpp | 411 ++++++++++++++++++++-------
dll/win32/shell32/lang/bg-BG.rc | 4 +-
dll/win32/shell32/lang/ca-ES.rc | 4 +-
dll/win32/shell32/lang/cs-CZ.rc | 4 +-
dll/win32/shell32/lang/da-DK.rc | 4 +-
dll/win32/shell32/lang/de-DE.rc | 4 +-
dll/win32/shell32/lang/el-GR.rc | 4 +-
dll/win32/shell32/lang/en-GB.rc | 4 +-
dll/win32/shell32/lang/en-US.rc | 4 +-
dll/win32/shell32/lang/es-ES.rc | 4 +-
dll/win32/shell32/lang/et-EE.rc | 4 +-
dll/win32/shell32/lang/fi-FI.rc | 4 +-
dll/win32/shell32/lang/fr-FR.rc | 4 +-
dll/win32/shell32/lang/he-IL.rc | 4 +-
dll/win32/shell32/lang/hu-HU.rc | 4 +-
dll/win32/shell32/lang/it-IT.rc | 4 +-
dll/win32/shell32/lang/ja-JP.rc | 2 +-
dll/win32/shell32/lang/ko-KR.rc | 4 +-
dll/win32/shell32/lang/nl-NL.rc | 4 +-
dll/win32/shell32/lang/no-NO.rc | 4 +-
dll/win32/shell32/lang/pl-PL.rc | 4 +-
dll/win32/shell32/lang/pt-BR.rc | 4 +-
dll/win32/shell32/lang/pt-PT.rc | 4 +-
dll/win32/shell32/lang/ro-RO.rc | 4 +-
dll/win32/shell32/lang/ru-RU.rc | 4 +-
dll/win32/shell32/lang/sk-SK.rc | 4 +-
dll/win32/shell32/lang/sl-SI.rc | 4 +-
dll/win32/shell32/lang/sq-AL.rc | 4 +-
dll/win32/shell32/lang/sv-SE.rc | 4 +-
dll/win32/shell32/lang/tr-TR.rc | 4 +-
dll/win32/shell32/lang/uk-UA.rc | 4 +-
dll/win32/shell32/lang/zh-CN.rc | 4 +-
dll/win32/shell32/lang/zh-TW.rc | 4 +-
dll/win32/shell32/shresdef.h | 1 +
34 files changed, 369 insertions(+), 169 deletions(-)
diff --git a/dll/win32/shell32/dialogs/folder_options.cpp
b/dll/win32/shell32/dialogs/folder_options.cpp
index cffee8bee1..29320702a6 100644
--- a/dll/win32/shell32/dialogs/folder_options.cpp
+++ b/dll/win32/shell32/dialogs/folder_options.cpp
@@ -37,6 +37,10 @@ typedef struct
WCHAR FileDescription[100];
WCHAR ClassKey[MAX_PATH];
DWORD EditFlags;
+ WCHAR AppName[64];
+ HICON hIconLarge;
+ HICON hIconSmall;
+ WCHAR ProgramPath[MAX_PATH];
} FOLDER_FILE_TYPE_ENTRY, *PFOLDER_FILE_TYPE_ENTRY;
// uniquely-defined icon entry for Advanced Settings
@@ -174,6 +178,34 @@ Create24BppBitmap(HDC hDC, INT cx, INT cy)
return hbm;
}
+static HBITMAP BitmapFromIcon(HICON hIcon, INT cx, INT cy)
+{
+ HDC hDC = CreateCompatibleDC(NULL);
+ if (!hDC)
+ return NULL;
+
+ HBITMAP hbm = Create24BppBitmap(hDC, cx, cy);
+ if (!hbm)
+ {
+ DeleteDC(hDC);
+ return NULL;
+ }
+
+ HGDIOBJ hbmOld = SelectObject(hDC, hbm);
+ {
+ RECT rc = { 0, 0, cx, cy };
+ FillRect(hDC, &rc, HBRUSH(COLOR_3DFACE + 1));
+ if (hIcon)
+ {
+ DrawIconEx(hDC, 0, 0, hIcon, cx, cy, 0, NULL, DI_NORMAL);
+ }
+ }
+ SelectObject(hDC, hbmOld);
+ DeleteDC(hDC);
+
+ return hbm;
+}
+
static HBITMAP
CreateCheckImage(HDC hDC, BOOL bCheck, BOOL bEnabled = TRUE)
{
@@ -1338,44 +1370,148 @@ InitializeFileTypesListCtrlColumns(HWND hDlgCtrl)
SendMessage(hDlgCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
}
-INT
-FindItem(HWND hDlgCtrl, WCHAR * ItemName)
-{
- LVFINDINFOW findInfo;
- ZeroMemory(&findInfo, sizeof(LVFINDINFOW));
-
- findInfo.flags = LVFI_STRING;
- findInfo.psz = ItemName;
- return ListView_FindItem(hDlgCtrl, 0, &findInfo);
-}
-
static BOOL
DeleteExt(HWND hwndDlg, LPCWSTR pszExt)
{
if (*pszExt != L'.')
return FALSE;
+ // open ".ext" key
HKEY hKey;
- LONG nResult = RegOpenKeyExW(HKEY_CLASSES_ROOT, pszExt, 0, KEY_READ, &hKey);
- if (nResult != ERROR_SUCCESS)
+ if (RegOpenKeyExW(HKEY_CLASSES_ROOT, pszExt, 0, KEY_READ, &hKey) !=
ERROR_SUCCESS)
return FALSE;
- WCHAR szValue[64];
+ // query "extfile" key name
+ WCHAR szValue[64] = { 0 };
DWORD cbValue = sizeof(szValue);
- nResult = RegQueryValueExW(hKey, NULL, NULL, NULL, LPBYTE(szValue), &cbValue);
+ RegQueryValueExW(hKey, NULL, NULL, NULL, LPBYTE(szValue), &cbValue);
RegCloseKey(hKey);
- if (nResult != ERROR_SUCCESS)
- return FALSE;
+ // delete "extfile" key (if any)
if (szValue[0])
SHDeleteKeyW(HKEY_CLASSES_ROOT, szValue);
+ // delete ".ext" key
return SHDeleteKeyW(HKEY_CLASSES_ROOT, pszExt) == ERROR_SUCCESS;
}
-static
-VOID
-InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR * szFile)
+static inline HICON
+DoExtractIcon(PFOLDER_FILE_TYPE_ENTRY Entry, LPCWSTR IconPath,
+ INT iIndex = 0, BOOL bSmall = FALSE)
+{
+ HICON hIcon = NULL;
+
+ if (iIndex < 0)
+ {
+ // A negative value will be interpreted as a negated resource ID.
+ iIndex = -iIndex;
+
+ INT cx, cy;
+ HINSTANCE hDLL = LoadLibraryExW(IconPath, NULL, LOAD_LIBRARY_AS_DATAFILE);
+ if (bSmall)
+ {
+ cx = GetSystemMetrics(SM_CXSMICON);
+ cy = GetSystemMetrics(SM_CYSMICON);
+ }
+ else
+ {
+ cx = GetSystemMetrics(SM_CXICON);
+ cy = GetSystemMetrics(SM_CYICON);
+ }
+ hIcon = HICON(LoadImageW(hDLL, MAKEINTRESOURCEW(iIndex), IMAGE_ICON,
+ cx, cy, 0));
+ FreeLibrary(hDLL);
+ }
+ else
+ {
+ // A positive value is icon index.
+ if (bSmall)
+ ExtractIconExW(IconPath, iIndex, NULL, &hIcon, 1);
+ else
+ ExtractIconExW(IconPath, iIndex, &hIcon, NULL, 1);
+ }
+ return hIcon;
+}
+
+static void
+DoFileTypeIconLocation(PFOLDER_FILE_TYPE_ENTRY Entry, LPCWSTR IconLocation)
+{
+ // Expand the REG_EXPAND_SZ string by environment variables
+ WCHAR szLocation[MAX_PATH + 32];
+ if (!ExpandEnvironmentStringsW(IconLocation, szLocation, _countof(szLocation)))
+ {
+ return;
+ }
+
+ INT nIndex = PathParseIconLocationW(szLocation);
+ Entry->hIconLarge = DoExtractIcon(Entry, szLocation, nIndex, FALSE);
+ Entry->hIconSmall = DoExtractIcon(Entry, szLocation, nIndex, TRUE);
+}
+
+static BOOL
+GetFileTypeIconsEx(PFOLDER_FILE_TYPE_ENTRY Entry, LPCWSTR IconLocation)
+{
+ Entry->hIconLarge = Entry->hIconSmall = NULL;
+
+ if (lstrcmpiW(Entry->FileExtension, L".exe") == 0 ||
+ lstrcmpiW(Entry->FileExtension, L".scr") == 0)
+ {
+ // It's an executable
+ Entry->hIconLarge = LoadIconW(shell32_hInstance,
MAKEINTRESOURCEW(IDI_SHELL_EXE));
+ Entry->hIconSmall = HICON(LoadImageW(shell32_hInstance,
MAKEINTRESOURCEW(IDI_SHELL_EXE), IMAGE_ICON,
+ GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0));
+ }
+ else if (lstrcmpW(IconLocation, L"%1") == 0)
+ {
+ return FALSE; // self icon
+ }
+ else
+ {
+ DoFileTypeIconLocation(Entry, IconLocation);
+ }
+
+ return Entry->hIconLarge && Entry->hIconSmall;
+}
+
+static BOOL
+GetFileTypeIconsByKey(HKEY hKey, PFOLDER_FILE_TYPE_ENTRY Entry)
+{
+ Entry->hIconLarge = Entry->hIconSmall = NULL;
+
+ // Open the "DefaultIcon" registry key
+ HKEY hDefIconKey;
+ LONG nResult = RegOpenKeyExW(hKey, L"DefaultIcon", 0, KEY_READ,
&hDefIconKey);
+ if (nResult != ERROR_SUCCESS)
+ return FALSE;
+
+ // Get the icon location
+ WCHAR szLocation[MAX_PATH + 32] = { 0 };
+ DWORD dwSize = sizeof(szLocation);
+ nResult = RegQueryValueExW(hDefIconKey, NULL, NULL, NULL, LPBYTE(szLocation),
&dwSize);
+
+ RegCloseKey(hDefIconKey);
+
+ if (nResult != ERROR_SUCCESS || szLocation[0] == 0)
+ return FALSE;
+
+ return GetFileTypeIconsEx(Entry, szLocation);
+}
+
+static BOOL
+QueryFileDescription(LPCWSTR ProgramPath, LPWSTR pszName, INT cchName)
+{
+ SHFILEINFOW FileInfo = { 0 };
+ if (SHGetFileInfoW(ProgramPath, 0, &FileInfo, sizeof(FileInfo),
SHGFI_DISPLAYNAME))
+ {
+ StringCchCopyW(pszName, cchName, FileInfo.szDisplayName);
+ return TRUE;
+ }
+
+ return !!GetFileTitleW(ProgramPath, pszName, cchName);
+}
+
+static BOOL
+InsertFileType(HWND hListView, LPCWSTR szName, INT iItem, LPCWSTR szFile)
{
PFOLDER_FILE_TYPE_ENTRY Entry;
HKEY hKey;
@@ -1386,20 +1522,23 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR *
szFile)
if (szName[0] != L'.')
{
/* FIXME handle URL protocol handlers */
- return;
+ return FALSE;
}
+ // get imagelists of listview
+ HIMAGELIST himlLarge = ListView_GetImageList(hListView, LVSIL_NORMAL);
+ HIMAGELIST himlSmall = ListView_GetImageList(hListView, LVSIL_SMALL);
+
/* allocate file type entry */
Entry = (PFOLDER_FILE_TYPE_ENTRY)HeapAlloc(GetProcessHeap(), 0,
sizeof(FOLDER_FILE_TYPE_ENTRY));
-
if (!Entry)
- return;
+ return FALSE;
/* open key */
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, szName, 0, KEY_READ, &hKey) !=
ERROR_SUCCESS)
{
HeapFree(GetProcessHeap(), 0, Entry);
- return;
+ return FALSE;
}
/* FIXME check for duplicates */
@@ -1443,20 +1582,54 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR *
szFile)
RegQueryValueExW(hKey, L"EditFlags", NULL, NULL,
(LPBYTE)&Entry->EditFlags, &dwSize);
}
+ /* convert extension to upper case */
+ wcscpy(Entry->FileExtension, szName);
+ _wcsupr(Entry->FileExtension);
+
+ /* get icon */
+ if (!GetFileTypeIconsByKey(hKey, Entry))
+ {
+ // set default icon
+ Entry->hIconLarge = LoadIconW(shell32_hInstance,
MAKEINTRESOURCEW(IDI_SHELL_FOLDER_OPTIONS));
+ INT cxSmall = GetSystemMetrics(SM_CXSMICON);
+ INT cySmall = GetSystemMetrics(SM_CYSMICON);
+ Entry->hIconSmall = HICON(LoadImageW(shell32_hInstance,
MAKEINTRESOURCEW(IDI_SHELL_FOLDER_OPTIONS),
+ IMAGE_ICON, cxSmall, cySmall, 0));
+ }
+
/* close key */
RegCloseKey(hKey);
+ // get program path and app name
+ DWORD cch = _countof(Entry->ProgramPath);
+ if (S_OK == AssocQueryStringW(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE,
+ Entry->FileExtension, NULL, Entry->ProgramPath,
&cch))
+ {
+ QueryFileDescription(Entry->ProgramPath, Entry->AppName,
_countof(Entry->AppName));
+ }
+ else
+ {
+ Entry->ProgramPath[0] = Entry->AppName[0] = 0;
+ }
+
+ // add icon to imagelist
+ INT iLargeImage = -1, iSmallImage = -1;
+ if (Entry->hIconLarge && Entry->hIconSmall)
+ {
+ iLargeImage = ImageList_AddIcon(himlLarge, Entry->hIconLarge);
+ iSmallImage = ImageList_AddIcon(himlSmall, Entry->hIconSmall);
+ ASSERT(iLargeImage == iSmallImage);
+ }
+
/* Do not add excluded entries */
if (Entry->EditFlags & 0x00000001) //FTA_Exclude
{
+ DestroyIcon(Entry->hIconLarge);
+ DestroyIcon(Entry->hIconSmall);
HeapFree(GetProcessHeap(), 0, Entry);
- return;
+ return FALSE;
}
- /* convert extension to upper case */
- wcscpy(Entry->FileExtension, szName);
- _wcsupr(Entry->FileExtension);
-
if (!Entry->FileDescription[0])
{
/* construct default 'FileExtensionFile' by formatting the uppercase
extension
@@ -1466,21 +1639,22 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR *
szFile)
}
ZeroMemory(&lvItem, sizeof(LVITEMW));
- lvItem.mask = LVIF_TEXT | LVIF_PARAM;
+ lvItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
lvItem.iSubItem = 0;
lvItem.pszText = &Entry->FileExtension[1];
- lvItem.iItem = *iItem;
+ lvItem.iItem = iItem;
lvItem.lParam = (LPARAM)Entry;
- (void)SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&lvItem);
+ lvItem.iImage = iSmallImage;
+ SendMessageW(hListView, LVM_INSERTITEMW, 0, (LPARAM)&lvItem);
ZeroMemory(&lvItem, sizeof(LVITEMW));
lvItem.mask = LVIF_TEXT;
lvItem.pszText = Entry->FileDescription;
- lvItem.iItem = *iItem;
+ lvItem.iItem = iItem;
lvItem.iSubItem = 1;
- ListView_SetItem(hDlgCtrl, &lvItem);
+ ListView_SetItem(hListView, &lvItem);
- (*iItem)++;
+ return TRUE;
}
static
@@ -1512,8 +1686,19 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
DWORD dwName;
LVITEMW lvItem;
INT iItem = 0;
+ HIMAGELIST himlLarge, himlSmall;
+
+ // create imagelists
+ himlLarge = ImageList_Create(GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON),
+ ILC_COLOR32 | ILC_MASK, 256, 20);
+ himlSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
+ ILC_COLOR32 | ILC_MASK, 256, 20);
+
+ // set imagelists to listview.
+ hDlgCtrl = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
+ ListView_SetImageList(hDlgCtrl, himlLarge, LVSIL_NORMAL);
+ ListView_SetImageList(hDlgCtrl, himlSmall, LVSIL_SMALL);
- hDlgCtrl = GetDlgItem(hwndDlg, 14000);
InitializeFileTypesListCtrlColumns(hDlgCtrl);
szFile[0] = 0;
@@ -1528,7 +1713,8 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
while (RegEnumKeyExW(HKEY_CLASSES_ROOT, dwIndex++, szName, &dwName, NULL, NULL,
NULL, NULL) == ERROR_SUCCESS)
{
- InsertFileType(hDlgCtrl, szName, &iItem, szFile);
+ if (InsertFileType(hDlgCtrl, szName, iItem, szFile))
+ ++iItem;
dwName = _countof(szName);
}
@@ -1553,30 +1739,21 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
}
-static
+static inline
PFOLDER_FILE_TYPE_ENTRY
-FindSelectedItem(
- HWND hDlgCtrl)
+GetListViewEntry(HWND hListView, INT iItem = -1)
{
- UINT Count, Index;
- LVITEMW lvItem;
-
- Count = ListView_GetItemCount(hDlgCtrl);
-
- for (Index = 0; Index < Count; Index++)
+ if (iItem == -1)
{
- ZeroMemory(&lvItem, sizeof(LVITEM));
- lvItem.mask = LVIF_PARAM | LVIF_STATE;
- lvItem.iItem = Index;
- lvItem.stateMask = (UINT) - 1;
-
- if (ListView_GetItem(hDlgCtrl, &lvItem))
- {
- if (lvItem.state & LVIS_SELECTED)
- return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
- }
+ iItem = ListView_GetNextItem(hListView, -1, LVNI_SELECTED);
+ if (iItem == -1)
+ return NULL;
}
+ LV_ITEMW lvItem = { LVIF_PARAM, iItem };
+ if (ListView_GetItem(hListView, &lvItem))
+ return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
+
return NULL;
}
@@ -1879,11 +2056,11 @@ FileTypesDlg_AddExt(HWND hwndDlg, LPCWSTR pszExt, LPCWSTR
pszFileType)
szFile[_countof(szFileFormat) - 1] = 0;
StringCchPrintfW(szFile, _countof(szFile), szFileFormat, &szExt[1]);
- // Insert an item to listview
+ // Insert an item to the listview
HWND hListView = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
INT iItem = ListView_GetItemCount(hListView);
- INT iItemCopy = iItem;
- InsertFileType(hListView, szExt, &iItemCopy, szFile);
+ if (!InsertFileType(hListView, szExt, iItem, szFile))
+ return FALSE;
LV_ITEM item;
ZeroMemory(&item, sizeof(item));
@@ -1917,12 +2094,54 @@ FileTypesDlg_RemoveExt(HWND hwndDlg)
ListView_GetItemText(hListView, iItem, 0, &szExt[1], _countof(szExt) - 1);
CharLowerW(szExt);
- if (DeleteExt(hwndDlg, szExt))
+ DeleteExt(hwndDlg, szExt);
+ ListView_DeleteItem(hListView, iItem);
+ return TRUE;
+}
+
+static void
+FileTypesDlg_OnItemChanging(HWND hwndDlg, PFOLDER_FILE_TYPE_ENTRY pEntry)
+{
+ WCHAR Buffer[255];
+ static HBITMAP s_hbmProgram = NULL;
+
+ // format buffer and set groupbox text
+ CStringW strFormat(MAKEINTRESOURCEW(IDS_FILE_DETAILS));
+ StringCchPrintfW(Buffer, _countof(Buffer), strFormat,
&pEntry->FileExtension[1]);
+ SetDlgItemTextW(hwndDlg, IDC_FILETYPES_DETAILS_GROUPBOX, Buffer);
+
+ // format buffer and set description
+ strFormat.LoadString(IDS_FILE_DETAILSADV);
+ StringCchPrintfW(Buffer, _countof(Buffer), strFormat,
+ &pEntry->FileExtension[1], pEntry->FileDescription,
+ pEntry->FileDescription);
+ SetDlgItemTextW(hwndDlg, IDC_FILETYPES_DESCRIPTION, Buffer);
+
+ // delete previous program image
+ if (s_hbmProgram)
{
- ListView_DeleteItem(hListView, iItem);
- return TRUE;
+ DeleteObject(s_hbmProgram);
+ s_hbmProgram = NULL;
}
- return FALSE;
+
+ // set program image
+ HICON hIconSm = NULL;
+ ExtractIconExW(pEntry->ProgramPath, 0, NULL, &hIconSm, 1);
+ s_hbmProgram = BitmapFromIcon(hIconSm, 16, 16);
+ DestroyIcon(hIconSm);
+ SendDlgItemMessageW(hwndDlg, IDC_FILETYPES_ICON, STM_SETIMAGE, IMAGE_BITMAP,
LPARAM(s_hbmProgram));
+
+ // set program name
+ if (pEntry->AppName[0])
+ SetDlgItemTextW(hwndDlg, IDC_FILETYPES_APPNAME, pEntry->AppName);
+ else
+ SetDlgItemTextW(hwndDlg, IDC_FILETYPES_APPNAME, L"ReactOS");
+
+ /* Enable the Delete button */
+ if (pEntry->EditFlags & 0x00000010) // FTA_NoRemove
+ EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), FALSE);
+ else
+ EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), TRUE);
}
// IDD_FOLDER_OPTIONS_FILETYPES dialog
@@ -1935,8 +2154,6 @@ FolderOptionsFileTypesDlg(
LPARAM lParam)
{
LPNMLISTVIEW lppl;
- LVITEMW lvItem;
- WCHAR Buffer[255], FormatBuffer[255];
PFOLDER_FILE_TYPE_ENTRY pItem;
OPENASINFO Info;
NEWEXT_DIALOG newext;
@@ -1974,7 +2191,7 @@ FolderOptionsFileTypesDlg(
}
break;
case IDC_FILETYPES_CHANGE:
- pItem = FindSelectedItem(GetDlgItem(hwndDlg,
IDC_FILETYPES_LISTVIEW));
+ pItem = GetListViewEntry(GetDlgItem(hwndDlg,
IDC_FILETYPES_LISTVIEW));
if (pItem)
{
Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT;
@@ -1987,54 +2204,36 @@ FolderOptionsFileTypesDlg(
case WM_NOTIFY:
lppl = (LPNMLISTVIEW) lParam;
-
- if (lppl->hdr.code == LVN_ITEMCHANGING)
+ switch (lppl->hdr.code)
{
- ZeroMemory(&lvItem, sizeof(LVITEM));
- lvItem.mask = LVIF_PARAM;
- lvItem.iItem = lppl->iItem;
- if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0,
(LPARAM)&lvItem))
- return TRUE;
-
- pItem = (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
- if (!pItem)
- return TRUE;
+ case LVN_DELETEALLITEMS:
+ return FALSE; // send LVN_DELETEITEM
- if (!(lppl->uOldState & LVIS_FOCUSED) &&
(lppl->uNewState & LVIS_FOCUSED))
- {
- /* new focused item */
- if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILS, FormatBuffer,
sizeof(FormatBuffer) / sizeof(WCHAR)))
+ case LVN_DELETEITEM:
+ pItem = GetListViewEntry(lppl->hdr.hwndFrom, lppl->iItem);
+ if (pItem)
{
- /* use default english format string */
- wcscpy(FormatBuffer, L"Details for '%s'
extension");
+ DestroyIcon(pItem->hIconLarge);
+ DestroyIcon(pItem->hIconSmall);
+ HeapFree(GetProcessHeap(), 0, pItem);
}
+ return FALSE;
- /* format buffer */
- swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1]);
- /* update dialog */
- SetDlgItemTextW(hwndDlg, IDC_FILETYPES_DETAILS_GROUPBOX, Buffer);
+ case LVN_ITEMCHANGING:
+ pItem = GetListViewEntry(lppl->hdr.hwndFrom, lppl->iItem);
+ if (!pItem)
+ return TRUE;
- if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILSADV,
FormatBuffer, sizeof(FormatBuffer) / sizeof(WCHAR)))
+ if (!(lppl->uOldState & LVIS_FOCUSED) &&
(lppl->uNewState & LVIS_FOCUSED))
{
- /* use default english format string */
- wcscpy(FormatBuffer, L"Files with extension '%s' are
of type '%s'. To change settings that affect all '%s' files, click
Advanced.");
+ FileTypesDlg_OnItemChanging(hwndDlg, pItem);
}
- /* format buffer */
- swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1],
&pItem->FileDescription[0], &pItem->FileDescription[0]);
- /* update dialog */
- SetDlgItemTextW(hwndDlg, IDC_FILETYPES_DESCRIPTION, Buffer);
-
- /* Enable the Delete button */
- if (pItem->EditFlags & 0x00000010) // FTA_NoRemove
- EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), FALSE);
- else
- EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), TRUE);
- }
- }
- else if (lppl->hdr.code == PSN_SETACTIVE)
- {
- /* On page activation, set the focus to the listview */
- SetFocus(GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW));
+ break;
+
+ case PSN_SETACTIVE:
+ /* On page activation, set the focus to the listview */
+ SetFocus(GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW));
+ break;
}
break;
}
diff --git a/dll/win32/shell32/lang/bg-BG.rc b/dll/win32/shell32/lang/bg-BG.rc
index 94daa0323b..d6b3d0023e 100644
--- a/dll/win32/shell32/lang/bg-BG.rc
+++ b/dll/win32/shell32/lang/bg-BG.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "Из&триване", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Подробности за разширение '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Отваряне с:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Име на приложение", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Име на приложение", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "Про&мяна...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 32
PUSHBUTTON "Раз&ширени", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/ca-ES.rc b/dll/win32/shell32/lang/ca-ES.rc
index 53c5ebacfb..7b4d4defb0 100644
--- a/dll/win32/shell32/lang/ca-ES.rc
+++ b/dll/win32/shell32/lang/ca-ES.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/cs-CZ.rc b/dll/win32/shell32/lang/cs-CZ.rc
index c7494ebf33..f4d3515946 100644
--- a/dll/win32/shell32/lang/cs-CZ.rc
+++ b/dll/win32/shell32/lang/cs-CZ.rc
@@ -463,8 +463,8 @@ BEGIN
PUSHBUTTON "O&dstranit", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Podrobnosti pro typ souborů '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Otevírat v:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Změnit...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "&Pokročilé", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/da-DK.rc b/dll/win32/shell32/lang/da-DK.rc
index 501648452c..87010cbcb3 100644
--- a/dll/win32/shell32/lang/da-DK.rc
+++ b/dll/win32/shell32/lang/da-DK.rc
@@ -463,8 +463,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/de-DE.rc b/dll/win32/shell32/lang/de-DE.rc
index 5bf042e98f..ab0ff0db71 100644
--- a/dll/win32/shell32/lang/de-DE.rc
+++ b/dll/win32/shell32/lang/de-DE.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Löschen", IDC_FILETYPES_DELETE, 200, 140, 55, 14,
WS_TABSTOP
GROUPBOX "Details zum Dateityp '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 170, 249, 70
LTEXT "Öffnen mit:", -1, 12, 180, 40, 10
- //ICON
- LTEXT "Name", IDC_FILETYPES_APPNAME, 100, 180, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Name", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "Än&dern...", IDC_FILETYPES_CHANGE, 200, 180, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 195, 160, 30
PUSHBUTTON "&Erweitert", IDC_FILETYPES_ADVANCED, 200, 215, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/el-GR.rc b/dll/win32/shell32/lang/el-GR.rc
index 635fce0c1f..7e288bd377 100644
--- a/dll/win32/shell32/lang/el-GR.rc
+++ b/dll/win32/shell32/lang/el-GR.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/en-GB.rc b/dll/win32/shell32/lang/en-GB.rc
index 4cd9e85dcc..338628a052 100644
--- a/dll/win32/shell32/lang/en-GB.rc
+++ b/dll/win32/shell32/lang/en-GB.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/en-US.rc b/dll/win32/shell32/lang/en-US.rc
index 5d327f02f3..2d15ab52a0 100644
--- a/dll/win32/shell32/lang/en-US.rc
+++ b/dll/win32/shell32/lang/en-US.rc
@@ -458,8 +458,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/es-ES.rc b/dll/win32/shell32/lang/es-ES.rc
index 4d86e8c865..d82117f568 100644
--- a/dll/win32/shell32/lang/es-ES.rc
+++ b/dll/win32/shell32/lang/es-ES.rc
@@ -459,8 +459,8 @@ BEGIN
PUSHBUTTON "Eli&minar", IDC_FILETYPES_DELETE, 230, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Detalles para el tipo de archivo «%s»",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 279, 100
LTEXT "Se abre con:", -1, 12, 140, 50, 10
- //ICON
- LTEXT "Aplicación", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Aplicación", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "Cam&biar...", IDC_FILETYPES_CHANGE, 230, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 165, 220, 30
PUSHBUTTON "Opciones avanza&das", IDC_FILETYPES_ADVANCED, 190, 213, 90,
14, WS_TABSTOP
diff --git a/dll/win32/shell32/lang/et-EE.rc b/dll/win32/shell32/lang/et-EE.rc
index 7fe739bcf2..e8782c9a44 100644
--- a/dll/win32/shell32/lang/et-EE.rc
+++ b/dll/win32/shell32/lang/et-EE.rc
@@ -465,8 +465,8 @@ BEGIN
PUSHBUTTON "&Kustuta", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Failitüübi '%s' üksikasjad",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Avamisprogramm:", -1, 12, 140, 60, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Muuda...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "&Täpsemalt", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/fi-FI.rc b/dll/win32/shell32/lang/fi-FI.rc
index df2a16de1b..5f3c1d0707 100644
--- a/dll/win32/shell32/lang/fi-FI.rc
+++ b/dll/win32/shell32/lang/fi-FI.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/fr-FR.rc b/dll/win32/shell32/lang/fr-FR.rc
index a1d20cbba3..b819825c50 100644
--- a/dll/win32/shell32/lang/fr-FR.rc
+++ b/dll/win32/shell32/lang/fr-FR.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "Supprimer", IDC_FILETYPES_DELETE, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Détails concernant l'extension '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Ouvrir avec :", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Nom de l'application", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Nom de l'application", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Modifier...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "A&vancé", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/he-IL.rc b/dll/win32/shell32/lang/he-IL.rc
index 85a108337b..d09efde782 100644
--- a/dll/win32/shell32/lang/he-IL.rc
+++ b/dll/win32/shell32/lang/he-IL.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/hu-HU.rc b/dll/win32/shell32/lang/hu-HU.rc
index 38521334e2..5c7f7c3311 100644
--- a/dll/win32/shell32/lang/hu-HU.rc
+++ b/dll/win32/shell32/lang/hu-HU.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/it-IT.rc b/dll/win32/shell32/lang/it-IT.rc
index 82feea8e7a..69d937088e 100644
--- a/dll/win32/shell32/lang/it-IT.rc
+++ b/dll/win32/shell32/lang/it-IT.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Cancella", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Dettagli per l'estensione '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Apri con:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Nome", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Nome", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Cambia...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "A&vanzate", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/ja-JP.rc b/dll/win32/shell32/lang/ja-JP.rc
index e21a079cc7..4468fe73ad 100644
--- a/dll/win32/shell32/lang/ja-JP.rc
+++ b/dll/win32/shell32/lang/ja-JP.rc
@@ -457,7 +457,7 @@ BEGIN
PUSHBUTTON "削除(&D)", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "拡張子 '%s' の詳細", IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130,
249, 70
LTEXT "開くプログラム:", -1, 12, 140, 80, 10
- //ICON
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
LTEXT "アプリ名", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "変更(&C)...", IDC_FILETYPES_CHANGE, 180, 140, 75, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 165, 40
diff --git a/dll/win32/shell32/lang/ko-KR.rc b/dll/win32/shell32/lang/ko-KR.rc
index fa1c1b97d2..7d4ee74b81 100644
--- a/dll/win32/shell32/lang/ko-KR.rc
+++ b/dll/win32/shell32/lang/ko-KR.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/nl-NL.rc b/dll/win32/shell32/lang/nl-NL.rc
index 1e46a4c924..e0968c2f9a 100644
--- a/dll/win32/shell32/lang/nl-NL.rc
+++ b/dll/win32/shell32/lang/nl-NL.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/no-NO.rc b/dll/win32/shell32/lang/no-NO.rc
index 223977332a..2fc75b45fd 100644
--- a/dll/win32/shell32/lang/no-NO.rc
+++ b/dll/win32/shell32/lang/no-NO.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Slett", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Detailjer for '%s' utvidelser",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Åpne med:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Endre...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Av&ansert", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/pl-PL.rc b/dll/win32/shell32/lang/pl-PL.rc
index e3a06f2487..82d94ab242 100644
--- a/dll/win32/shell32/lang/pl-PL.rc
+++ b/dll/win32/shell32/lang/pl-PL.rc
@@ -462,8 +462,8 @@ BEGIN
PUSHBUTTON "&Usuń", IDC_FILETYPES_DELETE, 195, 110, 60, 14, WS_TABSTOP
GROUPBOX "Szczegóły dla rozszerzenia '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Otwiera z:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Nazwa Aplikacji", IDC_FILETYPES_APPNAME, 50, 140, 80, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Nazwa Aplikacji", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "Z&mień", IDC_FILETYPES_CHANGE, 190, 140, 60, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Zaawa&nsowane", IDC_FILETYPES_ADVANCED, 190, 175, 60, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/pt-BR.rc b/dll/win32/shell32/lang/pt-BR.rc
index 19c7f068ba..0a14d66235 100644
--- a/dll/win32/shell32/lang/pt-BR.rc
+++ b/dll/win32/shell32/lang/pt-BR.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Apagar", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Detalhes para extensão '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Abrir com:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "Alt&erar...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "A&vançado", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/pt-PT.rc b/dll/win32/shell32/lang/pt-PT.rc
index d15c6912ce..a7da71e7a5 100644
--- a/dll/win32/shell32/lang/pt-PT.rc
+++ b/dll/win32/shell32/lang/pt-PT.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Apagar", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Detalhes para '%s' extensão",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Abre com:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appnome", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appnome", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Mudar...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "A&vançado", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/ro-RO.rc b/dll/win32/shell32/lang/ro-RO.rc
index 54b0ebf0b8..3243fc2081 100644
--- a/dll/win32/shell32/lang/ro-RO.rc
+++ b/dll/win32/shell32/lang/ro-RO.rc
@@ -459,8 +459,8 @@ BEGIN
PUSHBUTTON "&Elimină", IDC_FILETYPES_DELETE, 200, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Detalii pentru extensia „%s”", IDC_FILETYPES_DETAILS_GROUPBOX, 7,
130, 249, 70
LTEXT "Va fi deschis cu:", -1, 22, 140, 50, 10
- //ICON
- LTEXT "Nume aplicație", IDC_FILETYPES_APPNAME, 100, 140, 75, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Nume aplicație", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "Spe&cificare…", IDC_FILETYPES_CHANGE, 190, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 22, 155, 160, 35
PUSHBUTTON "A&vansate…", IDC_FILETYPES_ADVANCED, 190, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/ru-RU.rc b/dll/win32/shell32/lang/ru-RU.rc
index e924f7b572..2e7c8e5afc 100644
--- a/dll/win32/shell32/lang/ru-RU.rc
+++ b/dll/win32/shell32/lang/ru-RU.rc
@@ -459,8 +459,8 @@ BEGIN
PUSHBUTTON "&Удалить", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Описание расширения '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Открывать с:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Приложение", IDC_FILETYPES_APPNAME, 100, 140, 45, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Приложение", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Изменить...", IDC_FILETYPES_CHANGE, 180, 140, 65, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "До&полнительно", IDC_FILETYPES_ADVANCED, 180, 175, 65, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/sk-SK.rc b/dll/win32/shell32/lang/sk-SK.rc
index acc1f32579..c06885070c 100644
--- a/dll/win32/shell32/lang/sk-SK.rc
+++ b/dll/win32/shell32/lang/sk-SK.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "O&dstrániť", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Zmeniť...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/sl-SI.rc b/dll/win32/shell32/lang/sl-SI.rc
index 8beba1374d..d1c20fddbd 100644
--- a/dll/win32/shell32/lang/sl-SI.rc
+++ b/dll/win32/shell32/lang/sl-SI.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- ICON IDI_SHELL_PROGRAMS_FOLDER2, IDC_STATIC, 20, 20, 21, 20
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/sq-AL.rc b/dll/win32/shell32/lang/sq-AL.rc
index 93e14c424f..8c8a17b8f5 100644
--- a/dll/win32/shell32/lang/sq-AL.rc
+++ b/dll/win32/shell32/lang/sq-AL.rc
@@ -461,8 +461,8 @@ BEGIN
PUSHBUTTON "&Fshi", IDC_FILETYPES_DELETE, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detaje për '%s' zgjerim", IDC_FILETYPES_DETAILS_GROUPBOX,
7, 130, 249, 70
LTEXT "Hap me:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Emriapp", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Emriapp", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Ndrysho...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Avancuar", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/sv-SE.rc b/dll/win32/shell32/lang/sv-SE.rc
index fd0f1234c4..1b73e3e5d1 100644
--- a/dll/win32/shell32/lang/sv-SE.rc
+++ b/dll/win32/shell32/lang/sv-SE.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "&Ta bort", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Detaljer för filändelsen '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Öppnas med:", -1, 12, 140, 50, 10
- //ICON
- LTEXT "Programnamn", IDC_FILETYPES_APPNAME, 100, 140, 46, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Programnamn", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Ändra...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "A&vancerat", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/tr-TR.rc b/dll/win32/shell32/lang/tr-TR.rc
index d54c399302..ac07ccfd68 100644
--- a/dll/win32/shell32/lang/tr-TR.rc
+++ b/dll/win32/shell32/lang/tr-TR.rc
@@ -459,8 +459,8 @@ BEGIN
PUSHBUTTON "&Sil", IDC_FILETYPES_DELETE, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX """%s"" Uzantısı İçin Ayrıntılar",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Birlikte Açılır:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Uygulama Adı", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Uygulama Adı", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Değiştir...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "&Gelişmiş", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/uk-UA.rc b/dll/win32/shell32/lang/uk-UA.rc
index 1ff6fba8c8..7e662ab1d5 100644
--- a/dll/win32/shell32/lang/uk-UA.rc
+++ b/dll/win32/shell32/lang/uk-UA.rc
@@ -457,8 +457,8 @@ BEGIN
PUSHBUTTON "В&идалити", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Подробиці для розширення '%s'",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Відкривати у:", -1, 12, 140, 48, 10
- ICON IDI_SHELL_PROGRAMS_FOLDER2, IDC_STATIC, 20, 20, 21, 20
- LTEXT "Додаток", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Додаток", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Змінити...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 40
PUSHBUTTON "&Додатково", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc
index c32e28828c..73759bc46e 100644
--- a/dll/win32/shell32/lang/zh-CN.rc
+++ b/dll/win32/shell32/lang/zh-CN.rc
@@ -467,8 +467,8 @@ BEGIN
PUSHBUTTON "删除(&D)", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "'%S' 扩展的详细信息", IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130,
249, 70
LTEXT "打开方式:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "应用程序名称", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "应用程序名称", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "更改...(&C)", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "高级(&V)", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/lang/zh-TW.rc b/dll/win32/shell32/lang/zh-TW.rc
index 60aa2e7eb8..d9c982fdc7 100644
--- a/dll/win32/shell32/lang/zh-TW.rc
+++ b/dll/win32/shell32/lang/zh-TW.rc
@@ -465,8 +465,8 @@ BEGIN
PUSHBUTTON "&Delete", IDC_FILETYPES_DELETE, 180, 110, 50, 14,
WS_TABSTOP
GROUPBOX "Details for '%s' extension",
IDC_FILETYPES_DETAILS_GROUPBOX, 7, 130, 249, 70
LTEXT "Opens with:", -1, 12, 140, 40, 10
- //ICON
- LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 40, 10
+ CONTROL "", IDC_FILETYPES_ICON, "STATIC", SS_BITMAP |
SS_REALSIZEIMAGE, 85, 140, 10, 10
+ LTEXT "Appname", IDC_FILETYPES_APPNAME, 100, 140, 80, 10
PUSHBUTTON "&Change...", IDC_FILETYPES_CHANGE, 180, 140, 50, 14,
WS_TABSTOP
LTEXT "", IDC_FILETYPES_DESCRIPTION, 12, 155, 160, 30
PUSHBUTTON "Ad&vanced", IDC_FILETYPES_ADVANCED, 180, 175, 50, 14,
WS_TABSTOP
diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h
index 0014ec2bfa..6e8d624533 100644
--- a/dll/win32/shell32/shresdef.h
+++ b/dll/win32/shell32/shresdef.h
@@ -356,6 +356,7 @@
#define IDC_FILETYPES_CHANGE 14006
#define IDC_FILETYPES_DESCRIPTION 14007
#define IDC_FILETYPES_ADVANCED 14008
+#define IDC_FILETYPES_ICON 14009
/* Control IDs for IDD_NEWEXTENSION dialog */
#define IDC_NEWEXT_EDIT 14001