ljndhr 2016-12-25 17:22 采纳率: 0%
浏览 1174

VC的MFC调用C#编写的ACTIVEX控件失败,求教是怎么回事?

在DIALOG类中加入了LoadActiveX方法
void CViewcharDlg::LoadActiveX(LPCTSTR strActiveXName, REFIID riidOfActiveX, int x, int y, int nWidth, int nHeight)
{
//Initialize ATL control containment code.
BOOL(WINAPI *m_AtlAxWinInit)();
m_AtlAxWinInit = (BOOL(WINAPI *)(void))::GetProcAddress
(_hWebLib, "AtlAxWinInit");
m_AtlAxWinInit();

// Get the dimensions of the main window's client 
// area, and enumerate the child windows. Pass the 
// dimensions to the child windows during enumeration. 
RECT rcClient;
_hSelf = this->m_hWnd;
//GetClientRect(_hSelf, &rcClient);

_hAtl = ::CreateWindowEx(
    WS_EX_CLIENTEDGE, \
    TEXT("AtlAxWin"), \
    strActiveXName, \
    WS_CHILD | WS_VISIBLE | WS_EX_RTLREADING,\
    x, y, nWidth, nHeight,\
    this->m_hWnd, \
    NULL, \
    NULL, \
    NULL);

if (!_hAtl)
{
    ::MessageBox(NULL, TEXT("Can not load AtlAxWin!"),
        TEXT(""), MB_OK | MB_ICONSTOP);
    throw int(106901);
}

HRESULT(WINAPI *m_AtlAxGetControl) (HWND h, IUnknown** pp);
m_AtlAxGetControl = (HRESULT(WINAPI *)
    (HWND, IUnknown**))::GetProcAddress(_hWebLib, "AtlAxGetControl");

m_AtlAxGetControl(_hAtl, &_pUnk);

_pUnk->QueryInterface(__uuidof(Demo::IObjectSafetyPtr),
    (LPVOID *)&_pDotNetCOMPtr);

if (_pDotNetCOMPtr != NULL)
{
    //_pDotNetCOMPtr->SetInterfaceSafetyOptions((long)_hSelf);
}
else
{
    // Get the dimensions of the main window's client 
    // area, and enumerate the child windows. Pass the 
    // dimensions to the child windows during enumeration. 
    //RECT rcClient;
//  GetClientRect(_hSelf, &rcClient);

    ::DestroyWindow(_hAtl);
    _hAtl = ::CreateWindowEx(
        WS_EX_CLIENTEDGE, \
        TEXT("AtlAxWin"), \
        TEXT("MSHTML:""Please register ActiveX control before using this plugin."""),
        WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN |
        WS_EX_RTLREADING, \
        0, 0, nWidth, nHeight, \
        this->m_hWnd, \
        NULL, \
        NULL, \
        NULL);
}

}
然后在在要使用ActiveX的Dialog的OnInitDialog()中加入下面的代码。
LoadActiveX(TEXT("Demo.IObjectSafety"), __uuidof(Demo::IObjectSafety), 0, 0, 750, 500);

但是程序运行后VC控件窗口中出现了ACTIVEX控件窗口但是里面显示 已取消到网页的导航,确保 Web 地址 http://demo.iobjectsafety 正确。

请各位大神看下这是怎么回事?

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2016-12-31 02:43
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值