• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Qt Quick (Qt User Interface Creation Kit)

            https://developer.qt.nokia.com/wiki/QML


            Qt Quick (Qt User Interface Creation Kit)

            The key new feature of the Qt 4.7 [doc.qt.nokia.com] and Qt Creator [developer.qt.nokia.com] 2.1 releases is Qt Quick [doc.qt.nokia.com]: a high-level UI technology that allows developers and UI designers to work together to create animated, touch-enabled UIs and lightweight applications. It includes:

            1. New Tools in the Qt Creator IDE: including a visual editor that allows UI designers and developers to cooperate, working on the same code in an iterative approach
            2. QML (Qt Meta-Object Language): an easy to use, declarative language
            3. QtDeclarative: a new module in the Qt library that enables a new declarative programming approach

            And while no C++ programming skills are needed to use Qt Quick, it is 100% based on Qt and can be extended from C++ (and other languages, thanks to the bindings), limited only by your creativity.

            Scope (Qt Creator 2.1 and Quick)

            • QML project wizard and project management (new file format for pure QML applications)
            • Advanced QML editor with syntax highlighting, code completion, integrated help features and more
            • Qt Quick Designer: Visual WYSIWYG editor to create Qt Quick user interfaces (technical preview)
            • Qt Quick Components: Common UI Elements that fit into platform Look & Feel

            QML vs. Widget-based GUI

            Qt beginners often ask: What option will be the best for creating my user interface. With Qt there are 3 techniques (wich can be integrated):

            • using Qt Designer to create *.ui files, a XML-based UI description
            • coding the setup of your UI in C++ with Qt widgets classes
            • write or visually design (or modeling with Qt Creator 2.1) QML files

            The HowTo is still to be done but use the tag qml vs widget [developer.qt.nokia.com] when searching and finding, thx :)

            Links

            Categories:

            posted @ 2011-08-16 23:15 RTY 閱讀(527) | 評論 (0)編輯 收藏

            posted @ 2011-08-14 08:36 RTY 閱讀(1842) | 評論 (0)編輯 收藏

                 摘要: http://yanboo.ycool.com/post.2749491.html(來自Qt文檔)Qt有兩種與插件有關(guān)的API。一種用來擴展Qt本身的功能,如自定義數(shù)據(jù)庫驅(qū)動,圖像格式,文本編解碼,自定義分格,等等,稱為Higher-Level API。另一種用于應(yīng)用程序的功能擴展,稱為Lower-Level API。前一種是建立在后一種的基礎(chǔ)之上的。這里討論的是后一種,即用來擴展應(yīng)用程序的Low...  閱讀全文

            posted @ 2011-08-10 07:34 RTY 閱讀(2083) | 評論 (0)編輯 收藏

            http://hi.baidu.com/51634780/blog/item/6e99de041d682689e850cd2a.html

            dll中非導(dǎo)出函數(shù)的調(diào)用
            這幾天在學(xué)習(xí)pe,對輸出表特別興趣。程序?qū)?dǎo)出函數(shù)調(diào)用,最終是對導(dǎo)出
            函數(shù)入口地址的調(diào)用,非導(dǎo)出函數(shù)的入口地址不在導(dǎo)出表里,所以其他程序

            無法

            調(diào)用非導(dǎo)出函數(shù)。
            本人剛開始的想法是在內(nèi)存里修改dll的導(dǎo)出表,使非導(dǎo)出函數(shù)變成導(dǎo)出函

            數(shù),

            供自己的程序調(diào)用。后來想到可不可以直接調(diào)用非導(dǎo)出函數(shù)的入口地址呢?

            感覺

            應(yīng)該可以,有了這個想法后就馬上開始動手試驗。

            自己寫了個簡單的dll,其中有2個導(dǎo)出函數(shù)a1,b1,1個內(nèi)部函數(shù)c1
            先用call的方法調(diào)用導(dǎo)出函數(shù):a1
            invoke LoadLibrary,CTEXT('testdll.dll')
            mov @var1,eax        ;模塊句柄(也是模塊的基址)存入@var1 
            invoke GetProcAddress,@var1,CTEXT('a1')
            mov @lpProc,eax ;導(dǎo)出函數(shù)的入口地址存入@lpProc
            push 5      ;函數(shù)參數(shù)3
            push 9      ;函數(shù)參數(shù)2
            push hWnd      ;函數(shù)參數(shù)1
            call @lpProc      ;函數(shù)調(diào)用
            一切正常。

            再調(diào)用非導(dǎo)出函數(shù)試試,在調(diào)用非導(dǎo)出函數(shù)c1前,必須找到c1的相對虛擬
            地址,
            先用程序裝入dll
            invoke LoadLibrary,CTEXT('testdll.dll')
            mov @var1,eax    ;模塊句柄,也是模塊的基址
            然后運行程序,用OD調(diào)試,找到c1的入口地址:1000100C
            1000100C           55            push ebp
            1000100D           8BEC          mov ebp,esp
            1000100F           8B45 08       mov eax,dword ptr ss:[ebp+8]
            10001012           0345 0C       add eax,dword ptr ss:[ebp+C]
            10001015           C9            leave
            10001016           C2 0800       retn 8

            通過 @var1獲得模塊的基址是10000000
            那末c1的相對虛擬地址就是:1000100C-10000000=100c
            做好了這一步后,就可以在自己的程序里調(diào)用非導(dǎo)出函數(shù)了。
            調(diào)用非導(dǎo)出函數(shù):
            invoke LoadLibrary,CTEXT('testdll.dll')
            mov @var1,eax       ;模塊句柄(也是模塊的基址)存入@var1
            add @var1,100ch    ;得到c1的入口地址
            push 5      ;函數(shù)參數(shù)2
            push 9      ;函數(shù)參數(shù)1
            call @var1      ;函數(shù)調(diào)用
            得到了想要的結(jié)果,一切ok!

            用這種方法可以調(diào)用別人dll的非導(dǎo)出函數(shù)。


            posted @ 2011-08-10 07:08 RTY 閱讀(1247) | 評論 (0)編輯 收藏

            http://blog.csdn.net/aca_jingru/article/details/2524697

            1. 本文轉(zhuǎn)自codeprojcet  <a href="http://www.codeproject.com/kb/dll/dllease.aspx">http://www.codeproject.com/KB/DLL/dllease.aspx</a>   

            load dll也就是load dll中的函數(shù),一般是loadlibrary,GetProcAddress,每一步都要判斷函數(shù)返回是否正確,比較繁瑣,

            該作者干脆做了個封裝,將這些重復(fù)步驟封裝到一個bool的函數(shù)中,這樣只要在if語句中調(diào)用一下可以了,具體來看代碼:這里用到了c語言的可變參數(shù),對此俺也不是很了解

             

            1. //GetProcAddresses  
            2. //Argument1: hLibrary - Handle for the Library Loaded  
            3. //Argument2: lpszLibrary - Library to Load  
            4. //Argument3: nCount - Number of functions to load  
            5. //[Arguments Format]  
            6. //Argument4: Function Address - Function address we want to store  
            7. //Argument5: Function Name -  Name of the function we want  
            8. //[Repeat Format]  
            9. //  
            10. //Returns: FALSE if failure  
            11. //Returns: TRUE if successful  
            12. BOOL GetProcAddresses( HINSTANCE *hLibrary,   
            13.     LPCSTR lpszLibrary, INT nCount, ... )  
            14. {  
            15.     va_list va;  
            16.     va_start( va, nCount );  
            17.   
            18.     if ( ( *hLibrary = LoadLibrary( lpszLibrary ) )   
            19.         != NULL )  
            20.     {  
            21.         FARPROC * lpfProcFunction = NULL;  
            22.         LPSTR lpszFuncName = NULL;  
            23.         INT nIdxCount = 0;  
            24.         while ( nIdxCount < nCount )  
            25.         {  
            26.             lpfProcFunction = va_arg( va, FARPROC* );  
            27.             lpszFuncName = va_arg( va, LPSTR );  
            28.             if ( ( *lpfProcFunction =   
            29.                 GetProcAddress( *hLibrary,   
            30.                     lpszFuncName ) ) == NULL )  
            31.             {  
            32.                 lpfProcFunction = NULL;  
            33.                 return FALSE;  
            34.             }  
            35.             nIdxCount++;  
            36.         }  
            37.     }  
            38.     else  
            39.     {  
            40.         va_end( va );  
            41.         return FALSE;  
            42.     }  
            43.     va_end( va );  
            44.     return TRUE;  
            45. }  
            1. 使用的例子:  
            1. <pre class="csharp" name="code"><pre class="csharp" name="code">#include <windows.h></windows.h>  
            2.   
            3. typedef int ( WINAPI *MESSAGEBOX )   
            4.     ( HWND , LPCSTR, LPCSTR, DWORD );  
            5. typedef int ( WINAPI *MESSAGEBOXEX )   
            6.     ( HWND , LPCSTR, LPCSTR, DWORD , WORD );  
            7.   
            8. void main(void)  
            9. {  
            10.     MESSAGEBOX lpfMsgBox = NULL;  
            11.     MESSAGEBOXEX lpfMsgBoxEx = NULL;  
            12.     HINSTANCE hLib;  
            13.     if(GetProcAddresses( &hLib, "User32.dll", 2,  
            14.         &lpfMsgBox, "MessageBoxA",  
            15.         &lpfMsgBoxEx, "MessageBoxExA" ) )  
            16.     {  
            17.         lpfMsgBox( 0, "Test1""Test1", MB_OK );  
            18.         lpfMsgBoxEx( 0, "Test2""Test2", MB_OK,   
            19.             MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ) );  
            20.     }  
            21.     if ( hLib != NULL )  
            22.         FreeLibrary( hLib );  
            23. }  
            1. 是不是很好用呢 囧  

            posted @ 2011-08-10 07:04 RTY 閱讀(562) | 評論 (0)編輯 收藏

            網(wǎng)站地址:http://www.scintilla.org/SciTE.html

            SciTE(Scintilla Text Editor)是一個體積小巧的文本編輯器。雖然它沒有像
            MS OfficeOpenOffice那樣功能強大可比且體積大的怕人的辦公軟件。但是它對文本以及源各種源文件卻擁有強大的編輯能力,甚至可把它當(dāng)作Dreamweaver,因為它不僅有其他文本編輯器的語法高亮顯示功能,它支持40 種文件類型的語法高亮顯示。光這點已經(jīng)非常吸引人們的眼球,而且還可以達到自動補充完成以及輸出窗口(對于編程的人來說很方便的)。這樣也能省很多事情,盡管它的界面是簡潔甚至說簡陋的,但這并不妨礙它做為一個開發(fā)環(huán)境來使用。因為它默認(rèn)情況下很多功能還沒有展現(xiàn),需要我們手動設(shè)置。 SciTE的標(biāo)簽窗口布局使你可以同時打開多個文件,在這件文件之間拷貝,執(zhí)行搜索替換的操作。語法高亮顯示的功能有助于編輯web頁面和源代碼。其它的像PDF導(dǎo)出,word completion,多級的撤消,代碼樹,全屏和分屏功能也是很有用的。在可設(shè)置性上,SciTE是一個相當(dāng)復(fù)雜的軟件,比較適合技術(shù)人員使用。

            scite - 軟件安裝

            大家首先到它的官網(wǎng)的下載頁面下載軟件或者根據(jù)下面的鏈接下載。 
            如果你是Windows系統(tǒng)的用戶,你可以選擇安裝版本和免安裝綠色版
            推薦使用免安裝綠色版。 
            如果你是Linux系統(tǒng)的用戶,你需要 GTK 2.8 以上版本的支持。 
            如果你使用的Fedora Core 5系統(tǒng),點這里下載。 
            如果你使用的Debian/Ubuntu系統(tǒng),點這里下載。 
            最后還有RPMs,點這里下載。 
            如果你想基于此軟件再開發(fā)用戶,請看下面的下載點: 
            Windows系統(tǒng) SciTE 的源代碼:下載 
            Linux系統(tǒng) SciTE 的源代碼:下載 

            scite - 配置文件

            (圖)設(shè)置菜單scite
            對于新手來說,如果沒有正確的配置,它就不是那么好使,比如選擇中文時候出現(xiàn)亂碼,縮進也不是你想象中的樣子。 
            由于配置參數(shù)不是采用圖形界面,而且出看配置代碼會比較混亂,所以大家要睜大眼睛好好看咯~ 程序中幾個比較重要的配置文件(都在 SctTE 目錄下面): 
            SciTEGlobal.properties 全局配置文件,一般不去改動。 
            SciTEUser.properties 用戶配置文件。對全局配置要改動的地方,都寫在這個文件里。 
            SciTE.properties 本地配置文件,也就是針對當(dāng)前目錄的配置文件,會覆蓋全局和用戶配置文件。 
            html.properties 特定文件類型的配置文件,比如 html.properties就是專門針對網(wǎng)頁文件的配置文件。 
            SciTEGlobal.properties 是程序的核心配置文件,所有的配置信息都在這個文件里面。一般情況下我們是不要改動這個文件。為什么不能在這個里面修改呢,其實也不是不可以,主要是因為yidabu網(wǎng)站的測試,在重裝SciTE時,全局配置文件會被覆蓋,那么不再這文件修改那在哪修改呢? 這就用到了程序為我們提供的用戶配置文件 
            SciTEUser.properties 。你可以對照SciTE文本編輯器的幫助手冊,逐條查看對照 
            SciTEGlobal.properties ,把要修改的屬性記下來,寫到sciteuser.properties中,因為在用戶配置文件的配置優(yōu)先于全局配置文件。而且在在重裝SciTE之后用戶配置文件則不會覆蓋掉的。

            scite - 常用快捷鍵

            Ctrl Keypad 放大文字 
            Ctrl Keypad- 縮小文字 
            Ctrl Keypad/ 還原文字大小到默認(rèn)值 
            Ctrl Tab 在最近打開的兩個文件間循環(huán) 
            Tab 縮進一個tab. 在用scite寫筆記時, 每段一般按Tab縮進, 而不是按空格。 從網(wǎng)上復(fù)制一篇文章到scite文本編輯器,全選,按一下tab, 首行標(biāo)題頂格,二級標(biāo)題頂部,就完成所用的文檔格式化。 
            Shift Tab 取消一個tab的縮進 
            Ctrl BackSpace 從光標(biāo)位置刪除到一個詞的開始處, 中文由于無法斷詞, 如果用的是中文標(biāo)點,就變成一直刪除到行首了。如果用的英文標(biāo)點,就刪除到上一個英文標(biāo)點處 
            Ctrl Delete 從光標(biāo)位置刪除到一個詞的結(jié)束處 
            Ctrl Shift BackSpace 從光標(biāo)位置刪除到行首 
            Ctrl Shift Delete 從光標(biāo)位置刪除到行尾 
            Ctrl Home 光標(biāo)移動到文檔開始處 
            Ctrl Shift Home 從光標(biāo)處開始選擇文本一直到行首 
            Alt Home 到顯示的行首。按End時光標(biāo)只是移到行首第一個字的前面 
            Alt Shift Home 擴展選擇到行首 Ctrl End 光標(biāo)移動到文檔結(jié)束處 
            Ctrl Shift End 從光標(biāo)處選擇文本一直到文檔結(jié)束處 
            Alt End 光標(biāo)移動到行尾 
            Alt Shift End 擴展選擇到行尾 
            Ctrl Keypad* 展開或收縮光標(biāo)所在的折疊區(qū)域。這個很好記憶,這樣理解:*號很象圓形的折疊符號 
            Ctrl F2 創(chuàng)建或刪除一條書簽. 在寫很長的文檔或代碼時, 加一個書簽就很方便地可以跳來跳去 F2 跳到下一條書簽 
            Alt F2 擴展選擇到下一條書簽. 有什么用呢, 創(chuàng)建兩條書簽, 光標(biāo)移動到要選中的開始處, 按快捷鍵, 兩條書簽之間的內(nèi)容就選中了 
            Ctrl F3 **向文檔結(jié)束方向查找選中字符 這個功能很好用, 要在文檔內(nèi)查找, 你不需象通常的那樣要按Ctrl F, 你只需要把光標(biāo)放到詞內(nèi)部或前后, 按Ctrl F3就自動在文檔內(nèi)查找 如果要在文檔內(nèi)查找中文, 由于中文無法斷詞, 要先手動選擇要查詢的詞, 再按快捷鍵. 說點題外話,既不媚外, 也不盲目地拔高傳統(tǒng)文化. 漢字有漢字的優(yōu)點, 英文有英文的優(yōu)點, 若一定要分出高下來, 是很難辦到的事情. 曾看到一些對傳統(tǒng)文化(如易經(jīng))很有偏好的人非常推崇中文, 認(rèn)為是最優(yōu)秀的文字, 是英文遠不能比的. 但在這里, 中文斷詞的問題怎么解決, 英文可以簡單地以空格來斷詞, 中文怎么辦? 至少在這個文內(nèi)查找, 英文就比中文方便多了. 
            Ctrl Shift F3 **向文檔開始方向查找選擇字符 英文是 
            Find selection backwards, 字面翻譯是向后查找選中文字, 這個”向后”是比較容易引起歧義的, 譯為”文檔開始方向”就不存在這個問題 
            Ctrl Up Scroll up Ctrl Down Scroll down 
            Ctrl L **剪切光標(biāo)所在行 這個很有用. 如果用記事本來寫日記或文檔, 剪切行就麻煩多了. 用scite來寫 讀書筆記什么的, 即使不作任何優(yōu)化配置, 利用scite的快捷鍵也提高一些常用操作的效率也不錯 提示: 快捷鍵中L代表Line 這樣理解了以后, 就根本不用死記, 自然記住了這個快捷鍵的用法. 一個聰明的人性化的程序, 所有快捷鍵都是可以理解而不需要記憶的, 從這里也可以看出程序作者是否別具匠心
            Ctrl Shift T **復(fù)制光標(biāo)所在行. 應(yīng)用時可以右手按Ctrl Shift, 左手按T 
            Ctrl Shift L **刪除光標(biāo)所在行 Ctrl T **和上一行互換位置 在 SciTE4AutoIt3中, 用Ctrl T調(diào)用Tidy整理源代碼. 為避免快捷鍵撞車, 打開 au3.properties, 找到 JdeB’s Tidy formatting program for Autoit3 條, 把快捷鍵改成Ctrl Shift Alt T, 或者修改 Scite用戶配置文件sciTEUser.properties 提示: 在這里T表示transpose, 即互換位置. **Ctrl D 復(fù)制高亮選中字符. 如果沒有高亮選擇字符, 則復(fù)制光標(biāo)所在行 這是一個使用頻率比較高的快捷鍵, 在用 SciTE4AutoIt3寫代碼時, 要臨時改寫調(diào)試一句代碼, 按Ctrl D復(fù)制當(dāng)前行, 按小鍵盤的-注釋掉當(dāng)前行. 調(diào)試好后要用回原來代碼, 只要Ctrl Shift L刪除行, 再按小鍵盤的-取消注釋符號即可, 根本用不到手動選擇復(fù)制之類. 提示: 在這里D表示duplicate, 使用快捷鍵的另一個樂處就是記住了字母所代表的單詞, 對于程序來說, 多數(shù)編程資料是英文形式的, 因此務(wù)必知道各種縮寫的原型, 一則更容易理解記憶, 二則從某種意義上來說, 英語從某種意義上是程序設(shè)計的基礎(chǔ). 
            Ctrl [ 光標(biāo)移動到上一段, 加Shift的話是擴展選擇
            Ctrl ] 光標(biāo)移動到下一段, 加Shift的話是擴展選擇 
            Ctrl Left 光標(biāo)跳到上一詞. 加Shift的話是擴展選擇 
            Ctrl Right 光標(biāo)跳到下一詞. 加Shift的話是擴展選擇 
            Ctrl / 光標(biāo)跳到上一詞部分. 加Shift的話是擴展選擇 
            Ctrl \ 光標(biāo)跳到下一詞部分. 加Shift的話是擴展選擇

            posted @ 2011-08-10 06:41 RTY 閱讀(743) | 評論 (0)編輯 收藏

            http://hi.baidu.com/xx375/blog/item/52f5ccd6ac7671dd51da4b52.html

            GetTempPath函數(shù)

            功能 獲取為臨時文件指定的路徑

            API中函數(shù)原形為: DWORD GetTempPath(DWORD nBufferLength, LPTSTR lpBuffer)  

            參數(shù):  

            StrLen = GetTempPath(NAME_LEN, OutPath)  

            其中:  

            OutPath是輸出臨時文件夾名稱的變量,它的初始值為NAME_LEN個空格,函數(shù)調(diào)用后,就不是空格了,它會把取得的臨時文件夾名稱存入此變量。  

            NAME_LEN是告訴函數(shù)OutPath變量的長度。  

            StrLen:是取得的臨時文件夾名稱的長度。

            返回值  Long,裝載到lpBuffer的字符數(shù)。如當(dāng)前緩沖區(qū)的長度不夠,不能容下整個路徑,則返回lpBuffer需要的長度。

                       零表示失敗。會設(shè)置GetLastError

            應(yīng)用小例:

            CHAR OutPath[MAX_PATH];

            int StrLen = GetTempPath(MAX_PATH, OutPath);

            printf("輸出臨時文件夾名稱  = %s\n",OutPath);

            printf("臨時文件夾名稱的長度= 0x%x\n",StrLen);

            //輸出臨時文件夾名稱  = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ (環(huán)境變量里有)

            //臨時文件夾名稱的長度= 0x23

            注解臨時路徑是由TMP環(huán)境變量指定的一個路徑。如TMP不存在,則是由TEMP環(huán)境變量指定的路徑。

            如果這兩個環(huán)境變量都不存在,就是當(dāng)前目錄

            如果查看當(dāng)前用戶的臨時文件夾,可以在開始-運行里面輸入%temp%,回車即可(一般為隱藏的)

             

            GetTempFileName函數(shù)

            這個函數(shù)包含了一個臨時文件的名字,它可由應(yīng)用程序使用

            UINT GetTempFileName(

              PChar lpPathName:;     {路徑}

              PChar lpPrefixString:;   {前綴}

              UINT uUnique:;         {指定生成文件名的數(shù)字,文件名將根據(jù)參數(shù)2、參數(shù)3來生成}

              PChar   lpTempFileName: {文件名需要的緩沖區(qū)}

            ) {指定生成文件名的數(shù)字,如果參數(shù)30,則返回文件名長度}

            應(yīng)用舉例:

            CHAR OutPath[MAX_PATH];

            int StrLen = GetTempPath(MAX_PATH, OutPath);

            CHAR Name[100];

            GetTempFileNameA(OutPath,"~xx",16,Name);

            printf("自定義唯一臨時文件夾名稱  = %s\n",Name);

            //因為16的十六進制是10,文件名會是: ~xx10.tmp

            //Name = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~xx10.tmp

             

            GetWindowsDirectory函數(shù)GetSystemDirectory函數(shù)用法一樣

            GetWindowsDirectory獲取Windows文件夾的路徑。GetSystemDirectory是獲取systrm32文件夾的路徑

            下面是講解GetSystemDirectory函數(shù)

            GetSystemDirectory 函數(shù)

            獲取systrm32文件夾的路徑。系統(tǒng)文件夾包含了諸如動態(tài)鏈接庫和驅(qū)動的系統(tǒng)文件。

            該函數(shù)最初是為了兼容問題而提供的。應(yīng)用程序應(yīng)該在Program File文件夾內(nèi)存儲代碼和常駐數(shù)據(jù)。

            UINT WINAPI GetSystemDirectory(

            __out  LPTSTR lpBuffer,

            __in   UINT uSize

            );

            參數(shù)  

            lpBuffer String,用于裝載系統(tǒng)目錄路徑名的一個字串緩沖區(qū)。它應(yīng)事先初始化成“路徑”字符串的長度+1

                          通常至少要為這個緩沖區(qū)分配MAX_PATH個字符的長度  

            nSize LonglpBuffer字串的最大長度

            返回值

            如果函數(shù)成功,返回值是緩沖內(nèi)容副本的長度,但該長度不包含結(jié)尾的NULL字符。如果該長度大于給定的長度,則返回值是所需的緩沖大小,且包含結(jié)尾的NULL字符。

            如果函數(shù)失敗,返回零值。

            備注

            應(yīng)用程序不應(yīng)該在系統(tǒng)目錄內(nèi)創(chuàng)建文件。如果用戶運行在一個共享版本的Windows操作系統(tǒng)上,應(yīng)用程序是不能訪問系統(tǒng)目錄的

            應(yīng)用小例:

            string str;

            UINT size=GetSystemDirectory(NULL,0);

            CHAR *path=new CHAR[size];

            if (GetSystemDirectory(path,size) != 0)

            {

                   str = path;

            }

            delete[] path;



            posted @ 2011-08-09 07:32 RTY 閱讀(3555) | 評論 (0)編輯 收藏

            API太多(C++版) -- GetDriveType GetVolumeInformation 講解

            GetDriveType 函數(shù)

            頭文件在“winbase.hGetDriveType Kernel32.dll中的一個函數(shù),   

            UINT GetDriveType (   LPCTSTR lpRootPathName    // root directory  );  

             

            函數(shù)功能  判斷磁盤類型  

            參數(shù)說明  lpRootPathName包含了根目錄路徑的字符串指針  

            返回值 (返回到EAX中為0 1 2 3 4 5 6) 

            0     DRIVE_UNKNOWN未知的磁盤類型  

            1     DRIVE_NO_ROOT_DIR說明lpRootPathName是無效的  

            2     DRIVE_REMOVABLE可移動磁盤  

            3     DRIVE_FIXED固定磁盤  

            4     DRIVE_REMOTE網(wǎng)絡(luò)磁盤  

            5     DRIVE_CDROM光驅(qū)  

            6     DRIVE_RAMDISKRAM

            應(yīng)用小例

            #include <windows.h>

            int main()

            {

                   if(GetDriveType("C:\\") = = DRIVE_FIXED)  (DRIVE_FIXED或者是3 )

                   {

                       MessageBox(NULL,"固定磁盤","",MB_OK);

                   }

                   system("pause");

                   return 0;

            }

            GetVolumeInformation函數(shù)

            GetVolumeInformation函數(shù)返回有關(guān)文件系統(tǒng)和其根目錄調(diào)用中指定的卷的信息。在存在幾個常見的文件系統(tǒng)(如NTFSFATCDFS新的文件系統(tǒng)可能會影響存儲要求為應(yīng)用程序,等,以便調(diào)用GetVolumeInformation可能會提供有價值的信息,您可以在您的應(yīng)用程序中使用的開發(fā)中。若要計算磁盤空間和文件大小),也可以使用的某些信息此調(diào)用返回。

            函數(shù)功能  獲取與一個磁盤卷有關(guān)的信息  

            返回值    Long,非零表示成功,零表示失敗。會設(shè)置GetLastError

            GetVolumeInformation(

              PChar  lpRootPathName:;       {磁盤驅(qū)動器代碼字符串}

              PChar  lpVolumeNameBuffer:;          {磁盤驅(qū)動器卷標(biāo)名稱}

              DWORD  nVolumeNameSize:;         {磁盤驅(qū)動器卷標(biāo)名稱長度}

              PDWORD  lpVolumeSerialNumber:;       {磁盤驅(qū)動器卷標(biāo)序列號}

              DWORD  var lpMaximumComponentLength:;  {系統(tǒng)允許的最大文件名長度}

               DWORD var lpFileSystemFlags:;         {文件系統(tǒng)標(biāo)識}

              PChar  lpFileSystemNameBuffer:;          {文件操作系統(tǒng)名稱 FATNTFS}

              DWORD nFileSystemNameSize:            {文件操作系統(tǒng)名稱長度}

            )

            lpFileSystemFlags Long,用于裝載一個或多個二進制位標(biāo)志的變量。

            對這些標(biāo)志位的解釋如下:  

            FS_CASE_IS_PRESERVED文件名的大小寫記錄于文件系統(tǒng)  

            FS_CASE_SENSITIVE文件名要區(qū)分大小寫

            FS_UNICODE_STORED_ON_DISK文件名保存為Unicode格式  FS_PERSISTANT_ACLS文件系統(tǒng)支持文件的訪問控制列表(ACL)安全機制  FS_FILE_COMPRESSION文件系統(tǒng)支持逐文件的進行文件壓縮  FS_VOL_IS_COMPRESSED整個磁盤卷都是壓縮的  

            應(yīng)用小例:

            #include <stdio.h>

            #include <windows.h>

            int main()

            {

                   char Root[] = "C:\\";

                   char Volumelabel[20];

                   DWORD SerialNumber;

                   DWORD MaxCLength;

                   DWORD FileSysFlag;

                   char FileSysName[10];

                   GetVolumeInformation( "C:\\",Volumelabel,255,&SerialNumber,&MaxCLength,&FileSysFlag,FileSysName,255);

                   printf("卷標(biāo)名稱(Volumelabel) = %s\n",Volumelabel);

                   printf("卷標(biāo)序列號(SerialNumber) = 0x%x\n",*(&SerialNumber));

                   printf("系統(tǒng)允許最大文件名長度(MaxCLength) = 0x%x\n",*(&MaxCLength));

                   printf("文件系統(tǒng)標(biāo)識(FileSysFlag) = 0x%x\n",*(&FileSysFlag));

                   printf("文件系統(tǒng)名稱(FileSysName) = %s\n",FileSysName);

                   system("pause");

                   return 0;

            }

            posted @ 2011-08-09 07:29 RTY 閱讀(2595) | 評論 (0)編輯 收藏

            摘抄了部分網(wǎng)站的文章,主要還是用到Windows的API  GetVolumeInformation 這個函數(shù)主要用途是獲得文件系統(tǒng)信息

            1. 摘抄原文地址:
            http://tech.ddvip.com/2008-11/122655520092169.html
            http://hackdiy.com/I-214009.html

            2
            . 以下是源碼說明:
            聲明:

            GetVolumeInformation(
             lpRootPathName: PChar;        {磁盤驅(qū)動器代碼字符串}
             lpVolumeNameBuffer: PChar;      {磁盤驅(qū)動器卷標(biāo)名稱}
             nVolumeNameSize: DWORD;       {磁盤驅(qū)動器卷標(biāo)名稱長度}
             lpVolumeSerialNumber: PDWORD;    {磁盤驅(qū)動器卷標(biāo)序列號}
             var lpMaximumComponentLength: DWORD; {系統(tǒng)允許的最大文件名長度}
             var lpFileSystemFlags: DWORD;    {文件系統(tǒng)標(biāo)識}
             lpFileSystemNameBuffer: PChar;    {文件操作系統(tǒng)名稱}
             nFileSystemNameSize: DWORD      {文件操作系統(tǒng)名稱長度}
            ): BOOL;
            //舉例:procedure TForm1.FormCreate(Sender: TObject);
            var
             RootPath: array[0..20] of Char;
             VolName: array[0..255] of Char;
             SerialNumber: DWORD;
             MaxCLength: DWORD;
             FileSysFlag: DWORD;
             FileSysName: array[0..255] of Char;
            begin
             RootPath := 'C:';
             GetVolumeInformation(
              RootPath,
              VolName,
              255,
              @SerialNumber,
              MaxCLength,
              FileSysFlag,
              FileSysName,
              255
             );
             Memo1.Clear;
             with Memo1.Lines do
             begin
              Add(Format('磁盤驅(qū)動器代碼字符串:'+ #9#9 +'%s',[RootPath]));
              Add(Format('磁盤驅(qū)動器卷標(biāo)名稱:'+ #9#9 +'%s',[VolName]));
              Add(Format('磁盤驅(qū)動器卷標(biāo)序列號:'+ #9#9 +'%s',[IntToHex(SerialNumber,8)]));
              Add(Format('系統(tǒng)允許的最大文件名長度:'+ #9 +'%d',[MaxCLength]));
              Add(Format('文件系統(tǒng)標(biāo)識:'+ #9#9#9 +'%d',[FileSysFlag]));
              Add(Format('文件系統(tǒng)名稱:'+ #9#9#9 +'%s',[FileSysName]));
             end;
            end;
            //效果圖:

            WinAPI: GetVolumeInformation - 讀取文件系統(tǒng)信息

            posted @ 2011-08-09 07:25 RTY 閱讀(375) | 評論 (0)編輯 收藏

            原創(chuàng):

          1. 淺議Qt的事件處理機制 一

          2. 淺議Qt的事件處理機制 二

          3. Qt的內(nèi)省機制剖析

          4. 夢工廠動畫與Qt

          5. QML與C++混合編程使用

          6. Qt/Qt Quick宏淺議

          7. Q_INVOKABLE與invokeMethod用法全解

          8. Qt 在symbian^3, windows 7 phone的用戶體驗

          9. Qt資源鏈接收藏

          10. Qt 好書好文推薦

          11. 諾基亞手機開發(fā)相關(guān)論壇網(wǎng)站推薦

          12. 創(chuàng)建Qt quick (qml) 應(yīng)用程序

          13. Thread affinity與跨線程信號槽

          14. Qt的智能指針使用指南

          15. Qt的字符集編碼以及轉(zhuǎn)換

          16. QImage, QPixmap 的官方解釋摘錄

          17. Qt 認(rèn)證考試有用鏈接

          18.  

          19. 譯文:

          20. 事件循環(huán)與線程 一   (Event,Thread and QObject)

          21. 事件循環(huán)與線程 二   (推薦)

          22. QML與現(xiàn)有Qt UI代碼的整合

          23.  

            轉(zhuǎn)帖:

          24. Qt源碼分析之信號和槽機制

          25. Qt源碼分析之QObject

          26. Qt事件和事件過濾器

          27. Qt版權(quán)介紹:GPL, LGPL 以及 Commercial 授權(quán)

          28. KDE/QT 與 GNOME/GTK 之爭

              


            請尊重原創(chuàng)作品和譯文。轉(zhuǎn)載請保持文章完整性,并以超鏈接形式注明原始作者主站點地址,方便其他朋友提問和指正。

          29. posted @ 2011-08-05 07:28 RTY 閱讀(590) | 評論 (0)編輯 收藏

            僅列出標(biāo)題
            共31頁: First 8 9 10 11 12 13 14 15 16 Last 
            久久久亚洲AV波多野结衣| 精品99久久aaa一级毛片| 欧美激情一区二区久久久| 超级碰碰碰碰97久久久久| 久久综合给合久久狠狠狠97色69| 久久中文骚妇内射| 久久笫一福利免费导航 | 狠狠色婷婷综合天天久久丁香| 国产精品久久久久jk制服| 久久婷婷五月综合色99啪ak| 乱亲女H秽乱长久久久| 国产精品欧美久久久久天天影视| 伊人久久无码中文字幕| 国产综合成人久久大片91| 精品综合久久久久久888蜜芽| 精品国产91久久久久久久a| 久久久久成人精品无码中文字幕| 久久久久亚洲爆乳少妇无| 精品久久久久久中文字幕| 少妇人妻综合久久中文字幕 | 久久国产福利免费| 成人久久精品一区二区三区| 中文国产成人精品久久亚洲精品AⅤ无码精品| 麻豆成人久久精品二区三区免费 | 浪潮AV色综合久久天堂| 久久久亚洲精品蜜桃臀| 亚洲狠狠久久综合一区77777 | 久久国产高潮流白浆免费观看| 久久国产成人| 亚洲精品午夜国产VA久久成人 | 久久精品欧美日韩精品| 久久强奷乱码老熟女网站| 中文精品久久久久国产网址| 97久久超碰国产精品2021| 国产情侣久久久久aⅴ免费| 99久久国产宗和精品1上映| 久久久久99这里有精品10| 久久亚洲精品国产亚洲老地址| 久久夜色撩人精品国产| 色狠狠久久综合网| 久久AV高潮AV无码AV|