2010-10-19 10:48 Activex调试以及m_hWnd为空 解决办法

1. 点击【开始】->【运行】 命令:regedit.
2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main
3. 在【右边区域】【右键】新建一个名称为TabProcGrowth的DWORD值, 数值数据设置为0.

VS不用重启,直接可以按F5进行调试ActiveX了!

参看: http://social.microsoft.com/Forums/en-US/vsdebug/thread/e2c795cd-b7a0-4fad-b7c9-b1ca40d7302e

网页中OCX控件HWND为空问题当网页中的OCX控件没有出现到屏幕上之前(或者尺寸为0时),它的WM_CREATE消息将不会被调用. 这样当script程序调用一些必须要有有效HWND的操作时就会导致MFC/ATL底层库的崩溃(调试版本则会ASSERT)。 在MFC中的调试版本:
ASSERT(::IsWindow(m_hWnd)); 在ATL中的调试版本:
ATLASSERT(::IsWindow(m_hWnd)); MFC的解决办法是:在派生类中钩住OnSetClientSite,创建一个窗口,代码如下:// CMyControl is derived from COleControl.
void CMyControl::OnSetClientSite()
{
// It doesn't matter who the parent window is or what the size of
// the window is because the control's window will be reparented
// and resized correctly later when it's in-place activated.
if (m_pClientSite)
    VERIFY (CreateControlWindow (::GetDesktopWindow(), CRect(0,0,0,0), CRect(0,0,0,0)));
COleControl::OnSetClientSite();
}ATL的解决办法:
// CMyControl is derived from CComControl
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite)
{
    RECT rc = {0,0,0,0};
    // Don't have access to the container's window so just use the
    // desktop. Window will be resized correctly during in-place
    // activation.
    HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc);
    _ASSERT (hWnd);
}
return IOleObjectImpl<CMyControl>::SetClientSite (pClientSite);
}HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect)
{
// Get the container's window.
_ASSERT (m_spClientSite);
LPOLEINPLACESITE pInPlaceSite = NULL;
HRESULT hr = m_spClientSite->QueryInterface(IID_IOleInPlaceSite, (void**)&pInPlaceSite);
_ASSERT (SUCCEEDED (hr) && pInPlaceSite);
HWND hParent = NULL;
hr = pInPlaceSite->GetWindow (&hParent);
_ASSERT (SUCCEEDED (hr) && hParent);
pInPlaceSite->Release ();

// Set container window as our parent window
SetParent (hParent);
return CComControlBase::InPlaceActivate(iVerb, prcPosRect);
}

参看:http://support.microsoft.com/kb/195188

时间: 2025-01-21 01:00:52

2010-10-19 10:48 Activex调试以及m_hWnd为空 解决办法的相关文章

Ubuntu下开启php调试模式报错信息解决办法_Linux

Ubuntu下开启php调试模式报错信息解决办法 在Ubuntu下php的缺省设置是不显示错误信息的,如果程序出错会显示"无法处理此请求的错误提示",这在开发环境下非常不方便. 其实我们只要编辑下apache的配置文件就好 1.我的apache 配置文件目录是/etc/apache2/apache2.conf sudo vim /etc/apache2/apache2.conf 再最后加入以下两行 php_flag display_errors on php_value error_r

ASP:ActiveX不能创建Scripting.FileSystemObject对象解决办法_应用技巧

今天遇到个问题,一个ASP网站生成静态页面时报错: Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象: 'Scripting.FileSystemObject' 其实这个问题比较常见,报错原因是服务器不支持FSO组件.像风讯.科汛.动易这些ASP的主流CMS系统中经常会遇到这种情况,因为他们都是采取静态生成机制的,需要FSO组件支持.在开始之前,你有必要先用ASP探针测试下服务器对FSO组件的支持情况,通常我们使用的是Windows

ASP:ActiveX不能创建Scripting.FileSystemObject对象解决办法

今天遇到个问题,一个ASP网站生成静态页面时报错: Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象: 'Scripting.FileSystemObject' 其实这个问题比较常见,报错原因是服务器不支持FSO组件.像风讯.科汛.动易这些ASP的主流CMS系统中经常会遇到这种情况,因为他们都是采取静态生成机制的,需要FSO组件支持.在开始之前,你有必要先用ASP探针测试下服务器对FSO组件的支持情况,通常我们使用的是Windows

Windowns 10系统网络连接受限怎么办 win10网络连接受限解决办法

1.右击任务栏上的"网络连接"然后点击"网络和共享中心"如下图所示.   2.在"网络和共享中心"我们点击左边的一个"更改适配器设置"选项,打开   3.然后在进入到电脑的"网络连接"我们再找到"网络受限"的连接,右击点击"禁用"项.   4.然后我们过一会再点击"启用"项.   5.此时对于"本地连接"而言,将自动从网关获取I

Windowns 10新系统不能上网怎么办 网卡驱动不能用解决办法

1.我们在电脑中 右键计算机--属性--设备管理器--网络适配器  打开进入,如下图所示. 2.然后安装驱动人生网卡版 这个可以百度搜索下载了,在此111cn小编不提供下载地址 修复完成,驱动人生会显示修复结果,此时,网卡驱动问题便解决好了. 其实我们还有一种办法就是更新网卡驱动了,这种方法少知道能不能行得通了,不过小编觉得能解决问题就好.

npoi 打开一个10多M的excel就内存溢出,求解决办法

问题描述 目前开发一个winfrom小程序使用npoi读取excel时,出现了内存溢出excel文件版本是2007的,大小是12MFileStreamfs_excel=newFileStream(this.excleFileDir,FileMode.Open,FileAccess.Read);IWorkbookworkbook=newXSSFWorkbook(fs_excel); 刚执行这两行就溢出了...因为其中有一个sheet是excel2007的最大行数,但我觉得不应该啊读取小的文件没问题

Windows 10报错无法使用内置管理员账户打开浏览器解决办法

这个问题的原因在于Windows应用开启默认需要用户账户控制UAC支持(在普通账户下关闭UAC通知不影响此类应用运行),而Win10管理员账户不开启UAC.因此在Administrator账户下默认不能运行Windows应用. 出现这个问题我们是需要把administrar给打开了,所以我们接着微下看看解决办法. 修改方法如下: 1.我们打开"Cortana"然后搜索"regedit"找到后我们双击 2.在注册表编辑器中定位到以下位置: HKEY_LOCAL_MAC

iOS编程Cookbook第19章最后一个例子不能正常工作的解决办法

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Cookbook的第19章的11节中所要解决的是在App中显示iOS自带的日历编辑视图的问题. 例子代码是选择迄今为止1年前的第一个找到的日历事件,然后将其显示在日历编辑视图中. 日历编辑视图控制器是EKEventEditViewController的实例对象,按照书上的说明,其有一个event实例变量,如果在显示该控制器之前不对其赋值,即其值为nil则出现

豫金刚石2010年净利增44.84%拟10转10派2元

网易财经2月25日讯 豫金刚石25日晚间发布2010年年报,2010年净利润7598.48万元, 同比增长44.84%. 2010年豫金刚石营收2.56亿元,同比增长39.25%:净利润7598.48万元,同比增长44.84%:基本每股收益0.53元,同比增长15.22%. 豫金刚石表示,业绩增长的主要原因是:公司积极推进品牌建设,市场规模扩大,经营业绩按照预期持续增长. 豫金刚石拟向全体股东每10股派发现金红利2元(含税),同时由资本公积向股东每10股转增10股. 豫金刚石停牌前报收于40.3