在codeproject上有一篇Developing an Office 2003 COM add-in with VC++/ATL(http://www.codeproject.com/KB/atl/outlook2k3addin.aspx)。我用VC6.0编译,说找不到atlcontrols.h。google之后,发现MSDN上的Sample叫ATLCON上有这个文件,是MS官方不支持的,但是可以用。添加到VC的默认include之后,编译,又出错。说DWORD_PTR有问题。再次google,找到答案。
Now I know what was happening. You need to #include <BaseTsd.h> before the AtlControls.h. The data type DWORD_PTR is to prepare for 64-bit Windows programming. Check out The New Data Types (64-bit Windows Programming: Platform SDK)http://msdn.microsoft.com/library/en-us/win64/win64/the_new_data_types.asp?frame=true If you don't have the BaseTsd.h file, you have an old Platform SDK installed. The latest Platform SDK can be downloaded at http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
不过用DWORD将DWORD_PTR替换就很好用了。我在atlcontrols.h这样加:typedef DWORD DWORD_PTR;问题解决。但是又有了_atlbaseModule的问题,说未定义。google之后,这个是ATL7.0的,而VC6.0上的是ATL3.0,所以应该用_Module替换。再次编译。OK。