如何正确使用CopyFileEx和CopyProgressRoutine函数?

如何正确使用CopyFileEx和CopyProgressRoutine函数?,c,windows,mfc,C,Windows,Mfc,我制作了一个复制文件的应用程序,通常是大文件。我想展示复印的进度,但我不能让它发挥作用。有人能告诉我我做错了什么吗? 现在它的工作非常有趣。%变为49%,然后变为0,然后变为40,然后又变为0,然后变为35,然后继续,直到它成功复制了文件,但我不明白为什么我会有这么奇怪的感觉。这可能是因为我计算百分比变量,就像我以后做的那样?如果我想这样计算百分比:百分比=TotalByTestTransferred*100/TotalFileSize;然后我得到一个编译器错误:“错误C2676:binary'

我制作了一个复制文件的应用程序,通常是大文件。我想展示复印的进度,但我不能让它发挥作用。有人能告诉我我做错了什么吗? 现在它的工作非常有趣。%变为49%,然后变为0,然后变为40,然后又变为0,然后变为35,然后继续,直到它成功复制了文件,但我不明白为什么我会有这么奇怪的感觉。这可能是因为我计算百分比变量,就像我以后做的那样?如果我想这样计算百分比:百分比=TotalByTestTransferred*100/TotalFileSize;然后我得到一个编译器错误:“错误C2676:binary'*':“LARGE_INTEGER”没有定义这个运算符或到预定义运算符可以接受的类型的转换”,这就是我这样计算的原因

提前谢谢

坎皮

代码:

你犯了逻辑错误!TotalByTest将更改传输到TotalFileSize

我使用:

int percent = floor ((100.0 * (float)TotalBytesTransferred.QuadPart / (float)TotalFileSize.QuadPart));

百分比计算可以使用

uint64_t  percent= ((uint64_t)TotalBytesTransferred.HighPart<<32 + TotalBytesTransferred.LowPart) * 100/((uint64_t)TotalFileSize.HighPart<<32 + TotalFileSize.LowPart);
uint64_t百分比=((uint64_t)totalbytesttransfered.HighPart
int percent = floor ((100.0 * (float)TotalBytesTransferred.QuadPart / (float)TotalFileSize.QuadPart));
uint64_t  percent= ((uint64_t)TotalBytesTransferred.HighPart<<32 + TotalBytesTransferred.LowPart) * 100/((uint64_t)TotalFileSize.HighPart<<32 + TotalFileSize.LowPart);