今天一朋友問我說子游戲下載一半又重新下載,給了他一份源碼自己對比,還真找出來了。
是因爲 定義問題,導致下載計算不正確。將原來是DWORD類型改成LONGLONG 行就可以了。
涉及文件:客戶端組件\遊戲廣場\DlgDownLoad.cpp 第871行左右
原始代碼:
//繪畫消息
VOID CDlgDownLoad::OnDrawClientArea(CDC * pDC, INT nWidth, INT nHeight)
//下載進度
if (pDownLoadSink->m_cbDownLoadStatus!=DOWN_LOAD_IDLE)
{
//計算比例
DWORD dwDownScale=0L;
if (pDownLoadSink->m_dwTotalFileSize>0L)
{
dwDownScale = pDownLoadSink->m_dwDownLoadSize * 100 / pDownLoadSink->m_dwTotalFileSize;
}
修改成: //下載進度
if (pDownLoadSink->m_cbDownLoadStatus!=DOWN_LOAD_IDLE)
{
//計算比例
LONGLONG dwDownScale=0L;
LONGLONG m_dwTotalFileSize=0L;
LONGLONG m_dwDownLoadSize=0L;
if (pDownLoadSink->m_dwTotalFileSize>0L)
{
m_dwDownLoadSize = pDownLoadSink->m_dwDownLoadSize;
m_dwTotalFileSize = pDownLoadSink->m_dwTotalFileSize;
dwDownScale = m_dwDownLoadSize * 100 / m_dwTotalFileSize;
}
感謝牛同學提供!
BY:悟透