分析一下今天所看代码的结构,以做记录并整理思路;婴儿学步。
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<IDllW