• ベストアンサー

BEGIN_EVENTSINK_MAPをお教えください

下記についてお教えください。 BEGIN_EVENTSINK_MAP(CxxxView, CView) //{{AFX_EVENTSINK_MAP(CxxxView) ON_EVENT(CxxxView, CONTROL_ID, /*DISPID*/ 1, OnEventxxxx, VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() を詳しく教えていただけませんか。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

これのどの部分が不明なのでしょう VisualStudio(VC++)付属のMSDNで BEGIN_EVENTSINK_MAPやON_EVENT、END_EVENTSINK_MAPなどを調べてみたのでしょうか ActiveXコントロールの公開イベントを処理するためのマップのマクロですよ CViewの派生クラスCxxxViewでCONTROL_IDを持つActiveXコントロールでのイベント番号1が発生した場合OnEventxxxxハンドラを呼び出します この際に4バイトの整数(long)が引数に渡されます

takaboodes
質問者

お礼

有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • vc++2005エラーメッセージ

    vc++6.0では問題なかったのですが BEGIN_MESSAGE_MAP(CCryMesView, CView) ON_COMMAND(ID_MESS_SEND, OnCryMesSend) //{{AFX_MSG_MAP(CCryMesView) //}}AFX_MSG_MAP END_MESSAGE_MAP() に対して error C2440: 'static_cast' : 'int (__thiscall CCryMesView::* )(void)' から'AFX_PMSG' に変換できません。 1> スコープ内でこの名前を指定された関数でターゲット型に一致するものはありません。 とのエラーメッセージが出ます。 原因と修正方法を教えてください。

  • メッセージマップ(ON_CONTROL_RANGE)エラーについて

    c:\Documents and Settings\******\ デスクトップ\test\Project2View.cpp(22): error C2440: 'static_cast' : 'void (__thiscall CProject2View::* )(void)' から 'void (__thiscall CCmdTarget::* )(UINT)' に変換できません。 BEGIN_MESSAGE_MAP(CProject2View, CFormView)  ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)  ON_CONTROL_RANGE         (EN_CHANGE,1000,1099,OnChangeEditAll)  ON_EN_CHANGE(1000,OnChangeEditAll) END_MESSAGE_MAP() ON_CONTROL_RANGEを使用すると出ます。 どうすればいいでしょうか? *stdafx.hの#define...は、削除しました。 Visual Studio.NET 2003 です。 よろしくお願いします。

  • ストアドプロシージャのbegin、end

    下記の様なストアドプロシージャを作成し、VB側から実行させています。 どうしても、★SQL文2★の後のreturn文を実行してくれません。 (VB側ではreturn値が0と判断します。) このreturn文を★SQL文2★の前に移動すると、return値が-1として正常に取得できます。 begin、endのブロックの記述に何か間違いがあるのでしょうか? 環境:sqlserver2000,windows2000,vb6 よろしくお願いします。 CREATE PROCEDURE [sp_AAA] @PARAM1 varchar(16) AS begin if (~) begin ★SQL文1★ if (@@ERROR <> 0) begin return @@ERROR end end ★SQL文2★ return -1 ←ココ end

  • MFCのメニューバーのイベント取得

    イベント取得に苦戦しております。 環境は、 Microsoft Visual Studio 2008 Professional Edition - JPN MDIです。 取得したいイベントなのですが、 メニューバーの「Windows」の各ファイル名称を選択した時の イベントを取得して処理を行いたいのですが、どうすれば取得できるのでしょうか? Windows Tile Cascade ----------- Project_1   ←ここのイベントを取得したい Project_2   ←ここのイベントを取得したい afxres.h AFX_IDM_FIRST_MDICHILD いろいろと調べた結果上記のヘッダの「AFX_IDM_FIRST_MDICHILD 」がProject_1のIDとなっており、Project_2は+1したIDとなっております。 メッセージマップで ON_COMMAND(AFX_IDM_FIRST_MDICHILD,&CMainFrame::~~~~~ とすれば、とりあえずはイベントは取れるのですが、 正規の動作が予想のごとくできませんでした。 何か他の方法で、取得して、既存の処理を損なうことなく動作することは、 できるのでしょうか? 何か方法があればご教授御願い致します。

  • PHP+MYSQL BEGIN;とCOMMIT;

    下記のSQL文をPHPで書くとどの様になりますでしょうか? オブジェクト指向でお願いします。 BEGIN; // トランザクションA開始 SELECT * FROM users WHERE id = 1 FOR UPDATE; COMMIT; // トランザクションA終了

    • 締切済み
    • PHP
  • エディットコントロールのイベントハンドラ

    開発環境 ・Windows XP (32bit) ・Visual C++ 2005 以下内容でCEditの派生クラスを作成したところ、 その派生クラスを使用するダイアログで EN_CHANGEイベントがキャッチ出来ませんでした。 どうすればキャッチ出来るようになるでしょうか? アドバイス頂けると大変ありがたいです。 ※エディットコントロールに文字を入力すると  以下(1)の処理には来るのですが、  以下(2)の処理には来ませんでした。 //------------------------------------------------ // EditEx.h //------------------------------------------------ // CEditの派生クラス class CEditEx : public CEdit { public:     CEditEx(void);     virtual ~CEditEx(void); //------------------------------------------------ // EditEx.cpp //------------------------------------------------ // CEditExクラス内でEN_CHANGEイベントを処理 BEGIN_MESSAGE_MAP(CEditEx, CEdit)     ON_CONTROL_REFLECT(EN_CHANGE, &CEditEx::OnEnChange) END_MESSAGE_MAP() // EN_CHANGEイベントハンドラ void CEditEx::OnEnChange(void) {     // (1) } //------------------------------------------------ // DialogEx.h //------------------------------------------------ // CEditExクラスをメンバに持つダイアログ class CDialogEx : public CDialog { private:     CEditEx m_Edit1; //------------------------------------------------ // DialogEx.cpp //------------------------------------------------ // CDialogExクラス内でもEN_CHANGEイベントを処理したい BEGIN_MESSAGE_MAP(CDialogEx, CDialog)     ON_EN_CHANGE(IDC_EDIT1, &CDialogEx::OnEnChangeEdit1) END_MESSAGE_MAP() // EN_CHANGEイベントハンドラ void CDialogEx::OnEnChangeEdit1(void) {     // (2) }

  • Cwndクラスの派生クラスmCWndクラスのOnDrawについて

    OnDraw関数が呼び出しされていません。 どうすればいいですか? よろしくお願いします。 class mCWnd :public CWnd { public: DECLARE_MESSAGE_MAP() afx_msg void OnLButtonDown(UINT nFlags,CPoint point) { AfxMessageBox("子ウインドウ"); CDC *pDC=GetDC(); pDC->TextOut(0,0,"HELLO"); ReleaseDC(pDC); Invalidate(); } virtual void OnDraw(CDC* pDC) { AfxMessageBox("OnDraw"); pDC->FillSolidRect(CRect(0,0,300,300),RGB(255,255,255)); } }; BEGIN_MESSAGE_MAP(mCWnd, CWnd) ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() ------------------------------------------- //***View.cpp (mCWnd cw) void CKoDlg::OnBnClickedButton1() { CRect rect=CRect(50,50,190,250); cw.Create(NULL,"Hello",WS_CHILD|WS_VISIBLE,rect,this,5000,0); // TODO : ここにコントロール通知ハンドラ コードを追加します。 }

  • 右クリックメニューについて

    VC++2005のMFCでダイアログベースアプリを作成しています。 右クリック動作を行ったタイミングでOnContextMenu関数を呼び出し、処理を行いたいのですが、作成した方法が悪いのか、 (イベントの追加で自動生成する方法が分からず、他ソースのOnContextMenu関数部をコピー) 右クリックしても関数内に入ってくれません。 コンパイルは通っており、コピー元のソースでは検知されているのですが。。。 何か解決法について心当たりのある方おられましたら、お手数ですがご教授お願い致します。 下記は問題箇所のソースです。 【メッセージマップ】 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) ON_WM_CONTEXTMENU() END_MESSAGE_MAP() 【OnContextMenu関数】 void CTestDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint point ){ AfxMessageBox("右クリック検知しました"); } 【ヘッダ部】 afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint point ); ※なお、右クリックする場所はダイアログ上に作成したツリービューの上となっています。

  • Modalダイアログを他のThreadから閉じたい

    VC++6.0のMFCプロジェクトで、Modalダイアログを他のThreadから閉じる処理を行いたいと考えています。 以下のようなことを実行しているのですが、3.で"MyDialog"にメッセージが送信されません。 1.あるFormView上で、他のスレッド("WorkerThread"とします)を起動する。 2.上記FormView上で、Modalダイアログ("DialogTest"とします)を開く。 3."WorkerThread"にて、一定の処理後にSendMessageを実行して、"MyDialog"にメッセージを送り、EndDialog()を実行させる。 /*----- WorkerThread関数内-----*/ //"TestDialog"のハンドルを取得する。 HWND hWnd = ::FindWindowEx(NULL, NULL, _T("#32770"), NULL); if (hWnd) { CWnd* pWnd = FromHandle(hWnd); if (pWnd) { //処理がここに入っていることは確認できます。 pWnd->SendMessage(WM_MESSAGE_CLOSEDIALOG, 0, 0); } } /*-----定義用ヘッダーファイル------*/ const UINT WM_MESSAGE_CLOSEDIALOG =::RegisterWindowMessage(_T("UWM_MESSAGE_CLOSEDIALOG")); /*-----DialogTest.h------*/ //{{AFX_MSG(CWaitingSearchDialog) //}}AFX_MSG afx_msg void OnCloseDialog(WPARAM wParam,LPARAM lParam); DECLARE_MESSAGE_MAP() /*-----DialogTest.cpp------*/ void DialogTest::OnCloseDialog() { EndDialog(IDOK); } BEGIN_MESSAGE_MAP(DialogTest, CDialog) //{{AFX_MSG_MAP(DialogTest) //}}AFX_MSG_MAP ON_REGISTERED_MESSAGE(WM_MESSAGE_CLOSEDIALOG, OnCloseDialog) END_MESSAGE_MAP() 間違いありましたら、ご指摘いただけないでしょうか。よろしくお願いいたします。 (ところで、私が同カテゴリに先日投稿した「"複数プロジェクトをビルドしたとき、DLLに新しく追加したClassのみがリンクエラーになる "」は、自己解決できました。 もしどなたか適当な回答を投稿してもらえれば、その旨を書けます。お暇な方、お願いできないでしょうか)

  • googleマップAPIクリックイベント

    googleマップAPIで、 var marker = new Array(); for(i=0; i<10; i++){ marker[i] = new GMarker(ZAHYOU[i]); map.addOverlay(marker[i]); GEvent.addListener(marker[i], 'click', function(){alert(i);}); } というコードでは、10カ所にきちんとマーカーは付けられますが、 クリックイベントではすべて「10」が表示されます。なぜでしょうか? マーカーとクリックイベントを対応させるにはどうすればいいのでしょうか? よろしくお願いいたします。

このQ&Aのポイント
  • ミシン「ブラザーコンパルエースZZZ-B765」の縫い目が飛んでしまう問題について相談させてください。針の交換や釜の掃除、油差し、糸や布の確認などの対処法を試しましたが、30~40cmで一目くらい飛んでしまいます。他に考えられる対処法はありますか?また、ミシン針の種類についても教えていただきたいです。
  • ミシン「ブラザーコンパルエースZZZ-B765」で縫い目が飛んでしまう問題に困っています。縫い目が飛んでしまう場合の対処法として、針の交換、釜の掃除と油差し、糸や布の確認を試しましたが、30~40cmで一目くらい飛んでしまいます。他に考えられる対処法を教えていただきたいです。また、どのブランドのミシン針がオススメですか?
  • ミシン「ブラザーコンパルエースZZZ-B765」の縫い目が飛んでしまう問題について教えてください。針の交換や釜の掃除と油差し、糸や布の確認などの対処法を試しましたが、30~40cmで一目くらい飛んでしまいます。他に考えられる対処法はありますか?また、ミシン針の種類についても教えていただきたいです。
回答を見る