mirror of
https://github.com/reactos/reactos.git
synced 2024-06-27 16:31:30 +00:00
[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
This commit is contained in:
parent
e27d5d2efc
commit
ed1c6bb006
|
@ -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;
|
||||
case LVN_DELETEALLITEMS:
|
||||
return FALSE; // send LVN_DELETEITEM
|
||||
|
||||
pItem = (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
|
||||
if (!pItem)
|
||||
return TRUE;
|
||||
|
||||
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);
|
||||
break;
|
||||
|
||||
/* 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));
|
||||
case PSN_SETACTIVE:
|
||||
/* On page activation, set the focus to the listview */
|
||||
SetFocus(GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue