近期发现个BUG,就是在高DPI windows系统环境下,利用libcurl下载JPG图片,下载完成后无法使用,仔细查看后发现,内容只写入了一半。研究无果,然后果断深试调用win32API URLDownloadToFile函数,结果图片下载正常。以下代码也是摘自网络:
1 BOOL FileExistsStatus(string path) 2 { 3 DWORD dwAttribute = GetFileAttributes(CA2T(path.c_str())); 4 if (dwAttribute == 0XFFFFFFFF) 5 return false; //0XFFFFFFFF表示文件不存在 6 else 7 return true; 8 } 9 BOOL DownloadFiles(string url, string downloadPath) 10 { 11 if (URLDownloadToFile(NULL, CA2T(url.c_str()), CA2T(downloadPath.c_str()), 0, 0) == S_OK && FileExistsStatus(downloadPath)) 12 return true; 13 else 14 return false; 15 }
总结:在高DPI环境下,各别windows客户端类的软件一定要做好适配,要不然很鸡肋,也不知道厂商为什么要搞出为这么鸡肋事情。