掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自作の他のアプリの操作 (ID:60220)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たいへんありがとうございました。 解決しました。 SendMessageは、OnCreateでreturn 0;の前にボンと置いただけではエラーになりましたが、プロパティのオーバーライドを探して、ActivateFrameの中に 書き込んだところ、成功しました。 私が解決しただけでは過去ログとして意味をなさないので、επιστημηさんのお許しを得て、頂いたサンプルを公開します。 送り元(Talker)はダイアログベース、受け側(Listener)はフォームビューです。 Talkerを先に立ち上げます。 ------------------------------------ Talker ボタンを二つ、ダイアログに貼り付けます。(IDC_INCR, IDC_DECR) ●TalkerDlg.cpp // TalkerDlg.cpp : 実装ファイル (省略) const UINT msg = ::RegisterWindowMessage("INTERNALUSE");//------追加 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CTalkerDlg ダイアログ CTalkerDlg::CTalkerDlg(CWnd* pParent /*=NULL*/) : CDialog(CTalkerDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); listener = 0;//-------------------------------------------追加 } (省略) BEGIN_MESSAGE_MAP(CTalkerDlg, CDialog) (省略) ON_REGISTERED_MESSAGE(msg, OnRegisteredMessage)//----------追加 ON_BN_CLICKED(IDC_INCR, OnBnClickedIncr)//-----------------追加 ON_BN_CLICKED(IDC_DECR, OnBnClickedDecr)//-----------------追加 END_MESSAGE_MAP() // CTalkerDlg メッセージ ハンドラ (省略) //以下追加 void CTalkerDlg::OnBnClickedIncr() { if ( listener ) { ::SendMessage(listener, msg, 1, 0); } } void CTalkerDlg::OnBnClickedDecr() { if ( listener ) { ::SendMessage(listener, msg, 2, 0); } } LRESULT CTalkerDlg::OnRegisteredMessage( WPARAM wparam, LPARAM lparam) { if ( wparam == 0 ) { listener = (HWND)lparam; } return 0; } ●TalkerDlg.h : ヘッダー ファイル (省略) // 実装 protected: (省略) afx_msg LRESULT OnRegisteredMessage( WPARAM, LPARAM );//------------追加 DECLARE_MESSAGE_MAP() //以下追加 private: HWND listener; public: afx_msg void OnBnClickedIncr(); afx_msg void OnBnClickedDecr(); }; ##長くなるので、一旦ここで送信します。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.