掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メッセージが消える? (ID:12528)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Delphi7を使っています。 スレッドからメッセージをメインフォームに送信しているのですが、メインフォーム側で受け取ってくれません。 ブレークしながら確認すると、ちゃんと以下に記述している SendMessageの所には来るのですが、WMCopyDataには来ないんです。 何が足りないのでしょうか? 'TMainForm' :メインフォームのクラス名 MSG_MAIN_MEMO:識別ID Command :送信文字列 送信するとき SendMsg('TMainForm', MSG_MAIN_MEMO, Command); SendMsgの詳細 procedure TThread.SendMsg(ClassName: string; StrKind: Cardinal; Msg: string); var Cd: TCopyDataStruct; Wnd:HWND; begin Wnd := FindWindow(PChar(ClassName), nil); if (Wnd <> 0) then begin Cd.dwData := StrKind; Cd.cbData := Length(Msg) + 1; // +1はnull Cd.lpData := StrAlloc(Cd.cbData); try StrCopy(Cd.lpData, PChar(Msg)); SendMessage(Wnd, WM_COPYDATA, WPARAM(Wnd), LPARAM(@Cd)); finally StrDispose(Cd.lpData); end; end; end; と、こんな具合で、メインフォームの受け取り側は、プライベートで procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA; を宣言し、 詳細は、 procedure TMainForm.WMCopyData(var Msg: TWMCopyData); var Buf: PChar; begin if (Msg.CopyDataStruct.dwData = MSG_MAIN_MEMO) then begin Buf := StrALloc(Msg.CopyDataStruct.cbData); try StrCopy(Buf, Msg.CopyDataStruct.lpData); MemoMsg(Buf); finally StrDispose(Buf); end; end else begin inherited; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.