首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

WTL 專案整合 MD5 演算法:修改 MFC 版 MD5Checksum 類別支援 ATL/WTL 字串與檔案操作

     編輯:關於VC++

背景

WTL (Windows Template Library) 輕量級、無 MFC 依賴,適合開發小型高效能工具。網路上常見的 MD5Checksum 類別基於 MFC (CString、CFile、ASSERT),需修改才能在 WTL 專案使用。

WTL 環境建置

  1. 安裝 WTL 7.0+ AppWizard (Microsoft 官方或 vckbase 下載)
  2. VC6 新專案 → ATL/WTL AppWizard → 選擇 Dialog Based 或 Window Based
  3. WTL 標頭檔 (atlapp.h, atlwin.h, atlmisc.h 等) 放入專案或 VC Include 目錄

MD5Checksum 類別修改重點

核心 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 MD5 Demo

原始碼下載

完整 WTL 7.1 專案:含修改後的 MD5Checksum.h/.cpp、Dialog 範例、編譯測試通過 (VC6 + WTL 7.1)。

本文配套源碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
原 MFC 相依WTL 替代方案
CString包含 <atlmisc.h> 使用 CString (WTL 版)
ASSERT改用 ATLASSERT 或移除
AfxIsValidAddress移除 (僅除錯用)
CFile 相關函式移除 GetMD5(CFile&), GetMD5(LPCTSTR);改用 GetMD5(BYTE*, int) 純記憶體緩衝區版本