掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
AllocateHWndの処理の記述方法 (ID:30218)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 socket通信について勉強しようとしてて、いきなりつまづいてます。 ソケット こける Wired-Winsockを使ってみようぜ 6.Windowが固まっちゃうなぁ http://www.asahi-net.or.jp/~nk2w-ishr/winsock6.htm このサイトの内容全体が....ちょっとわけがわからなさすぎて.... まあ、いいや。 ここの内容についてなのですが 下記のようなサンプルソースを書いてみました。 AllocateHWndについては初めて記述しますので疑問があります。 AllocateHWndに指定するWndProcを 自分自身のメソッドとして登録してしまってよいものでしょうか? TForm1.WndProcを登録させなくていいのかな? という疑問がひとつ、 もう一つ、 このクラスで確保したハンドルに対して 定期的にWM_TIMERを送信する仕組みを作れると思うのですが それはどのようにするのでしょうか? ご存じのかた、おられましたら。 よろしくお願いします。 下記サンプルでは Button1でカウンターの中身表示して Button2でメッセージを送ってカウンターを増加させてます。 type TAsyncSocketTest = class FCounter: Integer; FallocateHWndResult: THandle; constructor Create; destructor Destroy; override; procedure WndProc(var Msg:TMessage); end; type TForm1 = class...省略 private FAsyncSocketTest1: TAsyncSocketTest; end; const WM_MYMESSAGE = WM_USER + 1; constructor TAsyncSocketTest.Create; begin inherited; FCounter := 0; Self.FallocateHWndResult := AllocateHWnd(Self.WndProc) end; destructor TAsyncSocketTest.Destroy; begin DeallocateHWnd(Self.FallocateHWndResult); inherited; end; procedure TAsyncSocketTest.WndProc(var Msg:TMessage); begin if Msg.msg=WM_MYMESSAGE then begin Inc(FCounter); end else begin Msg.Result:=DefWindowProc(FallocateHWndResult,Msg.Msg,Msg.wParam,Msg.lParam); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Self.Caption := IntToStr( FAsyncSocketTest1.FCounter ); end; procedure TForm1.Button2Click(Sender: TObject); begin SendMessage(FAsyncSocketTest1.FallocateHWndResult, WM_MYMESSAGE, 0, 0); end; procedure TForm1.FormCreate(Sender: TObject); begin FAsyncSocketTest1 := TAsyncSocketTest.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FAsyncSocketTest1.Free; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.