Мне нужна помощь по использованию глобальной переменной в проекте ActiveX (ATL). По сути, функция компонента ActiveX заключается в переходе к указанному URL в составном элементе управления (встроенный браузер). Строка 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). Поток как:
- В приложении Initinstance я вызвал activeX InitPlugin для инициализации строки URL.
- В диалоговом окне «Информация» вставьте MyComponentCtrl ActiveX, чтобы открыть диалоговое окно «Информация», щелкните пункт меню «Информация о мэйнфрейме». Цель состоит в том, чтобы при появлении диалогового окна «Информация» оно всегда могло перейти по указанному URL-адресу.
После запуска моего тестового приложения MFC я нажимаю диалоговое меню «Информация», можно открыть диалоговое окно «Информация» и правильно перейти к URL-адресу.
Но проблема в том, что если я закрою диалоговое окно «Информация», подождите некоторое время (около 2–3 минут), я попытаюсь снова вызвать диалоговое окно «Информация», оно не может перейти к URL. Я отладил его и обнаружил, что глобальная переменная szURL в проекте MyComponenet потеряла свое значение.
Подскажите, пожалуйста, что мне делать, чтобы решить эту проблему?
Заранее большое спасибо!
Bionicoder