关于winsock与msagent的编程---c++builder

//--------------------------------------------------------------------------- #include <vcl.h>#pragma hdrstop #include "Chat.h"#include "Unit2.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma link "AgentObjects_OCX"#pragma link "SUISkinEngine"#pragma link "trayicon"#pragma resource "*.dfm"TForm1 *Form1;IAgentCtlCharacterEx* Merlin;String IP;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){Name=m_sName;m_sHostAddress="169.254.237.0";ClientSocket1->Active=true;/*hostent   *p;char   s[128];gethostname(s,128);//获取指定计算机的名字p=gethostbyname(s);String HostIP=inet_ntoa(*((in_addr*)p->h_addr));   //获取指定计算机的IP地址if(p!=NULL)delete p; *///m_sHostAddress=IP;ClientSocket1->Address=m_sHostAddress;ClientSocket1->Port=50;m_sIsName="NA";m_sIsChat="CT";m_sSpeakTo="ALL";m_sPart="#";m_HasConnected=false;char tmp[100];GetWindowsDirectory(tmp,100);String tmppath=String(tmp)+"//msagent//chars//Genie.acs";BSTR Agentname = BSTR("Genie");           //将String 类型转变为 wchar_t*Variant Agentpath = Variant(tmppath);        //将tmppath 类型转变为tagVARIANTAgent1->Characters->Load(Agentname,Agentpath);Merlin = (IAgentCtlCharacterEx*)Agent1->Characters->Character(Agentname);}//---------------------------------------------------------------------------AnsiString __fastcall TForm1::GetLocalHostIP()  {          hostent   *p;          char   s[128];          gethostname(s,128);//获取指定计算机的名字          p=gethostbyname(s);          AnsiString HostIP=inet_ntoa(*((in_addr   *)p->h_addr));   //获取指定计算机的IP地址          if(p!=NULL)              delete p;          //p=NULL;          return  HostIP;  }  //-----------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){IP=GetLocalHostIP();TDateTime NowTime;NowTime=Now();Bar->Panels->Items[1]->Text=NowTime.DateTimeString();Label1->Caption="欢迎登录YYB聊天区";Edit2->Text=IP;RadioButton1->Checked=true;}//---------------------------------------------------------------------------void __fastcall TForm1::ClientSocket1Connecting(TObject *Sender,      TCustomWinSocket *Socket){Bar->Panels->Items[0]->Text="正在连接的.....";        }//---------------------------------------------------------------------------void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,      TCustomWinSocket *Socket){Bar->Panels->Items[1]->Text="服务器已断开连接...";ListUser->Items->Clear();m_HasConnected=false;}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){InputQuery("请输入你的用户名","用户名:",m_sName);if(m_sName.IsEmpty()){ShowMessage("你将使用默认名--YYB登录");m_sName="YYB";}if(ClientSocket1->Active==false)ClientSocket1->Open();        }//---------------------------------------------------------------------------void __fastcall TForm1::ClientSocket1Read(TObject *Sender,      TCustomWinSocket *Socket){String sInfo,sType,sChat;sInfo=Socket->ReceiveText();sType=sInfo.SubString(1,2);if(sInfo==String("CLEAR"))ListUser->Items->Clear();else{if(sType!=m_sIsChat){if(sInfo!=m_sName)Label1->Caption="新朋友来了!";ListUser->Items->Add(sInfo);}else{sChat=sInfo.SubString(4,sInfo.Length()-3);TVariant vText= sChat;TVariant vUrl= "";Media->FileName=GetCurrentDir()+"//Sound//Msg.wav";Media->Open();Media->Play();Merlin->Play(WideString("Announce"));Merlin->Speak(vText,vUrl);}}}//---------------------------------------------------------------------------void __fastcall TForm1::ClientSocket1Error(TObject *Sender,      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode){ErrorCode=0;        }//---------------------------------------------------------------------------void __fastcall TForm1::ListUserClick(TObject *Sender){if(m_HasConnected){String sTemp;if(m_sName==ListUser->Items->Strings[ListUser->ItemIndex]){ShowMessage("自己跟自己说!");}else{sTemp.sprintf("%s对%s说...",m_sName,ListUser->Items->Strings[ListUser->ItemIndex]);m_sSpeakTo=ListUser->Items->Strings[ListUser->ItemIndex];Label1->Caption=sTemp;}ChatForm->Show();//AnimateWindow(Form1->Handle,2000,AW_HIDE|AW_SLIDE|AW_HOR_POSITIVE|AW_VER_POSITIVE);Form1->Hide();}elseShowMessage("对不起,请先登录!");Merlin->Show(Variant(0));Merlin->MoveTo(100,100,Variant(2));Merlin->Play(WideString("Search"));Merlin->Play(WideString("Congratulate"));Merlin->Play(WideString("Wave"));TVariant vText= "欢迎来到YYB世界!这里你将感受到YYB带给你的全新的视觉体验!";TVariant vUrl= "";Merlin->Speak(vText,vUrl);}//---------------------------------------------------------------------------void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,      TCustomWinSocket *Socket){Socket->SendText(m_sIsName+m_sName);String sTemp;sTemp.sprintf("%s登录成功!",m_sName);ShowMessage(sTemp);Bar->Panels->Items[0]->Text=sTemp;//Label->m_HasConnected=true;         }//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){if(ClientSocket1->Socket->Connected)ClientSocket1->Socket->Close();Bar->Panels->Items[0]->Text=m_sName+"离开....";}//---------------------------------------------------------------------------void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key,      TShiftState Shift){if(!Edit2->Text.IsEmpty()){m_sHostAddress=Edit2->Text;ClientSocket1->Address=m_sHostAddress;}}//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender){Agent1->Characters->Release();Agent1->Characters->Unload(BSTR("Genie"));Close();}//---------------------------------------------------------------------------void __fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key,      TShiftState Shift){if(Key==VK_RETURN){int port=atoi(ComboBox1->Text.c_str());ComboBox1->Items->Add(String(port));ClientSocket1->Port=port;}}//---------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender){TDateTime NowTime;NowTime=Now();Bar->Panels->Items[1]->Text=NowTime.DateTimeString();}//--------------------------------------------------------------------------- void __fastcall TForm1::N2Click(TObject *Sender){Close();        }//--------------------------------------------------------------------------- void __fastcall TForm1::FormHide(TObject *Sender){AnimateWindow(Form1->Handle,2000,AW_HIDE|AW_SLIDE|AW_HOR_POSITIVE|AW_VER_POSITIVE);        }//--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender){AnimateWindow(Form1->Handle,2000,AW_BLEND);}//--------------------------------------------------------------------------- void __fastcall TForm1::TrayIcon1Click(TObject *Sender){//Pop->}//---------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值