程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 用C++Builder實現Windows 2000的Messenger

用C++Builder實現Windows 2000的Messenger

編輯:vc教程

本文講述了如何用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);
 }
}

以下是網絡結點枚舉函數,是個線程

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved