技术开发 频道

用C++Builder实现Windows 2000的Messenger


【IT168技术文档】

  本文讲述了如何用C++Builder实现Messenger的详细方法,其中使用了如下技术:

  1. 多线程序技术,防止界面出现死锁。

  2. 使用了网络枚举来枚举在线的网络用户。

  3. 使用了Unicode的转换函数进从AnsiString到Unicode的转换。

  4. 使用了简单的不规则窗口的技术。

  5. 自动安装,将自己加入系统起动中。

  6. 系统托盘技术。

  编程方法:

  1. 在窗体上加入的有的控件:TListView,TTreeView,TMemo,菜单、托盘、按钮、状态栏  

  2. 针对各控件按本文所写加入代码即可。

  3. 以下是发送函数
void __fastcall TFormMain::ButtonSendClick(TObject *Sender) {  AnsiString Message,UserName,FromName;  TListItem *ListItem;  if(CheckBoxAnony->Checked)FromName=EditAnony->Text;  else FromName="";  Message=Memo1->Text;  if(Message==""){ShowMessage("Please Enter words to send");return;}  if(!ListView1->SelCount){   if(TreeView1->Selected==NULL){ShowMessage("Please select destnation");return;}   UserName=TreeView1->Selected->Text;   if(TreeView1->Selected->Level==1)UserName=UserName+"*";   new NetMessageSend(false,UserName,FromName,Message,CheckBoxGetRet->Checked);  return;  }  ListItem=ListView1->Selected;  UserName=ListItem->Caption;  if(TreeView1->Selected->Level==0)UserName+="*";  while(UserName[1]=='\\') UserName=UserName.SubString(2,UserName.Length()-1);  new NetMessageSend(false,UserName,FromName,Message,CheckBoxGetRet->Checked);  for(int i=1;iSelCount;i++){  ListItem=ListView1->GetNextItem(ListItem,sdAll,TItemStates()<  UserName=ListItem->Caption;  if(TreeView1->Selected->Level==0)UserName+="*";  while(UserName[1]=='\\')UserName=UserName.SubString(2,UserName.Length()-1);  new NetMessageSend(false,UserName,FromName,Message,CheckBoxGetRet->Checked);  } }
0
相关文章