ATL问题集-#26 ~#29

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

/*此文是我将网上的一些文章,自已遇到的问题进行整理,有些是翻译,所有只供学习讨论,如有版权还属于原作者——作者:黄森堂*/

#26 在ATL发行版本中出错信息:“unresolved external symbol _main”

答:这是VC6的一个BUG,由于VC6在ATL使用_ATL_MIN_CRT_宏,该宏会使CRT启动代码无效,去掉该宏就可以了,如下做法:Project->Setting->C/C++ 的Category中选择Preprocessor的Preprocessor definitions:中去掉_ATL_MIN_CRT_。

#27 如何在ATL中取得windowsless窗口的HWND?

答:windowsless 就是没有窗口。你的ATL控件没有窗口, m_hWnd不是NULL能是什么。 至于Ondraw得到的 hdc 实际是父窗口的hdc。huhu 你注意看 M$ 的form 系列控件(就是IE页面中的那些textbox checkbox ....), 都是windwosless的。

if (m_bWndLess)

{

HDC hDC;

HWND hWnd;

// Get the HDC from the client

m_spInPlaceSite->GetDC(NULL, OLEDC_NODRAW, &hDC);

// Get the HWND from the HDC

hWnd = WindowFromDC(hDC);

m_spInPlaceSite->ReleaseDC(hDC);

}

注意:不要乱动那个hWnd因为这个东西不是你的。

#28 如何在客户端中使用CoCreateInstanceEx()?

答:stdafx.h的最前面加入#define _WIN32_DCOM

#29 为何在Visual C++ Compoents中找不到ATL proxy Generator组件?

答:这是VC5为支持Connection Point的做法,VC6已整合到Wizard里面。具体位置:选择编译你的项目,然后直接在你的类中击鼠标右键选择Implement Connection Point,后面的界面与VC5的一模一样。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有