【文章內(nèi)容簡(jiǎn)介】
* ? )。 ? ( )。 ? 通過(guò)函數(shù) ()釋放鼠標(biāo)的捕獲。然后就是我們應(yīng)該很熟悉的操作了,獲取列表視圖矩形大小、創(chuàng)建覆蓋列表視圖的區(qū)域、判斷鼠標(biāo)點(diǎn)移動(dòng)到了創(chuàng)建的區(qū)域范圍之內(nèi)時(shí),添加任意的操作。 列表視圖項(xiàng)目拖動(dòng)效果 ? 與樹形視圖項(xiàng)目拖動(dòng)效果類似,我們可以通過(guò)捕獲個(gè)事件來(lái)添加拖動(dòng)效果的代碼,他們是:鼠標(biāo)左鍵選中項(xiàng)目并且開始拖動(dòng)、鼠標(biāo)移動(dòng)和鼠標(biāo)左鍵抬起。 ? 首先需要在類的實(shí)現(xiàn)文件頭部添加文件包含指令如下: ? ? ? 在類的頭文件添加類的聲明,代碼如下: ? 。 .選中視圖項(xiàng) ? 利用類向?qū)轭愄砑雍瘮?shù) (),如圖所示。 圖 為類添加消息響應(yīng) ? 為函數(shù) ()添加代碼,如下: ? 函數(shù) ()中的變量是類的公有成員變量,定義如下: ? 成員變量在類的構(gòu)造函數(shù)初始化如下: ? 函數(shù) ()會(huì)調(diào)用類的個(gè)成員函數(shù): ()和 ()。 ? ()用來(lái)檢索滿足指定條件的列表項(xiàng),函數(shù)原型如下: ? ( ? , ? ? ) 。 ? 參數(shù)含義如下: ? :開始檢索時(shí)起始列表項(xiàng)的索引,若為將會(huì)匹配滿足所指條件的第一個(gè)列表項(xiàng),所指定的列表項(xiàng)不會(huì)被檢索。 ? ()用來(lái)為指定的列表項(xiàng)創(chuàng)建拖動(dòng)圖像,函數(shù)原型如下: ? * ( ? , ? ? )。 ? 參數(shù)含義如下: ? :要?jiǎng)?chuàng)建拖動(dòng)圖像的列表項(xiàng)的索引。 ? 函數(shù) ()剩下的操作,我們應(yīng)該很熟悉了才對(duì),包括:調(diào)用類的成員函數(shù) (),標(biāo)志開始拖動(dòng)圖像;調(diào)用類的成員函數(shù) (),鎖定視圖的更新;調(diào)用類的成員函數(shù) ()捕獲鼠標(biāo)后續(xù)的所有事件。 .圖像隨鼠標(biāo)移動(dòng) ? 利用類向?qū)轭愄砑酉乱粋€(gè)事件:鼠標(biāo)移動(dòng)。如圖所示。 圖 添加鼠標(biāo)移動(dòng)事件 ? 為函數(shù) ()添加代碼,如下: ? 函數(shù) ()的實(shí)現(xiàn)過(guò)程同樣包括:獲取樹形視圖、列表視圖窗口矩形大小,創(chuàng)建覆蓋樹形視圖、列表視圖窗口的區(qū)域,檢測(cè)鼠標(biāo)處于拖動(dòng)圖像狀態(tài),而且在樹形視圖或列表視圖的區(qū)域范圍內(nèi),調(diào)用類的成員函數(shù) ()拖動(dòng)圖像。 .鼠標(biāo)圖像釋放 ? 利用類向?qū)轭愄砑幼詈笠粋€(gè)事件:鼠標(biāo)左鍵彈起。如圖所示。 圖 添加鼠標(biāo)左鍵彈起事件 ? 為函數(shù) ()添加代碼,如下: ? 函數(shù) ()實(shí)現(xiàn)的功能包括:解鎖拖動(dòng)窗口、結(jié)束拖動(dòng)操作、釋放鼠標(biāo)的捕獲、獲取樹視圖矩形大小、創(chuàng)建覆蓋樹視圖的區(qū)域、判定鼠標(biāo)點(diǎn)在樹視圖區(qū)域之內(nèi)。 實(shí)現(xiàn)客戶端 ? 這個(gè)實(shí)例是通過(guò) 來(lái)實(shí)現(xiàn)客戶端的,因此無(wú)需考慮底層的通信協(xié)議和數(shù)據(jù)傳輸工作,所以我們把近一半的精力用在了華麗的程序界面上。 類介紹 ? 提供的類是對(duì) 的封裝,為我們提供了更加方便的編程接口。主要用到兩個(gè)類:和。 類 ? 用來(lái)創(chuàng)建或者初始化一個(gè)或多個(gè)同步的網(wǎng)絡(luò)會(huì)話。它的構(gòu)造函數(shù)原型如下: ? ( ? , ? , ? , ? , ? , ? ? )。 ? 我們的實(shí)例程序直接使用了所有的默認(rèn)參數(shù)值。 ? 當(dāng)我們要在服務(wù)器上執(zhí)行指定的服務(wù),如服務(wù),必須要先建立連接,用到的成員函數(shù)是 ()。函數(shù)原型如下: ? * ( ? , ? , ? , ? , ? ? )。 ? 參數(shù)含義如下: ? :包含服務(wù)器地址的字符串。 ? :為這個(gè)會(huì)話指定被動(dòng)或主動(dòng)的模式,默認(rèn)為主動(dòng)模式。 ? 返回一個(gè)指向類的指針。 類 ? 此類主要用于管理服務(wù)連接,并允許用戶直接操作服務(wù)器目錄和文件。我們主要用到了此類的個(gè)成員函數(shù): ()用來(lái)上傳文件, ()用來(lái)下載文件。函數(shù)原型如下: ? ( ? , ? , ? , ? ? )。 ? 參數(shù)含義如下: ? :包含要上傳文件路徑的字符串。 ? 依據(jù)返回值判定上傳操作是否成功。函數(shù) ()的原型如下: ? ( ? , ? , ? , ? , ? , ? ? )。 ? 參數(shù)含義如下: ? :包含要接收服務(wù)器上文件路徑的字符串。 ? 讀者可以依據(jù)函數(shù) ()的返回值來(lái)判定下載操作是否成功。 服務(wù)器操作 ? 通過(guò)浮動(dòng)對(duì)話框獲取用戶輸入的信息,調(diào)用類的成員連接、登錄服務(wù)器,最后將服務(wù)器根目錄下的所有文件顯示在列表視圖中。浮動(dòng)對(duì)話框如圖所示。 圖 浮動(dòng)對(duì)話框 ? 我們需要在類中手動(dòng)添加“連接服務(wù)器”和“確定”按鈕的消息響應(yīng)函數(shù) ()和 (),步驟如下: ? ()在類頭文件添加文件包含指令,用來(lái)支持類,如下: ? 為了使用 ? 在類中添加成員變量和成員函數(shù),如下: I D C _ D I S C I D C _ I P I D C _ N A M E I D C _ P A S S W O R DI D C _ C H O O S E D I S C I D C _ P O R T I D C _ C O N N E C T? ()在類的實(shí)現(xiàn)文件添加文件包含指令,用來(lái)支持個(gè)分割窗口視圖,如下: ? 個(gè)窗體的頭文件 ? ? ? 添加消息映射,即控件與處理事件函數(shù)建立聯(lián)系,如下: