はじめまして、
VC++6.0を使ってMFCベースのシリアル通信アプリケーションを作っている初心者です。
以下の手順の受信処理を考えており
1)シリアルポートからのキャラクタ単位の受信情報をワーカスレッド内で受信
2)改行コードを検出した際、この受信行のキャラクタ文字列を取り込む
3)ワーカスレッド内で、PostMessage関数を用いて、ユーザ定義の関数の起動を指示
4)ユーザ定義の関数内で、受信行の内容を解析し、これに応じた処理(表示等)を行う。
1)、2)までは来たのですが
PostMessage関数の使い方と、ユーザによるハンドラ関数の定義のための手順が良く分からず、
3)の段階が実現できません。
この辺りをご教授頂ければ、幸いです。
らららです。
自分でとりあえず、以下のように適当なメッセージを定義します。
#define WM_MYMESSAGE WM_USER+100
//メッセージを受け取るクラスで以下のメソッドを定義
afx_msg LRESULT OnMyMessage(UINT wParam,LONG lParam);
//メッセージマップに以下を追加。
BEGIN_MESSAGE_MAP(CxxxView, CFormView)
ON_MESSAGE(WM_MYMESSAGE,CxxxView::OnMyMessage ) // 追加
END_MESSAGE_MAP()
// メソッドの内容を記述
LRESULT CxxxView::OnMyMessage(WPARAM wParam, LPARAM lParam )
{
// ここにメッセージを受け取ったときの処理を記述
}
これでどうでしょう。
らららさん、ありがとうございます。
ご指導の方法で、WM_MYMESSAGEによるユーザ定義メッセージの追加
及び対応メソッドのコールが可能になりました。
で追加で確認(質問?)なのですが
#define WM_MYMESSAGE WM_USER+100
の形でユーザメッセージを定義する際、WM_USER+100という値を割り当て
ていますが、この値に関しては何か制限があるのでしょうか?
さらに、ユーザ定義メッセージを追加したい場合、WM_USER+101,WM_USER+102・・
といった形で追加していってよいのしょうか?
値に限界があるのであれば、どの位なのでしょうか?