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中的调试版本:

http://www.cnblogs.com/lidabo/archive/2012/12/12/2815199.html

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);
}

时间: 2024-10-25 00:53:00

Activex调试以及m_hWnd为空 解决办法的相关文章

使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE完美解决办法

使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE完美解决办法 点击下载 | 密码: 35r5 直接将下载的东西拖到模拟器中,点击OK,然后从其模拟器就ok了

eclipse调试找不到源解决办法

eclipse调试时有时显示找不到源码,首先得确定代码没问题 这是eclipse没有发现工程源码,解决办法是 右键工程>>Debug As >> Debug configurations 选择添加使用的工程,顺便可以将Default 删除掉 到此就大功告成,重新将项目启动即可

DELPHI调试出现disconnected session的解决办法

我在控制面板中,是禁用了UAC的,如下图 但是,在注册表中启用了UAC(EnableLUA), 工程中请求了管理员权限,如下图: 所以,整个权限请求混乱了. 解决办法,要么把注册表的LUA设置为0,要么重新设置账户管理启用UAC. 错误截图 原文地址:https://www.cnblogs.com/zengjc123/p/8818331.html

mac系统高德定位调试抱key错误的解决办法

原因:调试需要申请调试的key 获取调试key必须获取调试sha1 获取调试sha1的办法: cd ~//切换到当前用户 cd .android keytool -list -v -keystore debug.keystore 默认口令:android 申请发布版本时需要发布版本的key 需要发布版本的sha1 首先切换到 加密文件目录 然后keytool -list -v -keystore cake.jks

Android调试出现Source not found解决办法

调试时出现Source not found主要有两个原因,一是调用了jar包封装好的代码,本地没有java的source,比如说执行到ArrayList.get(i)时继续点击了step into,这时只需要点击step return即可.还有一种情况就是程序有错误,可能是有空对象或是什么问题,只需要好好看下log查找出错位置和原因,或是在之前设置断点进行调试即可.

调用HTMLTestRunner生产的报告内容为空解决办法

开始代码如下,生成报告内容为空: #coding=utf-8 import unittest,time,reimport requestsimport jsonimport HTMLTestRunner class test_api(unittest.TestCase):        def setUp(self):        self.url = "http://10.10.10.92:5050/api/demo/add.do"        self.params1 = {'

springboot @Value获取值为空,解决办法

在spring中,常常使用 @Value("${property}") 从application.properties中取值,需要注意两点 使用 @Value 的类不能使用 new 关键字进行实例化对象,必须采用 依赖注入的方式进行实例化 不能使用显式的构造方法 否则,将取不到值.解决方法如下: 删除显式的构造方法,需要使用构造方法初始化的内容可以使用@PostConstruct @PostConstruct //加上该注解表明该方法会在bean初始化后调用 private void

kubernetes 登陆为空解决办法

创建一个群集管理服务帐户在此步骤中,我们将为仪表板创建服务帐户并获取其凭据. 运行以下命令: 此命令将在默认名称空间中为仪表板创建服务帐户 kubectl create serviceaccount dashboard -n default 将集群绑定规则添加到您的仪表板帐户 kubectl create clusterrolebinding dashboard-admin -n default --clusterrole=cluster-admin --serviceaccount=defau

VS2015 使用 Visual Studio Emulator For Android 调试无法命中断点的解决办法?

源解决方案是英文版的,地址:https://dzone.com/articles/fix-for-could-not-connect-to-the-debugger-while-de 问题现象: 1. 运行 按钮后,可以成功发布程序到模拟器. 2. 随后发布后的程序被启动,瞬间停止.稍后手动从模拟器中启动程序,有时能启动,有时不能. 问题原因: 1.VS发布时使用了快速部署. 2.处理器太新,Hyper-V兼容性有问题. 总结下来就两个地方需要设置: 1. APP右键属性,Android Opt