动态链接库?调用Dll中的一个图标
1.建立MFC RegularDLL。工程名:VCDll25
2.插入Icon资源,ID为默认的 IDI_ICON1;查看resource.h文件(资源ID一定要记住)
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by VCDll25.rc
//
#define IDI_ICON1 1000
3.编译工程生成动态链接库”VCDll25.dll”。
4.创建测试对话框程序VCDemo,将VCDll25.dll考到工程目录下。(功能:通过点击OK按钮去改变默认对话框的Icon。)
5.文件VCDemoDlg.h中添加保存Dll(VCDll25.dll)的句柄m_hLib和保存Icon的句柄m_hLibIcon:
// CVCDemoDlg dialog
class CVCDemoDlg : public CDialog
{
// Construction
public:
CVCDemoDlg(CWnd* pParent = NULL); // standard constructor
protected:
HICON m_hLibIcon;
HINSTANCE m_hLib;
...
};
6文件VCDemoDlg.pp中函数OnInitDialog()加载Dll:
BOOL CVCDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
m_hLib = AfxLoadLibrary("VCDll25.dll");
return TRUE; // return TRUE unless you set the focus to a control
}
7.向VCDemoDlg添加消息响应函数OnDestroy,然后释放Dll:
void CVCDemoDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
AfxFreeLibrary(m_hLib);
}
8.在对话框OnOK函数中,我们加载Icon图标,然后更换应用程序的图标
void CVCDemoDlg::OnOK()
{
// TODO: Add extra validation here
if (m_hLib != NULL)
{
AfxSetResourceHandle(m_hLib);
}
//ここでの1000はDLL中にイコンのハンドルである
m_hLibIcon = LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(1000));
if (m_hLibIcon != NULL)
{
m_hIcon = m_hLibIcon;
}
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// CDialog::OnOK();
}
原文链接:https://www.exueyuan.top/831.html,转载请注明出处。

请先 !