OCXの動的コントロール

[戻る]
初心者 2007/01/30(火) 22:56:16
OCXがインストールされていれば、そのコントロールを作成(CreateControl)していま
す。
が、そのOCX自体のイベントを使いたいのですが、
どのようにすればよいのでしょうか

Kerry 2007/01/31(水) 09:42:13
イベント シンク マップを書けばよいです。

class CXXXDialog : public CDialog
{
protected:
    afx_msg BOOL OnXXXXX();
    DECLARE_EVENTSNINK_MAP()
};

BEGIN_EVENTSINK_MAP(CXXXDialog, CDialog)
    ON_EVENT(CXXXDialog, コントロールID, イベントのDISPID, OnXXXX, VTS_NONE)
END_EVENTSINK_MAP()

BOOL CXXXDialog::OnXXXX()
{
    // TODO:
    return TRUE;
}

初心者 2007/01/31(水) 12:37:21
返答ありがとうございます

ダイアログリソースにOCXコントロールを貼り付けていると、
OCXがインストールされていない場合に、
画面が表示されません。

CreateControl(クラスID, WS_VISIBLE, RECT, this, NULL);
でコントロールIDをNULLに指定しているのですが、
ON_EVENT(CXXXDialog, コントロールID, イベントのDISPID, OnXXXX, VTS_NONE)
でコントロールIDはどのように指定すればよいでしょう?

Kerry 2007/01/31(水) 13:18:15
> CreateControl(クラスID, WS_VISIBLE, RECT, this, NULL);
> でコントロールIDをNULLに指定しているのですが、

NULLではダメですね。
[表示]-[シンボルブラウザ]を使うかresource.hを直接編集するなりして、
他のコントロールと被らない一意なIDを追加し、それを指定しましょう。

初心者 2007/01/31(水) 21:37:34
[[解決]]
イベントが飛んできました。
ありがとうございました。

古いスレッドには追加発言できません。