ActiveXコントロールを貼り付けたときに呼ばれる関数 – プログラミング – Home

ActiveXコントロールを貼り付けた...
 
通知
すべてクリア

[解決済] ActiveXコントロールを貼り付けたときに呼ばれる関数


よん
 よん
(@よん)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

(環境: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()が貼り付け時には呼ばれていないのかもしれません。

この問題を解決する手段を教えていただけないでしょうか。


引用未解決
トピックタグ
よん
 よん
(@よん)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

自分で解決しました。
汚してすいません。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

なにがいけなくて/どう解決したのかを添えないとホントに汚しただけになりますぜ。


返信引用
よん
 よん
(@よん)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

確かにその通りですね。すいません。

新規で、MFC ActiveX ControlWizard を作成し、
「このコントロールをどのウィンドウクラスのサブクラスにしますか?」
の項目で、(none)を選択していたのをその他の項目に変えたら、
正常に表示されるようになりました。
コードの上で異なる点は、
・PreCreateWindow
・IsSubClassedControl
・OnOcmCommand
上記3つの関数が記述されていることです。
この変化によって、OnCreateが呼ばれるようになったようなのですが、
理由はまだわかりません。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>自分で解決しました。
>汚してすいません。
汚してないでないと思いますが.......
質問しておかしいことに気付くことも多々あります。
自力で解決したのはそれはそれで正しい結果でないでしょうか。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました