TeamTalk初學筆記2---關於win-client【第一篇】

        爲了直觀的修改TT客戶端頁面,我花了不少時間在網上尋找UIDesigner設計工具。最後實在是找不到了,就找了同事幫忙,他climb over the wall(這個詞都成敏感詞彙了?博客裏竟然不許用)以後終於幫我下載到了。算法

如下是Duilib的一些網址,不少都須要climb over the wall後才能訪問。多線程

官網: www.duilib.com app

論壇: bbs.duilib.com svn

qq: 153787916(1),79145400(2)1507570(3函數

google code項目託管地址: http://code.google.com/p/duilib/ 工具

svn: http://duilib.googlecode.com/svn/trunk/ 佈局

新浪微博: http://weibo.com/duilib 學習

騰訊微博: http://t.qq.com/duilibui

         客戶端的具體頁面佈局xml文件在VS工具中的目錄如圖1所示:google


1

這些xml源代碼文件放在文件夾E:\tools\mogu.io\TeamTalk-master\win-client\bin\teamtalk\gui\下面。

修改舉例:詳細信息頁面的用戶名顯示不全,我用UIDesigner工具打開了UserDetailInfoDialog.xml這個頁面,並將width改成了80。如圖2

2

接下來具體分析一下win-client的源碼包:VS打開後,如圖3,紅色標註的我在第一篇博客裏面講到過的涉及採用到其餘第三方庫。這裏就先不去深刻學習了,後面涉及到那塊就學哪塊吧。

3

接下來重點講一下其餘部分:

Sln_define:解決方案的全局性配置(GlobalConfig.h)和全局變量(GlobalDefine.h)的定義。

Utility顧名思義:公用模塊,如圖4

4

  1. CppSQLite3是對SQLiteAPI進行了二次封裝的類。

參考資料:http://blog.csdn.net/stan1989/article/details/8589293

http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite/

  1. IniOperation:對ini文件進行讀寫操做的API的封裝。

  2. Md5:對md5加密算法的封裝。

  3. Multilingual:多語言支持包,當前只有一個從win-client\bin\teamtalk\chinese.ini文件裏面取中文翻譯的函數。

  4. TTThread:多線程的封裝(建立、銷燬、掛起等)。

  5. utilCommonAPI:常規的自定義公用函數

    原做者 快刀kuaidao@mogujie.com 同志,一個函數的註釋也沒有,還好均可以顧名思義,我註釋了以下,不對的地方請網友指正

    //二進制轉十六進制再轉字符串

    CString binToHexToCString(const unsigned char * data, size_t len)


    //獲取md5字符串

    CString getMd5CString(const char* pSrc, size_t length)


    //獲取當前進程已加載模塊的文件的完整路徑

    CString getAppPath()


    //獲取當前進程已加載模塊的文件的父路徑

    CString getParentAppPath()


    //建立路徑中的所有文件夾

    BOOL createAllDirectories(CString & csDir)

     

    //基於BKDR的哈希算法

    UInt32 hash_BKDR(const char* str)

     

    //消息泵(抽取消息、翻譯消息、分發消息)

    void messagePump()

     

    //將空間單位轉換爲人類可讀的單位

    std::string getHumanReadableSizeString(double size)

     

    //文件是否存在

    BOOL isFileExist(IN const LPCTSTR csFileName)

     

    //註冊dll控件

    BOOL registerDll(const CString& sFilePath)

     

    //線程等待函數(這裏500ms做爲判斷時間)

    BOOL waitSingleObject(HANDLE handle, Int32 timeout)

  6. utilstrCodingAPI:自定義的字符串編碼公用函數

    //32位整型轉字符串

    CString int32ToCString(Int32 n)

     

//字符串轉32位整型(要求輸入的參數字符串是符合int範圍[-2147483648, 2147483647])

Int32    cstringToInt32(LPCTSTR buff)

 

//無符號32位整型轉字符串

std::string uint32ToString(UInt32 n)

 

//字符串轉32位整型(不作參數檢查)

Int32 stringToInt32(const std::string& src)

 

//utf8轉字符串

CString utf8ToCString(const char* src)

 

//字符串轉utf8

std::string cStringToUtf8(const CString& src)

 

//寬字符轉窄字符

const std::string ws2s(const std::wstring& src)

 

//窄字符轉寬字符

const std::wstring s2ws(const std::string& src)

 

//是否包含中文

BOOL isIncludeChinese(const std::string& str)

 

//獲取第一個字母

std::string GetFirstLetter(const char* strChs)

 

//漢字轉首字母拼音

CString HZ2FirstPY(IN std::string szHZ)

 

//漢字轉拼音

char* ConvertChineseUnicodeToPyt(wchar_t* chrstr)

 

//整句翻譯成拼音

 CString HZ2AllPY(IN CString szHZ)

 

//拆分字符串

    Int32 splitString(__in std::wstring src, __in std::vector<std::wstring> _vecSpliter,

     __out std::vector<std::wstring> &_splitList)

相關文章
相關標籤/搜索