分析一下今天所看代码的结构,以做记录并整理思路;婴儿学步。
WTL之dll内嵌窗口代码结构分析:
- dll_xxx.def : 导出dll函数。
- dll_xxx.h : dll对应类的定义。该类继承自接口IDLLxxx接口,接口的概念现在已经有所了解,是我们操作com控件(在这里是这个dll内嵌窗口)的唯一途径。定义了交互的方式:一方面dll窗口的要保证实现这几个接口,而另一方面当我们使用这个控件的时候,也仅仅知道这个接口而无需知道对象具体的实现。而IDLLxxx接口类则继承自IUnknown,是一个标准的com实现方式;ATL内幕一书中解释了它的用途,主要是通过QueryInterface通过接口寻找到实现的具体对象。有点类似于多态,个人理解。
// interface interface IDllWnd :public IUnknown { public: //General Functions virtual BOOL __stdcall Init(HWND parentWnd) PURE; virtual HWND __stdcall GetWnd() PURE; //Data Method virtual BOOL __stdcall InsertPic(LPCTSTR picPath) PURE; };interface定义了交互方式。那么dll这边就要实现接口里定义的虚函数。比如:// dll_xxx.h class Cdll_core :public CxxUnknown<IDllWnd> { public: virtual BOOL __stdcall Init(HWND parentWnd); virtual BOOL __stdcall I
WTL DLL内嵌窗口:接口与实现解析

本文分析了使用WTL构建的DLL内嵌窗口代码结构,重点讲解了如何通过接口IDllWnd与DLL进行交互。DLL类Cdll_core实现了IDllWnd接口,包括Init、InsertPic和GetWnd方法。Init方法创建并显示CMainDlg窗口对象。通过LoadLibraryW和GetProcAddress获取CreateInstanceA函数,创建并初始化DLL对象。文章强调了COM对象的使用,以及CoInitialize在初始化COM环境中的作用。
最低0.47元/天 解锁文章
3352

被折叠的 条评论
为什么被折叠?



