首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 實作:在對話框按鈕點擊後,於另一對話框 Picture Control 顯示指定路徑圖片

     編輯:程式設計綜合問答

需求場景

員工管理系統中,主對話框的 List Control 選取某員工,點擊「顯示全部資訊」按鈕,彈出次對話框並在 Picture Control 顯示該員工照片(路徑已知)。

實作步驟

  1. 資源準備:在次對話框資源編輯器放置 Picture Control,設定 ID 為 IDC_PIC_PHOTO,屬性勾選 Notify、Sunken、Type: Bitmap 或 Icon。
  2. 建立成員變數:在次對話框類別(如 CDetailDlg)用 Class Wizard 對 IDC_PIC_PHOTO 新增控制項型別變數 m_picPhoto(型別 CStatic)。
  3. 提供設定圖片的公用方法:
// CDetailDlg.h
public:
    void SetPhotoPath(const CString& strPath);

// CDetailDlg.cpp
void CDetailDlg::SetPhotoPath(const CString& strPath) {
    HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, strPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
    if (hBmp) {
        m_picPhoto.SetBitmap(hBmp);
        // 若需自動釋放,可儲存 hBmp 於成員變數,在 OnDestroy 刪除
    }
}
  1. 主對話框按鈕處理:
void CMainDlg::OnBnClickedBtnShowDetail() {
    int nSel = m_listCtrl.GetNextItem(-1, LVNI_SELECTED);
    if (nSel == -1) return;
    CString strPhotoPath = GetPhotoPathByItem(nSel); // 自行實作取得路徑
    CDetailDlg dlg;
    dlg.SetPhotoPath(strPhotoPath);
    dlg.DoModal();
}

進階提示

  • 圖片尺寸與 Picture Control 不符時,可在 SetPhotoPath 中用 StretchBlt 繪製到相容 DC 再 SetBitmap,或改用 CPictureEx、CImage (ATL/MFC) 支援 JPG/PNG。
  • 若照片存於資源檔(.rc),改用 AfxGetResourceHandle() 配合 LoadBitmap。
  • 記得處理 LoadImage 失敗情況,避免殘留舊圖片。

參考資源

CSDN 下載範例:MFC Picture Control 顯示圖片完整專案

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved