實現思路
- 在對話框類中添加一個 **BOOL 類型成員變量**(如
m_bShowFirst),初始化為 TRUE。
- 在按鈕點擊處理函數中 **取反** 該變量。
- 根據變量值設置圖片控件(
CStatic 配合 SetBitmap)顯示對應位圖。
代碼示例
// MyDialog.h
class CMyDialog : public CDialogEx {
// ...
BOOL m_bShowFirst;
CStatic m_picCtrl; // 關聯圖片控件 (IDC_PIC)
CBitmap m_bmpFirst, m_bmpSecond;
// ...
};
// MyDialog.cpp
BOOL CMyDialog::OnInitDialog() {
CDialogEx::OnInitDialog();
m_bShowFirst = TRUE;
m_bmpFirst.LoadBitmap(IDB_BITMAP1); // 資源 ID
m_bmpSecond.LoadBitmap(IDB_BITMAP2);
m_picCtrl.SetBitmap(m_bmpFirst);
return TRUE;
}
void CMyDialog::OnBnClickedBtnSwitch() {
m_bShowFirst = !m_bShowFirst;
m_picCtrl.SetBitmap(m_bShowFirst ? m_bmpFirst : m_bmpSecond);
}
關鍵點
- 位圖資源需提前導入資源視圖(.bmp 格式),並設置正確 ID。
- 圖片控件屬性設置為
Bitmap 類型,取消 Auto Size 以便手動控制大小。
- 若需圖片自適應控件大小,可使用
StretchBlt 繪製到內存 DC 再 SetBitmap。