[SHELL32] Add icons to the 'File Types' listview (#557)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Wed, 23 May 2018 21:25:11 +0000 (06:25 +0900)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Wed, 23 May 2018 21:25:11 +0000 (23:25 +0200)
This commit adds icons to the listview of the 'File Types' property sheet of Folder Options.
CORE-12906

34 files changed:
dll/win32/shell32/dialogs/folder_options.cpp
dll/win32/shell32/lang/bg-BG.rc
dll/win32/shell32/lang/ca-ES.rc
dll/win32/shell32/lang/cs-CZ.rc
dll/win32/shell32/lang/da-DK.rc
dll/win32/shell32/lang/de-DE.rc
dll/win32/shell32/lang/el-GR.rc
dll/win32/shell32/lang/en-GB.rc
dll/win32/shell32/lang/en-US.rc
dll/win32/shell32/lang/es-ES.rc
dll/win32/shell32/lang/et-EE.rc
dll/win32/shell32/lang/fi-FI.rc
dll/win32/shell32/lang/fr-FR.rc
dll/win32/shell32/lang/he-IL.rc
dll/win32/shell32/lang/hu-HU.rc
dll/win32/shell32/lang/it-IT.rc
dll/win32/shell32/lang/ja-JP.rc
dll/win32/shell32/lang/ko-KR.rc
dll/win32/shell32/lang/nl-NL.rc
dll/win32/shell32/lang/no-NO.rc
dll/win32/shell32/lang/pl-PL.rc
dll/win32/shell32/lang/pt-BR.rc
dll/win32/shell32/lang/pt-PT.rc
dll/win32/shell32/lang/ro-RO.rc
dll/win32/shell32/lang/ru-RU.rc
dll/win32/shell32/lang/sk-SK.rc
dll/win32/shell32/lang/sl-SI.rc
dll/win32/shell32/lang/sq-AL.rc
dll/win32/shell32/lang/sv-SE.rc
dll/win32/shell32/lang/tr-TR.rc
dll/win32/shell32/lang/uk-UA.rc
dll/win32/shell32/lang/zh-CN.rc
dll/win32/shell32/lang/zh-TW.rc
dll/win32/shell32/shresdef.h

index cffee8b..2932070 100644 (file)
@@ -37,6 +37,10 @@ typedef struct
     WCHAR FileDescription[100];
     WCHAR ClassKey[MAX_PATH];
     DWORD EditFlags;
     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
 } 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;
 }
 
     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)
 {
 static HBITMAP
 CreateCheckImage(HDC hDC, BOOL bCheck, BOOL bEnabled = TRUE)
 {
@@ -1338,44 +1370,148 @@ InitializeFileTypesListCtrlColumns(HWND hDlgCtrl)
     SendMessage(hDlgCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
 }
 
     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;
 
 static BOOL
 DeleteExt(HWND hwndDlg, LPCWSTR pszExt)
 {
     if (*pszExt != L'.')
         return FALSE;
 
+    // open ".ext" key
     HKEY hKey;
     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;
 
         return FALSE;
 
-    WCHAR szValue[64];
+    // query "extfile" key name
+    WCHAR szValue[64] = { 0 };
     DWORD cbValue = sizeof(szValue);
     DWORD cbValue = sizeof(szValue);
-    nResult = RegQueryValueExW(hKey, NULL, NULL, NULL, LPBYTE(szValue), &cbValue);
+    RegQueryValueExW(hKey, NULL, NULL, NULL, LPBYTE(szValue), &cbValue);
     RegCloseKey(hKey);
     RegCloseKey(hKey);
-    if (nResult != ERROR_SUCCESS)
-        return FALSE;
 
 
+    // delete "extfile" key (if any)
     if (szValue[0])
         SHDeleteKeyW(HKEY_CLASSES_ROOT, szValue);
 
     if (szValue[0])
         SHDeleteKeyW(HKEY_CLASSES_ROOT, szValue);
 
+    // delete ".ext" key
     return SHDeleteKeyW(HKEY_CLASSES_ROOT, pszExt) == ERROR_SUCCESS;
 }
 
     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;
 {
     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 */
     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));
     /* allocate file type entry */
     Entry = (PFOLDER_FILE_TYPE_ENTRY)HeapAlloc(GetProcessHeap(), 0, sizeof(FOLDER_FILE_TYPE_ENTRY));
-
     if (!Entry)
     if (!Entry)
-        return;
+        return FALSE;
 
     /* open key */
     if (RegOpenKeyExW(HKEY_CLASSES_ROOT, szName, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
     {
         HeapFree(GetProcessHeap(), 0, Entry);
 
     /* 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 */
     }
 
     /* 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);
     }
 
             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);
 
     /* 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
     {
     /* Do not add excluded entries */
     if (Entry->EditFlags & 0x00000001) //FTA_Exclude
     {
+        DestroyIcon(Entry->hIconLarge);
+        DestroyIcon(Entry->hIconSmall);
         HeapFree(GetProcessHeap(), 0, Entry);
         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
     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));
     }
 
     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.iSubItem = 0;
     lvItem.pszText = &Entry->FileExtension[1];
-    lvItem.iItem = *iItem;
+    lvItem.iItem = iItem;
     lvItem.lParam = (LPARAM)Entry;
     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;
 
     ZeroMemory(&lvItem, sizeof(LVITEMW));
     lvItem.mask = LVIF_TEXT;
     lvItem.pszText = Entry->FileDescription;
-    lvItem.iItem = *iItem;
+    lvItem.iItem = iItem;
     lvItem.iSubItem = 1;
     lvItem.iSubItem = 1;
-    ListView_SetItem(hDlgCtrl, &lvItem);
+    ListView_SetItem(hListView, &lvItem);
 
 
-    (*iItem)++;
+    return TRUE;
 }
 
 static
 }
 
 static
@@ -1512,8 +1686,19 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
     DWORD dwName;
     LVITEMW lvItem;
     INT iItem = 0;
     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;
     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)
     {
 
     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);
     }
 
         dwName = _countof(szName);
     }
 
@@ -1553,30 +1739,21 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
     return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
 }
 
     return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
 }
 
-static
+static inline
 PFOLDER_FILE_TYPE_ENTRY
 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;
 }
 
     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]);
 
     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);
     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));
 
     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);
 
     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
 }
 
 // IDD_FOLDER_OPTIONS_FILETYPES dialog
@@ -1935,8 +2154,6 @@ FolderOptionsFileTypesDlg(
     LPARAM lParam)
 {
     LPNMLISTVIEW lppl;
     LPARAM lParam)
 {
     LPNMLISTVIEW lppl;
-    LVITEMW lvItem;
-    WCHAR Buffer[255], FormatBuffer[255];
     PFOLDER_FILE_TYPE_ENTRY pItem;
     OPENASINFO Info;
     NEWEXT_DIALOG newext;
     PFOLDER_FILE_TYPE_ENTRY pItem;
     OPENASINFO Info;
     NEWEXT_DIALOG newext;
@@ -1974,7 +2191,7 @@ FolderOptionsFileTypesDlg(
                     }
                     break;
                 case IDC_FILETYPES_CHANGE:
                     }
                     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;
                     if (pItem)
                     {
                         Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT;
@@ -1987,54 +2204,36 @@ FolderOptionsFileTypesDlg(
 
         case WM_NOTIFY:
             lppl = (LPNMLISTVIEW) lParam;
 
         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;
     }
             }
             break;
     }
index 94daa03..d6b3d00 100644 (file)
@@ -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
     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
     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
index 53c5eba..7b4d4de 100644 (file)
@@ -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
     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
     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
index c7494eb..f4d3515 100644 (file)
@@ -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
     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
     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
index 5016484..87010cb 100644 (file)
@@ -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
     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
     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
index 5bf042e..ab0ff0d 100644 (file)
@@ -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
     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
     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
index 635fce0..7e288bd 100644 (file)
@@ -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
     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
     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
index 4cd9e85..338628a 100644 (file)
@@ -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
     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
     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
index 5d327f0..2d15ab5 100644 (file)
@@ -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
     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
     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
index 4d86e8c..d82117f 100644 (file)
@@ -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
     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
     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
index 7fe739b..e8782c9 100644 (file)
@@ -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
     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
     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
index df2a16d..5f3c1d0 100644 (file)
@@ -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
     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
     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
index a1d20cb..b819825 100644 (file)
@@ -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
     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
     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
index 85a1083..d09efde 100644 (file)
@@ -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
     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
     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
index 3852133..5c7f7c3 100644 (file)
@@ -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
     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
     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
index 82feea8..69d9370 100644 (file)
@@ -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
     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
     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
index e21a079..4468fe7 100644 (file)
@@ -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
     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
     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
index fa1c1b9..7d4ee74 100644 (file)
@@ -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
     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
     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
index 1e46a4c..e0968c2 100644 (file)
@@ -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
     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
     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
index 2239773..2fc75b4 100644 (file)
@@ -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
     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
     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
index e3a06f2..82d94ab 100644 (file)
@@ -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
     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
     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
index 19c7f06..0a14d66 100644 (file)
@@ -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
     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
     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
index d15c691..a7da71e 100644 (file)
@@ -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
     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
     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
index 54b0ebf..3243fc2 100644 (file)
@@ -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
     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
     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
index e924f7b..2e7c8e5 100644 (file)
@@ -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
     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
     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
index acc1f32..c068850 100644 (file)
@@ -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
     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
     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
index 8beba13..d1c20fd 100644 (file)
@@ -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
     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
     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
index 93e14c4..8c8a17b 100644 (file)
@@ -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
     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
     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
index fd0f123..1b73e3e 100644 (file)
@@ -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
     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
     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
index d54c399..ac07ccf 100644 (file)
@@ -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
     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
     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
index 1ff6fba..7e662ab 100644 (file)
@@ -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
     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
     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
index c32e288..73759bc 100644 (file)
@@ -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
     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
     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
index 60aa2e7..d9c982f 100644 (file)
@@ -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
     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
     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
index 0014ec2..6e8d624 100644 (file)
 #define IDC_FILETYPES_CHANGE                14006
 #define IDC_FILETYPES_DESCRIPTION           14007
 #define IDC_FILETYPES_ADVANCED              14008
 #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
 
 /* Control IDs for IDD_NEWEXTENSION dialog */
 #define IDC_NEWEXT_EDIT                     14001