はじめまして。
今VC++6.0にて、ドキュメント・ビューアーキテクチャを使用して
プログラムを作成しています。
WM_COPYDATAメッセージを用いて、このアプリケーション宛てに
他のアプリケーションより送られた文字列を取得する処理を追加
したいのですが、以下のような状況が解決できずに困っております。
送られてきたメッセージは、CMainFrameクラスのOnCopyData()にて
処理することができますが、このメッセージをビュークラス(CView)の
OnCopyData()にて処理するようにしたいのですが、どのようにすれば
可能になるでしょうか。
よろしくお願いいたします。
補足ですが、SDIアプリケーションで作成しており、ビュークラスは
基底クラスをCFormViewに変更しています。
MFCをお使いであれば
単にClassWizardのメッセージマップタブを選択し
クラス名のコンボBOXで、そのViewを選択すれば良いのでは?
違う意味かなぁ?
Bunさん、こんばんは。
おっしゃるような手順で、ビューに対してもWM_COPYDATAのメッセージを処理できるように
関数を追加しましたが、こちらの関数が呼び出されないのです。
CMainFrameクラスに関数を追加した場合は、呼び出されています。
CMainFrameクラスのOnCopyData()にて、メッセージをビュークラスに対してメッセージを
転送してやれば良いのかとも思ったりするのですが・・・。
くり様 おはようございます。
> 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);
}
試していませんけど。(^^;