发布网友 发布时间:2024-10-23 22:07
共1个回答
热心网友 时间:2024-10-25 19:39
在MFC中,处理图标加载的方式略有不同,主要涉及CWinApp中的两个函数:LoadIcon和LoadStandardIcon。首先,你可以通过以下两种方式从资源中加载图标:
1. 使用资源名称:
HICON icon = AfxGetApp()->LoadIcon(L"IDI_ICON1");
或者
HICON icon = AfxGetApp()->LoadStandardIcon(L"IDI_QUESTION");
对于自定义图标资源,需要注意将整数资源ID转换为字符串,例如:
HICON icon = ::LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDC_MYICON));
其中`IDC_MYICON`是资源ID。
在对话框类CMyDlg中,图标加载通常在构造函数中进行,通过CDialog的基类初始化:
CMyDlg::CMyDlg(CWnd* pParent) : CDialog(CMyDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
`IDR_MAINFRAME`是资源文件中的图标标识。
如果你想在运行时更改图标,可以在OnInitDialog函数中手动设置:
void CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(::LoadIcon(NULL,IDI_APPLICATION), FALSE); // 正常显示时的图标
SetIcon(::LoadIcon(NULL,IDI_APPLICATION), TRUE); // 关闭程序显示的图标
}
SetIcon函数的第二个参数决定图标在特定状态下的显示,TRUE表示关闭程序时的图标,FALSE则对应程序窗口的标题栏图标。