Welcome

首页 / 软件开发 / C++ / 用C++Builder实现Windows 2000的Messenger

用C++Builder实现Windows 2000的Messenger2008-01-05 yesky 刘纪锋本文讲述了如何用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);
}
}

以下是网络结点枚举函数,是个线程