(環境:WinXP VC++6.0)
すいません。どうしてもわからないので、教えてください。
MFCで作成したダイアログリソースを
ActiveXコントロールのダイアログにコピーして、
CxxxCtrlクラス上にモードレスダイアログとして
表示したいのですが。
以下コードを載せます。
class CxxxxCtrl : public COleControl
{
private:
CyyyyDlg* m_pMainDlg;
}
int CxxxxCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
m_pMainDlg = new CyyyyDlg();
m_pMainDlg->Create(IDD_YYYYY_DIALOG, this);
m_pMainDlg->ShowWindow(SW_SHOW);
}
ActiveXコントロールテストコンテナ上では、正常に表示されます。
しかし、ダイアログ上に「ActiveXの挿入」で貼り付けると
白塗りの領域が表示されてしまいます。
実行すれば表示されるのですが、
貼り付け時にコントロールが見えないのが、気になります。
OnCreate()が貼り付け時には呼ばれていないのかもしれません。
この問題を解決する手段を教えていただけないでしょうか。
自分で解決しました。
汚してすいません。
なにがいけなくて/どう解決したのかを添えないとホントに汚しただけになりますぜ。
確かにその通りですね。すいません。
新規で、MFC ActiveX ControlWizard を作成し、
「このコントロールをどのウィンドウクラスのサブクラスにしますか?」
の項目で、(none)を選択していたのをその他の項目に変えたら、
正常に表示されるようになりました。
コードの上で異なる点は、
・PreCreateWindow
・IsSubClassedControl
・OnOcmCommand
上記3つの関数が記述されていることです。
この変化によって、OnCreateが呼ばれるようになったようなのですが、
理由はまだわかりません。
>自分で解決しました。
>汚してすいません。
汚してないでないと思いますが.......
質問しておかしいことに気付くことも多々あります。
自力で解決したのはそれはそれで正しい結果でないでしょうか。