| 原 MFC 相依 | WTL 替代方案 |
CString | 包含 <atlmisc.h> 使用 CString (WTL 版) |
ASSERT | 改用 ATLASSERT 或移除 |
AfxIsValidAddress | 移除 (僅除錯用) |
CFile 相關函式 | 移除 GetMD5(CFile&), GetMD5(LPCTSTR);改用 GetMD5(BYTE*, int) 純記憶體緩衝區版本 |
核心 API (修改後)
// MD5Checksum.h
#include // WTL CString
class CMD5Checksum {
public:
// 計算記憶體緩衝區 MD5,回傳 32 字元十六進位 CString
static CString GetMD5(const BYTE* pData, int nLen);
// 以下 MFC 版函式已移除:
// static CString GetMD5(CFile& File);
// static CString GetMD5(const CString& strFilePath);
};
WTL 對話框即時計算範例
編輯框 IDC_EDIT1 輸入文字,靜態文字 IDC_STATIC_RESULT 即時顯示 MD5:
class CMainDlg : public CDialogImpl {
public:
enum { IDD = IDD_MAIN };
BEGIN_MSG_MAP(CMainDlg)
COMMAND_HANDLER(IDC_EDIT1, EN_CHANGE, OnChangeEdit1)
END_MSG_MAP()
LRESULT OnChangeEdit1(WORD, WORD, HWND, BOOL&)
{
CString strInput;
GetDlgItemText(IDC_EDIT1, strInput);
// 計算 MD5
CString strMD5 = CMD5Checksum::GetMD5(
(const BYTE*)(LPCSTR)strInput, strInput.GetLength());
SetDlgItemText(IDC_STATIC_RESULT, strMD5);
return 0;
}
};
執行畫面

原始碼下載
完整 WTL 7.1 專案:含修改後的 MD5Checksum.h/.cpp、Dialog 範例、編譯測試通過 (VC6 + WTL 7.1)。
本文配套源碼
- 上一篇文章: VC++ 專案嵌入 Manifest 申請 UAC 管理員權限:Vista/Win7/Win10/Win11 通用方案
- 下一篇文章: 標準 C++ 實現 C# 風格 Property (屬性) 模板類別:operator= 與型別轉換運算子封裝 Get/Set
Copyright ©
程式碼之家 All Rights Reserved