【发布时间】:2020-09-02 13:36:06
【问题描述】:
我对 MFC 完全陌生,并且已经在这个问题上工作了几天,但找不到任何可行的解决方案。
问题:
我有一个对话框类(模态对话框),其样式在 .rc 文件(代码如下)中定义,并从另一个类(其他类.rc)。 对话框中的所有文本信息都是动态设置的(下面的代码),但同样不适用于图标。下图中标记的图标是我要设置的。
图标资源在另一个 .rc 文件中定义,并且 LoadImage 似乎可以工作,因为我可以在窗口左上角设置小图标。唯一的问题是在此图像中设置大图标。 (完全没有显示,只是一个空白)
OtherClass.rc
IDR_MAINFRAME ICON "res\\MyIcon.ico"
对话框.rc
ABOUTBOX DIALOGEX 0, 0, 285, 77
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "<<Aboutbox>>"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
ICON ABOUT_ICON, ABOUT_ICON, 11, 10, 21, 20
LTEXT "", IDC_STATIC, 40, 10, 163, 8, SS_NOPREFIX
LTEXT "<<Package Name 1.00>>", ABOUT_NAME, 40, 20, 163, 8, SS_NOPREFIX
LTEXT "<<FileName>>", ABOUT_FILENAME, 40, 30, 163, 8, SS_NOPREFIX
DEFPUSHBUTTON "OK", IDOK, 217, 7, 60, 14, WS_GROUP
END
对话框.cpp
BOOL AboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Window Title
SetWindowText(L"About " + m_title);
// Set Icon
HICON hIcon = (HICON)LoadImage(GetModuleHandleW(NULL), MAKEINTRESOURCE(m_icon), IMAGE_ICON, 96, 96, LR_DEFAULTCOLOR);
SetIcon(hIcon, TRUE);
SetIcon(hIcon, FALSE);
// Text
SetDlgItemText(ABOUT_NAME, m_name);
SetDlgItemText(ABOUT_FILENAME, m_filename);
return TRUE;
}
我尝试做的是:
1. GetDlgItem(ABOUT_ICON)->SetIcon(hIcon, TRUE);
2. SendMessage(WM_SETICON, ICON_BIG, (LPARAM)hIcon);
还有更多类似的东西,但图标空间仍然是空的。 LoadImage 和 GetDlgItem(ABOUT_ICON) 都不会返回 nullptr(已经检查过了)。
【问题讨论】: