【VC编程技巧】动态链接库☞1.1调用Dll中的一个图标
来源:互联网 发布:欢乐颂2网络播出时间 编辑:程序博客网 时间:2024/05/18 14:44
引言
作为一个程序员已经快3年了,但是回顾自己在编程之路上学到东西真没有多少。由于公司项目组一直是在维护七八十年代的制品,一年的新规开发量有限,而更多的是维护,作资料,渐渐的自己已开始对编程陌生了。
作为一个不写程序的程序员我想这是一种悲哀,因为年轻时候的我们必须在道路上沉淀一份东西,后面的人生才不会空虚。所以我决定重新拾起技术。希望大家能够给我支持和帮助。
维护这两年来,我感觉到技术能用到项目中才是硬道理,因为我们的时间毕竟是有限的,所以我选取了工作中经常会碰到的技术来开始自己的沉淀。
主要内容
- 动态链接库
- 文件
- 窗体
- 控件
- 网络
- 系统
那我们先从动态链接库开始吧!
动态链接库
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式;DLL是一个包含可由多个程序同时使用的代码和数据的库,它的优势在于数据和资源共享。更容易使项目模块化,提高了项目开发效率,当dll内容改动了,只要保证接口不变,原来的调用改dll的模块不用重新编译,易于维护,也节约了成本。它的存在很容易实现软件的多语言版,换肤等等。
动态链接库☞调用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 dialogclass CVCDemoDlg : public CDialog{// Constructionpublic:CVCDemoDlg(CWnd* pParent = NULL);// standard constructorprotected: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 hereAfxFreeLibrary(m_hLib);}
8.在对话框OnOK函数中,我们加载Icon图标,然后更换应用程序的图标
void CVCDemoDlg::OnOK() {// TODO: Add extra validation hereif (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 iconSetIcon(m_hIcon, FALSE);// Set small icon//CDialog::OnOK();}
效果图:
步骤我应该说的很清楚了,有任何疑问,或有不对的地方,还请大家留言指出来,谢谢!
- 【VC编程技巧】动态链接库☞1.1调用Dll中的一个图标
- VC动态链接库DLL 开发技巧
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程连载
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程
- VC++动态链接库(DLL)编程
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- VC++动态链接库(DLL)编程深入浅出
- 【必须知道的职场情商训练7法】
- StackTrace
- c++
- 【openCV】多通道的拆分
- D3D中的图形变换
- 【VC编程技巧】动态链接库☞1.1调用Dll中的一个图标
- xclient xinit startx
- 创新七法
- oracle实例和数据库区别
- HDU 1159 Common Subsequence
- Linux 内存压力测试
- Javascript文件操作 (IE)
- onclick特效,按钮等点击后变化的效果
- 数组元素位置调换——改变算法后