SDIアプリ内からもう一つSDIを作成する方法
開発環境:WindowsXPSp3 + VC++2010
SDIの単純なアプリケーションと、スタティックリンクしているDLL(拡張DLL)があります。
exeのツールバーにあるボタンをクリックすると、DLL内にあるCreateNewWindowという関数を呼ぶようになっています。
このCreateNewWindowでは以下のようなコードが書かれています。
------------------------------------------------------------------
CSingleDocTemplate* g_pNewWnd ; // グローバル
void WINAPI CreateNewWindow()
{
if( NULL == g_pNewWnd ) {
g_pNewWnd = new CSingleDocTemplate(
IDR_NEWWINDOW,
RUNTIME_CLASS( CSDIWndDoc ),
RUNTIME_CLASS( CSDIWndFrame ),
RUNTIME_CLASS( CSDIWndView )
);
CDocument* pDocumanet = g_pNewWnd->OpenDocumentFile( NULL ) ;
}
}
※初期化や破棄処理は適宜行っているものとします。
------------------------------------------------------------------
このように、Exeのほうに1つのSDIが存在している状態で、さらにDLL内で別のSDIのウィンドウを作成することは許されるのでしょうか?
実行すると、一応、ウィンドウは作成されるのですが、これらのフレーム内でCMFCToolBarを作成すると、DLLのこの関数でSDIを作成した時点でexe側のツールバーがおかしくなります。
具体的にはDLLのリソースにあるツールバーがexeのツールバーとして不完全な状態で反映され、DLLで作ったSDIウィンドウでは、ツールバーの領域だけ確保されてなにも無い状態です。
この関数を実行するまではexeのツールバーは正常に表示・動作しています。もちろん、リソースIDがユニークになているのは確認済みです。
やりたいことは、SDIやダイアログなどからボタンを押したら動的にSDIのウィンドウを生成して提供するDLLを作成したいのです。
参考になるサイトや書籍、アドバイスを頂けませんでしょうか。
よろしくお願いします。