ビュークラスにてメッセージを処理するには – プログラミング – Home

ビュークラスにてメッセージを処理するに...
 
通知
すべてクリア

ビュークラスにてメッセージを処理するには


くり
 くり
(@くり)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

はじめまして。

今VC++6.0にて、ドキュメント・ビューアーキテクチャを使用して
プログラムを作成しています。

WM_COPYDATAメッセージを用いて、このアプリケーション宛てに
他のアプリケーションより送られた文字列を取得する処理を追加
したいのですが、以下のような状況が解決できずに困っております。

送られてきたメッセージは、CMainFrameクラスのOnCopyData()にて
処理することができますが、このメッセージをビュークラス(CView)の
OnCopyData()にて処理するようにしたいのですが、どのようにすれば
可能になるでしょうか。

よろしくお願いいたします。


引用解決済
トピックタグ
くり
 くり
(@くり)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

補足ですが、SDIアプリケーションで作成しており、ビュークラスは
基底クラスをCFormViewに変更しています。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

MFCをお使いであれば

単にClassWizardのメッセージマップタブを選択し
クラス名のコンボBOXで、そのViewを選択すれば良いのでは?

違う意味かなぁ?


返信引用
くり
 くり
(@くり)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

Bunさん、こんばんは。
おっしゃるような手順で、ビューに対してもWM_COPYDATAのメッセージを処理できるように
関数を追加しましたが、こちらの関数が呼び出されないのです。
CMainFrameクラスに関数を追加した場合は、呼び出されています。

CMainFrameクラスのOnCopyData()にて、メッセージをビュークラスに対してメッセージを
転送してやれば良いのかとも思ったりするのですが・・・。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

くり様 おはようございます。

> CMainFrameクラスに関数を追加した場合は、呼び出されています。

違う意味かなぁ?やっぱ違う意味でした。m(_)m
ViewのOnCopyData()には飛んでこないということですか。
なぜでしょうねぇ?
DefWindowProcで処理されてはいかがでしょうか?

LRESULT ChogeView::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{

 COPYDATASTRUCT* pSCds;

 switch (message) {
 case WM_COPYDATA:
  pSCds = (COPYDATASTRUCT*)lParam;

  // ここに処理を記述する
  // 例
  CString str;
  str.Format(%s, pSCds->lpData);
  // 等

  return TRUE;
  break;
 }
 return CDialog::DefWindowProc(message, wParam, lParam);
}

試していませんけど。(^^;


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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