MFC版雜湊值計算器的實現(二)

2021-06-03 10:32:54 字數 2111 閱讀 5985

1 開始相關函式

void chashtooldlg::begincomputehashinfo(cstring filepath)

hwnd hwnd = afxgetmainwnd()->getsafehwnd();

if(::sendmessage(hwnd, wm_create_progress_bar, (wparam)tmp, null))

afxbeginthread(threadcomputehashinfo, tmp);

}uint chashtooldlg::threadcomputehashinfo(lpvoid pparam)

delete filepath;

return 0;

}

2 計算相關函式

bool chashtool::gethashinfo(cstring filepath, hwnd maindlg)

else

", getlasterror(), mb_ok|mb_iconwarning);

result = false;

} return result;

}

bool chashtool::initcreatehash(hcryptprov* hprov, hcrypthash* hhash, alg_id algid)

return true;

}bool chashtool::computehashvalue(hcryptprov* hprov, hcrypthash* hhash, byte* input, dword inputlength)

if(fileinfo.percent >= 100)

clearhash(hprov, hhash);

} return true;

}void chashtool::clearhash(hcryptprov* hprov, hcrypthash* hhash)

////alg_id: calg_md5, calg_sha1

//bool chashtool::computehash(cstring filepath)

if(!initcreatehash(&hprov_sha1,&hhash_sha1, calg_sha1))

cfile file;

if(!file.open(filepath, cfile::typebinary|cfile::moderead|cfile::sharedenynone))

ulong read = 0;

ulonglong position = 0;

ulonglong length = file.getlength();

char buffer[bytes_per_read] = ;

doread = file.read(buffer, bytes_per_read);

position += read;

if(length == 0)

else

if(!computehashvalue(&hprov_md5, &hhash_md5, (byte*)buffer, read))

if(!computehashvalue(&hprov_sha1, &hhash_sha1, (byte*)buffer, read))

if(hwndmaindlg != null)

}while(position < length);

file.close();

if(bstophash)

return false;

else

return true;

}

3 停止計算

void chashtooldlg::ondestroy()

void chashtooldlg::onbnclickedstophashbutton()

這個地方遇到個問題,關閉視窗後,需要等待所有執行緒正常退出才可以。搜了會解決方案,有人建議用waitformultipleobjects。但是感覺比較麻煩。暫時先sleep 3s解決

模擬計算器(MFC)實現

忙了一天終於搞定了。以下為演算法類封裝 caldlg.cpp implementation file author baker email baker1203 sina.com course designing for data structures and program design in c ...

網頁版計算器的實現 js實現計算功能

今天帶大家做乙個網頁版的計算器,頁面使用js完成計算,介面的效果如下 可以看到介面還是挺清爽的,但是功能呢?這裡呢,介面上看到的這些按鈕的功能都是可以用的 可以看到有括號也是可以算的.好了,接下來帶大家來實現一下 首先就是布局,這個沒有什麼好說的,學點html和css馬上就可以弄出這個介面,所以我就...

計算器的實現

計算器?不是非常簡單嗎?宣告兩個float型變數,再加上操作符,自動計算結果出來!public static float calc float a,float b,int operator 呵呵,這麼簡單,那就沒必要寫成文章了 這裡要說的是 程式計算表示式的值,比如 1 2 3 5 9 就是簡單兩個...