亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        CopyFileEx函數(shù)的使用方法

        字號(hào):

        復(fù)制文件可以用 CopyFile API 函數(shù)。CopyFileEx 函數(shù)的好處是:它提供了回調(diào)函數(shù),程序員可以向用戶顯示復(fù)制的過(guò)程。
            這里我不打算介紹回調(diào)函數(shù)的詳細(xì)參數(shù),這個(gè)可以看MSDN;我說(shuō)一些MSDN中沒(méi)有說(shuō)明的東西。
            1、多久回調(diào)一次?答案是:每傳輸 64KB 數(shù)據(jù)回調(diào)一次;
            2、回調(diào)原因第一次返回:CALLBACK_STREAM_SWITCH ,以后都返回:CALLBACK_CHUNK_FINISHED
            第一次表示開(kāi)始復(fù)制,但還沒(méi)有復(fù)制。
            3、回調(diào)函數(shù)返回 PROGRESS_CONTINUE,表示繼續(xù)復(fù)制文件;返回 PROGRESS_CANCEL,表示中斷復(fù)制,這個(gè)比較有用。
            上邊都是理論,下面我們看一個(gè)例子,該例子為 VC++ 6.0 控制臺(tái)工程。建立一個(gè)控制臺(tái)工程,選擇一個(gè)空的工程,建立一個(gè) C++ 文件,把下面代碼復(fù)制進(jìn)去即可.
            /**//*************************************************************/
            //
            // CopyFileEx 回調(diào)函數(shù)應(yīng)用
            //
            // 寶寶 zaodt_ms@hotmail.com
            //
            // 2007-11-21
            //
            /**//*************************************************************/
            #define _WIN32_WINNT 0x0500 // 不加這個(gè)不同通過(guò)編譯
            #include
            #include
            DWORD CALLBACK CopyProgress(
             LARGE_INTEGER TotalFileSize, // total file size, in bytes
             LARGE_INTEGER TotalBytesTransferred, // total number of bytes transferred
             LARGE_INTEGER StreamSize, // total number of bytes for this stream
             LARGE_INTEGER StreamBytesTransferred, // total number of bytes transferred for this stream
             DWORD dwStreamNumber, // the current stream
             DWORD dwCallbackReason, // reason for callback
             HANDLE hSourceFile, // handle to the source file
             HANDLE hDestinationFile, // handle to the destination file
             LPVOID lpData // passed by CopyFileEx
            )
            ...{
             static int nRecord = 0;
             nRecord++;
             printf("回調(diào)次數(shù):%d 已傳輸:X:X 文件大?。?X:X ",
             nRecord,
             TotalBytesTransferred.HighPart,
             TotalBytesTransferred.LowPart,
             TotalFileSize.HighPart,
             TotalFileSize.LowPart);
             return PROGRESS_CONTINUE;
            }
            int main(int argc, char* argv[])
            ...{
             if(argc!=3)
             ...{
             printf("用法:命令 源文件 目標(biāo)文件");
             return 0;
             }
             if(!CopyFileEx(argv[1],argv[2],(LPPROGRESS_ROUTINE)CopyProgress,NULL,FALSE,COPY_FILE_FAIL_IF_EXISTS))
             ...{
             printf("CopyFileEx() failed.");
             return 0;
             }
             return 0;
            }
            運(yùn)行結(jié)果:
            回調(diào)次數(shù):1 已傳輸:00000000:00000000 文件大小:00000000:00F60964
            回調(diào)次數(shù):2 已傳輸:00000000:00010000 文件大?。?0000000:00F60964
            回調(diào)次數(shù):3 已傳輸:00000000:00020000 文件大?。?0000000:00F60964
            回調(diào)次數(shù):4 已傳輸:00000000:00030000 文件大?。?0000000:00F60964
            回調(diào)次數(shù):5 已傳輸:00000000:00040000 文件大?。?0000000:00F60964
            回調(diào)次數(shù):6 已傳輸:00000000:00050000 文件大小:00000000:00F60964
            回調(diào)次數(shù):7 已傳輸:00000000:00060000 文件大?。?0000000:00F60964
            分析:
            大家看第一次,已傳輸為0,從第二次開(kāi)始,每次傳輸為 0x10000,為 64KB 字節(jié)。