reactos操作系统实现(61)
前面准备好文件后,就需要从光盘里拷贝文件到安装目录,下面就是这个过程的界面:
实现这个过程的代码如下: #001 static #002 PAGE_NUMBER #003 FileCopyPage(PINPUT_RECORD Ir) #004 { #005 COPYCONTEXT CopyContext; #006
显示拷贝文件的标题。 #007 MUIDisplayPage(FILE_COPY_PAGE); #008
创建一个拷贝文件的环境结构。 #009 /* Create context for the copy process */ #010 CopyContext.DestinationRootPath = DestinationRootPath.Buffer; #011 CopyContext.InstallPath = InstallPath.Buffer; #012 CopyContext.TotalOperations = 0; #013 CopyContext.CompletedOperations = 0; #014
创建显示拷贝文件进度条。 #015 /* Create the progress bar as well */ #016 CopyContext.ProgressBar = CreateProgressBar(13, #017 26, #018 xScreen - 13, #019 yScreen - 20, #020 10, #021 24, #022 TRUE, #023 MUIGetString(STRING_SETUPCOPYINGFILES)); #024 #025 // fit memory bars to screen width,distribute them uniform #026 unsigned int mem_bar_width = (xScreen - 26) / 5; #027 mem_bar_width -= mem_bar_width % 2; // make even #028 /* ATTENTION: The following progress bars are debug stuff,which should not be translated!! */
创建分页内存使用情况的柱条。 #029 /* Create the paged pool progress bar */ #030 CopyContext.MemoryBars[0] = CreateProgressBar(13, #031 40, #032 13 + mem_bar_width, #033 43, #034 13, #035 44, #036 FALSE, #037 "Paged Memory"); #038
创建非分页内存使用情况的柱条。 #039 /* Create the non paged pool progress bar */ #040 CopyContext.MemoryBars[1] = CreateProgressBar((xScreen / 2)- (mem_bar_width / 2), #041 40, #042 (xScreen / 2) + (mem_bar_width / 2), #043 43, #044 (xScreen / 2)- (mem_bar_width / 2), #045 44, #046 FALSE, #047 "Nonpaged Memory"); #048
创建全局内存使用情况的柱条。 #049 /* Create the global memory progress bar */ #050 CopyContext.MemoryBars[2] = CreateProgressBar(xScreen - 13 - mem_bar_width, #051 40, #052 xScreen - 13, #053 43, #054 xScreen - 13 - mem_bar_width, #055 44, #056 FALSE, #057 "Free Memory"); #058
调用函数SetupCommitFileQueueW来进行所有文件拷贝。 #059 /* Do the file copying */ #060 SetupCommitFileQueueW(NULL, #061 SetupFileQueue, #062 FileCopyCallback, #063 &CopyContext); #064
已经完成文件拷贝,删除分配的资源。 #065 /* If we get here,we're done,so cleanup the queue and progress bar */ #066 SetupCloseFileQueue(SetupFileQueue); #067 DestroyProgressBar(CopyContext.ProgressBar); #068 DestroyProgressBar(CopyContext.MemoryBars[0]); #069 DestroyProgressBar(CopyContext.MemoryBars[1]); #070 DestroyProgressBar(CopyContext.MemoryBars[2]); #071 #072 /* Go display the next page */ #073 return REGISTRY_PAGE; #074} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |