亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析C語言創(chuàng)建資源管理器的方法與技巧

        2014-12-31 00:00:00李宇卿
        數(shù)字化用戶 2014年13期

        【摘 要】在windows操作系統(tǒng)使用過程中,經(jīng)常要使用資源管理器以實現(xiàn)對文件的各種操作,本文詳細(xì)闡述了如何用c語言調(diào)用Win32API創(chuàng)建類似資源管理器的方法,內(nèi)容涉及到自定義窗口的實現(xiàn),windows消息處理,窗口重繪,托盤區(qū)的操作,多標(biāo)簽的實現(xiàn)原理等多方面的編程問題,在實現(xiàn)過程中,不僅可以接觸到windows底層的相關(guān)技術(shù),而且對算法基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)也進(jìn)行了深入的探討和研究。

        【關(guān)鍵詞】c語言;Win32API;資源管理器

        在windows操作系統(tǒng)下,有很多非常優(yōu)秀的資源管理器軟件,它們不僅能讓用戶有良好的交互體驗,而且能快速高效的對文件進(jìn)行相應(yīng)的操作。用C語言開發(fā)資源管理器軟件,不僅可以提高C語言的編程能力,而且能夠深入理解操作系統(tǒng)的核心,對于計算機編程和教學(xué)無疑是一種極大的促進(jìn)。

        一、開發(fā)資源管理器的目的

        資源管理器的目的是為了高效方便的實現(xiàn)對文件的打開,刪除,復(fù)制,粘貼等功能,然而對于windows自帶的資源管理器,有很多不便之處,于是,市面上出現(xiàn)了很多增強版的資源管理器軟件,實現(xiàn)了很多特性,可以有效的提高操作效率。開發(fā)本資源管理器的目的也在于此:高效而便捷的操作,提升用戶體驗。為了實現(xiàn)這個目的,就要了解目前的常用資源管理器類軟件的優(yōu)劣,針對性的開發(fā)出特色性的功能,以滿足個性化的需求。

        二、本資源管理器實現(xiàn)的特性

        1.純鍵盤操作。鼠標(biāo)的操作在文件管理過程中,經(jīng)常是低效率的,不論是窗口的開關(guān)、移動,還是文件的選擇,都需要頻繁的移動和點擊,這也是導(dǎo)致“鼠標(biāo)手”的一個原因。通過鍵盤輸入,不僅可以通過軟件提供的相關(guān)特性,實現(xiàn)相關(guān)操作,而且簡單高效。

        2.邊輸邊查。在日常的應(yīng)用中,頻繁的目錄跳轉(zhuǎn),以及文件和目錄的定位是最常用的功能,然而,傳統(tǒng)的資源管理器軟件在這方面有明顯的缺陷,具體表現(xiàn)在以下方面:首先,如果要打開多級目錄下的某個文件,需要通過鼠標(biāo)點擊層層進(jìn)入,有時如果忘記具體目錄的名稱,甚至要逐個目錄打開查找,效率非常低下;其次,一個目錄下文件過多時,要在眾多文件和文件夾中找到自己所需要的目標(biāo),常常要逐個查看名稱,耗時費力;最后,無法實現(xiàn)模糊匹配,對中文名稱難以過濾,只能通過排序查找,不符合國情。鑒于以上問題,本軟件實現(xiàn)了輸入過程中自動過濾顯示匹配的文件和目錄。

        3.多標(biāo)簽。多標(biāo)簽是目前許多軟件的一個特性,然而,傳統(tǒng)的資源管理器卻并無此功能。多標(biāo)簽功能可以使用戶避免重復(fù)打開軟件,從而簡化操作。

        三、技術(shù)要點

        1.自定義樣式。Win32API創(chuàng)建windows對話框時,首先要注冊窗口類WNDCLASSEX,需要注意的是,要讓窗口響應(yīng)鼠標(biāo)雙擊事件時,需要設(shè)置窗口類樣式CS_DBLCLKS。在注冊窗口類時,需要為其制定消息處理過程,函數(shù)原型如下:

        LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)為了要處理程序參數(shù)傳遞問題,在WinMain函數(shù)入口處,我們通過調(diào)用GetCommandLine()獲取命令行參數(shù),這樣,就可以在命令行下指定打開的路徑了。為了實現(xiàn)自定義樣式,調(diào)用CreateWindowEx時,要特別指定窗口的擴展風(fēng)格,具體如下:WS_EX_TOOLWINDOW/*不在任務(wù)欄顯示*/| WS_EX_TOPMOST/*置頂*/ | WS_EX_LAYERED/*窗口透明化*/在Windows 2000/XP中,User32.dll增加了一個新函數(shù)SetLayeredWindowAttributes。要使用該函數(shù),我們必須在生成窗口或使用SetWindowLong函數(shù)中設(shè)置窗口風(fēng)格WS_EX_LAYERED (0x00080000)。該風(fēng)格一旦被設(shè)置,我們就可以調(diào)用該函數(shù)來透明化窗口。具體調(diào)用過程如下:

        HMODULE hUser32 = GetModuleHandle(\"USER32.DLL\");

        g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32, \"SetLayeredWindowAttributes\");

        (*g_pSetLayeredWindowAttributes)(hwnd, RGB(255,255,255), 150, 2);

        2.系統(tǒng)托盤區(qū)操作。系統(tǒng)托盤區(qū)操作主要是通過調(diào)用Shell_NotifyIcon來實現(xiàn)的,其函數(shù)原型如下:

        BOOL Shell_NotifyIcon(DWORD dwMessage,NOTIFYICONDATA lpdata);

        通過控制dwMessage參數(shù)值,即可控制托盤區(qū)圖標(biāo)的顯示和刪除。在消息處理過程中,WM_CREATE消息處理時,初始化NOTIFYICONDATA ,并且顯示托盤區(qū)圖標(biāo),在處理關(guān)閉程序消息WM_CLOSE時,及時的刪除托盤區(qū)圖標(biāo)。為了能夠處理托盤圖標(biāo)的點擊消息,需要增加自定義消息WM_TRAYNOTIFY,在此消息處理時,可以區(qū)分鼠標(biāo)左右鍵點擊操作,并處理相應(yīng)的消息。在右鍵點擊時,我們通過創(chuàng)建右鍵菜單,可以控制程序的顯示、退出等操作。

        3.多標(biāo)簽的實現(xiàn)原理。為了實現(xiàn)多標(biāo)簽,我們首先需要創(chuàng)建Pages標(biāo)簽鏈表,在該鏈表對應(yīng)的節(jié)點結(jié)構(gòu)體如下:

        typedef struct _Pages{

        char* path;

        int id;

        struct _Pages *next;

        } Pages;

        其中path為當(dāng)前標(biāo)簽頁對應(yīng)的完整路徑,在切換標(biāo)簽時,通過該路徑可以確定當(dāng)前的文件列表內(nèi)容。此鏈表為單向鏈表,在創(chuàng)建標(biāo)簽時,要注意鏈表的插入操作,通過在刪除標(biāo)簽頁時,應(yīng)及時清除內(nèi)存,避免內(nèi)存泄露情況的發(fā)生。切換標(biāo)簽頁,實際上就是鏈表的查找過程:當(dāng)切換至某個標(biāo)簽頁時,通過鏈表節(jié)點中所記錄的完整路徑,得到當(dāng)前所操作的目錄,從而重繪標(biāo)題欄中的標(biāo)簽頁名稱。

        4.文件列表的繪制和操作。資源管理器的重要部分就是文件列表的顯示和操作,在WM_PAINT窗口重繪消息處理時, 通過標(biāo)簽節(jié)點所對應(yīng)的路徑,得到該路徑下的所有文件列表信息,需要注意的是,如果路徑為空,此時應(yīng)顯示驅(qū)動器列表,通過調(diào)用GetLogicalDriveStrings,可以得到所有驅(qū)動器字符串信息,而后可以得到每個驅(qū)動器的詳細(xì)信息。在得到某個路徑下的文件列表時,為了更好地區(qū)分文件和目錄,目錄采用粗體顯示,在輸入時,通過獲得路徑分割符\\后的字符串,來模糊匹配,過濾顯示所有符合條件的文件和目錄。

        通過處理WM_KEYDOWN消息,文件列表的操作可以通過鍵盤快速進(jìn)行,方向鍵可以循環(huán)選中條目,回車鍵可以跳轉(zhuǎn)目錄和打開文件。

        四、結(jié)語

        本文論述了C語言創(chuàng)建資源管理器的方法和注意事項,分析了傳統(tǒng)資源管理器的優(yōu)劣,通過Win32Api開發(fā)了更加高效實用的軟件。在此過程中,不僅提高了C語言編程水平,而且創(chuàng)新性的實現(xiàn)了Windows環(huán)境下更加高效的操作方法。在軟件行業(yè)高速發(fā)展的今天,筆者認(rèn)為,創(chuàng)新性思維是軟件從業(yè)者的靈魂所在,是我們永久需要思考的話題。

        參考文獻(xiàn):

        [1] 赫伯特希爾特.C語言大全(第四版), 2001.09

        [2] 新編Windows API參考大全,電子工業(yè)出版社,2000.04

        久久精品国产视频在热| 久久99热精品这里久久精品| 中日韩欧美成人免费播放 | 女人喷潮完整视频| 欧美亚洲综合另类| 午夜一区二区三区av| 精品一级一片内射播放| 成人精品视频一区二区| 区二区欧美性插b在线视频网站| 日韩欧美区| 亚洲av套图一区二区| 久久精品蜜桃亚洲av高清| 国产成人喷潮在线观看| 精品乱码一区二区三区四区| 久久精品国产亚洲av成人擦边| 亚洲精品岛国av一区二区| aa片在线观看视频在线播放 | 国产精品18久久久久网站| 色av色婷婷18人妻久久久| 国产精品亚洲av无人区一区香蕉| 国产一极内射視颍一| 中文字幕无码人妻丝袜| 国产一区二区三区再现| 亚洲av午夜精品无码专区| 波多野结衣一区二区三区高清| 国内精品福利在线视频| av在线不卡免费中文网| 亚洲av日韩av天堂久久| 久久天天躁狠狠躁夜夜爽蜜月| 中国少妇和黑人做爰视频| 一区二区三区国产在线视频| 欧美极品色午夜在线视频| 中文字幕无码免费久久| 久久精品视频中文字幕无码| 24小时在线免费av| 性欧美videofree高清精品| 国产成+人+综合+亚洲专| 日韩一区二区中文天堂| 日本成本人片免费网站| 99在线播放视频| 极品新娘高清在线观看|