近日学习ATL,通过对宏定义offsetofclass的解惑过程,顺便分析下虚函数表,以及通过虚函数表调用函数的问题。
1 解开ATL中宏定义offsetofclass的疑惑
#define _ATL_PACKING 8
#define offsetofclass(base, derived) ((unsigned long)(static_cast ((derived...
分类:
其他好文 时间:
2014-10-01 20:06:21
阅读次数:
189
转自:http://blog.csdn.net/p40614021/article/details/6778100ATL:转换宏是各种字符编码之间进行转换的一种很方便的方式,在函数调用时,它们显得非常有用。ATL转换宏的名称是根据下面的模式来命名的[源类型]2[新类型]或者[源类型]2C[新类型]。...
分类:
其他好文 时间:
2014-09-27 00:27:58
阅读次数:
370
当用ATL向导来创建一个接口的时候,向导会让我们选择Dual或者Custom.
那么它们到底有什么分别呢?
Dual
鼠标移上去,其实是有个说明的。下面的截图没有显示后面的一些文字,
实际意思是说这个接口同时支持IDispatch方式和vtable方式,这大概也就是双接口(Dual)名字的来源。
vtable调用方式,指的是直接通过接口指针的虚函数表。比如
CComPtr spCar;...
分类:
其他好文 时间:
2014-09-24 13:02:26
阅读次数:
222
场景:
1. mfc,wtl的原生控件都是通过父窗口拦截 WM_CTLCOLORSTATIC 事件来修改子控件的颜色和背景色,CStatic可以通过返回HOLLOW_BRUSH来绘制透明背景:
m_HollowBrush = AtlGetStockBrush(HOLLOW_BRUSH);
但是如果使用manifest文件使用最新 外观样式的话,返回HOLLOW_BRUSH对checkbox和radio button没有任何效果,原背景还是存在。虽然通过自绘一个checkbox和radio butto...
分类:
其他好文 时间:
2014-09-21 16:54:35
阅读次数:
294
ATL提供了BSTR和CComBSTR,还有OLEAUTO32.DLL导出一个API叫SysAllocString。BSTR是一个typedef,你可以理解为typedefWCHAR*BSTR,它就是一个指针。BSTR p = L"Hello World!"编译是没问题的。不过不推荐这么做。因为按M...
分类:
其他好文 时间:
2014-09-15 17:19:39
阅读次数:
246
在头文件中定义了ATL提供的所有转换宏,如:A2CW(LPCSTR)->(LPCWSTR)A2W(LPCSTR)->(LPWSTR)W2CA(LPCWSTR)->(LPCSTR)W2A(LPCWSTR)->(LPSTR)所有的宏如下表所示:A2BSTROLE2AT2AW2AA2COLEOLE2BST...
分类:
其他好文 时间:
2014-09-02 10:21:14
阅读次数:
148
场景:
1.当你需要截取图片部分区域作为某个控件的背景。
2.需要平铺图片到一个大区域让他自动放大时。
3.或者需要合并图片时。...
分类:
其他好文 时间:
2014-08-31 18:43:31
阅读次数:
301
场景:
1. 在做图片处理时,比如放大后或加特效后需要保存CBitmap(HBITMAP)到文件.
2.截取屏幕内容到文件时.
3.不需要加入第3方库时....
分类:
其他好文 时间:
2014-08-31 18:41:27
阅读次数:
237
这个问题是卸载VS2010一些组件造成的误删问题,且从网上下的atl100.dll通常与自己的VS2010不符解决方法:从路径:C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.ATL下拷贝atl1...
分类:
其他好文 时间:
2014-08-28 09:33:29
阅读次数:
427
服务端代码------------------------------------------------------------------------------------------------------------------------------------------------------------
altstopwatch.idl [接口定义文件]
// altst...
分类:
其他好文 时间:
2014-08-27 10:57:07
阅读次数:
232