ActiveX(ATL) プロジェクトでのグローバル変数の使用についてサポートが必要です。ActiveX コンポーネントの基本的な機能は、複合コントロール (webbrowser 組み込み) で指定された 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) テスト アプリケーションで行われます。流れは次のようになります。
- App Initinstance では、activeX InitPlugin を呼び出して URL 文字列を初期化しました。
- [情報] ダイアログ ウィンドウで、MyComponentCtrl ActiveX を挿入します。[メインフレーム情報] メニュー項目をクリックすると、[情報] ダイアログが表示されます。目標は、情報ダイアログ ウィンドウがポップアップしたときに、常に指定された URL に移動できるようにすることです。
MFC テスト アプリが起動した後、[情報] ダイアログ メニューをクリックすると、[情報] ダイアログ ウィンドウが表示され、URL に正しく移動できます。
しかし、問題は、情報ダイアログを閉じて、しばらく (約 2 ~ 3 分) 待ってから、再度情報ダイアログを表示しようとしたところ、URL に移動できなかったことです。デバッグしたところ、MyComponenet プロジェクトのグローバル変数 szURL の値が失われていることがわかりました。
この問題を解決するにはどうすればよいか教えてください。
よろしくお願いします!
バイオニコダー