我需要有关 ActiveX(ATL) 项目中全局变量使用的帮助。基本上,ActiveX 组件功能是导航到复合控件中的指定 URL(嵌入 Web 浏览器)。URL 字符串在开始时被初始化并保存在全局变量中。这是我的 ActiveX 项目的源代码文件。
(不要关心语法,我只是想展示代码流程)。
MyComponentInit.cpp
// MyComponentInit.cpp : Implementation of MyComponentInit.cpp
#include "stdafx.h"
#include <ios>
char szURL[1024] = "\0"; // global variable holding URL string
STDMETHODIMP CMyComponentInit::InitPlugin(BSTR url)
{
// convert BSTR to string
......
memcpy(szURL, szUrl, len);
}
MyComponentCtrl.cpp
// MyComponentCtrl.cpp : Implementation of MyComponentCtrl.cpp
#include "stdafx.h"
extern char szURL[1024]
LRESULT CMyComponentCtrl::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
......
m_spWebbrowser->Navigate(szURL, &v, &v, &v, &v);
}
mycomponent ActiveX 的使用是在 MFC SDI(Single Doc/View) 测试应用程序中。流程是这样的:
- 在 App Initinstance 中,我调用了 activeX InitPlugin 来初始化 URL 字符串。
- 在 Information 对话框窗口中,插入 MyComponentCtrl ActiveX,通过单击 Mainframe Information 菜单项弹出 Information 对话框。目标是当信息对话框窗口弹出时,它总是可以转到指定的url。
在我的 MFC 测试应用程序启动后,我单击信息对话框菜单,信息对话框窗口可以打开并正确导航到 url。
但问题是,如果我关闭信息对话框,稍等片刻(大约 2~3 分钟),我试图再次打开信息对话框,它无法导航到 URL。我调试它,发现 MyComponenet 项目中的全局变量 szURL 失去了它的价值。
你能告诉我我应该怎么做才能解决这个问题吗?
提前非常感谢!
仿生编码器