From 4269ded2f6742228fa71136f4f092efaff8e015e Mon Sep 17 00:00:00 2001 From: freedom7341 Date: Mon, 2 Oct 2023 16:17:14 -0600 Subject: [PATCH] more --- progmgr/dialog.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/progmgr/dialog.c b/progmgr/dialog.c index 6e9cf00..3f2d491 100644 --- a/progmgr/dialog.c +++ b/progmgr/dialog.c @@ -270,6 +270,7 @@ BOOL CALLBACK NewItemDlgProc(HWND hWndDlg, UINT message, WPARAM wParam, LPARAM l LPVOID lpData; DWORD dwVerBuffer = 0; UINT uiTitleLen = MAX_TITLE_LENGTH; + WCHAR szNameBuffer[MAX_TITLE_LENGTH] = { L"\0" }; WCHAR szFileBuffer[MAX_PATH] = { L"\0" }; GetDlgItemText(hWndDlg, IDD_PATH, (LPWSTR)&szFileBuffer, ARRAYSIZE(szFileBuffer)); @@ -294,38 +295,43 @@ BOOL CALLBACK NewItemDlgProc(HWND hWndDlg, UINT message, WPARAM wParam, LPARAM l break; // copy the filename to a new buffer for later - StringCchCopy(szBuffer, ARRAYSIZE(szBuffer), szFileBuffer); + StringCchCopy(szNameBuffer, ARRAYSIZE(szNameBuffer), szFileBuffer); // let's retrieve the application's friendly name too - dwVerBuffer = GetFileVersionInfoSize((LPCWSTR)szBuffer, NULL); + dwVerBuffer = GetFileVersionInfoSize((LPCWSTR)szNameBuffer, NULL); if (dwVerBuffer != 0) { lpData = malloc(dwVerBuffer); if (lpData != NULL) - GetFileVersionInfo((LPCWSTR)szBuffer, (DWORD)0, dwVerBuffer, lpData); + GetFileVersionInfo((LPCWSTR)szNameBuffer, (DWORD)0, dwVerBuffer, lpData); else break; // TODO: this is hardcoded to english. make it dynamic later // TODO: this is so busted lol, really make it dynamic so it works - if (VerQueryValue(lpData, + VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\FileDescription"), - (LPVOID)szBuffer, &uiTitleLen) == 0) - { - // copy the filename back to the og buffer - StringCchCopy(szFileBuffer, ARRAYSIZE(szFileBuffer), szBuffer); - } + (LPVOID)szNameBuffer, &uiTitleLen); // == 0 if (lpData) free(lpData); } else { - PathStripPath(szBuffer); - PathCchRemoveExtension(szBuffer, ARRAYSIZE(szBuffer)); + PathStripPath(szNameBuffer); + PathCchRemoveExtension(szNameBuffer, ARRAYSIZE(szNameBuffer)); + } + + SetDlgItemText(hWndDlg, IDD_NAME, (LPWSTR)szNameBuffer); + + // let's get the icon now + if (ExtractIcon(hAppInstance, &szFileBuffer, -1) != 0) + { + // file contains at least one icon + hIconDlg = ExtractIcon(hAppInstance, (LPWSTR)&itm.szIconPath, itm.iIconIndex); + SendDlgItemMessage(hWndDlg, IDD_STAT_ICON, STM_SETICON, (WPARAM)hIconDlg, 0); } - SetDlgItemText(hWndDlg, IDD_NAME, (LPWSTR)szBuffer); break; }