Last Updated 2005/08/16 |
Programming Tips Visual C++ MFC OLE | 索 引 |
OLEの初期化(チャートコントロール)
2005/08/16
ダイアログに MS チャートコントロールを貼り付けるとダイアログが表示されなくなる. (この現象は DLL を作成する時に発生する) デバッグウィンドウに AfxEnableControlContainer() を呼べと表示されるであろう. しかし Application クラスの InitInstance() の先頭で
としても改善しない. デバッグウィンドウには以下の様に表示される. CoCreateInstance of OLE control {3A2B370C-BA0A-11D1-B137-0000F8753F5D} failed. これは MFC のバグである. DLL で AfxEnableControlContainer() を呼んでも OLE の初期化をしてくれない. (EXE で呼べば初期化してくれる) この場合は以下のうちどれかの処理を加える必要がある. ・EXE 側も MFC で書いているなら EXE の InitInstance() の先頭で AfxOleInit(); か AfxEnableControlContainer() を呼ぶ. ・EXE 側が非 MFC なら プログラムの先頭で OleInitialize( NULL ); プログラム終了時に OleUninitialize(); を呼ぶ. ・EXE のソースを触れないならダイアログ表示の前とあとに処理を追加します. OleInitialize(NULL); CChartDlg dlg; int rc = dlg.DoModal(); OleUninitialize(); 本来 1 回だけ呼べばいいはずの処理なのだが..... 参照 |
|