C++Builder5ですが、アドバイスお願いします。
チャットのプログラムで受信するときにTClientSocketの
OnReadイベントハンドラに、Memo1->Lines->Add(Socket->
ReceiveText()とかけば、受信できますが、
この1行を書かなくていいようにコンポーネントとしてま
とめようとしています。
以下にチャットクライアントライブラリのメソッド部分を
のせましたので是非、良きアドバイスお願いいたします。
OnReadを拡張しようと考えたのですが・・・。
ChatClientという新しいコンポーネントを考えました。
void __fastcall TChatClient::Prepare(void)
{
//TODO: この下にコードを追加してください
if(Active){
Active=false;
}else{
if(User=="")
ShowMessage("あなたの名前を入力してください。");
else if(Host=="")
ShowMessage("接続先のホスト名を指定してください。");
else if(Port==0)
ShowMessage("接続先のポート番号を指定してください。");
else
Active=true;
}
}
void __fastcall TChatClient::TextSend()
{
//TODO: この下にコードを追加してください
if(Active)
Socket->SendText(User + ':' + SText);
else
ShowMessage("まず、接続してください。");
}
//ここから下がぜんぜんわかりません。
void __fastcall TChatClient::OnRead(TObject * Sender, TCustomWinSocket * Socket)
{
TClientSocket::OnRead( Sender, Socket);
RText=(Socket->ReceiveText());
}
OnReadは、Eventメソッドから呼ばれているようなので、これをoverrideしてOnReadを呼ぶ前にReceiveTextを呼べばできそうです。
B++Builderは今は持っていないので未確認です。
ツイート | ![]() |