1. 在類向導中添加類Picture1,以CStatic為基類。(建立類以便添加消息響應,若隻是主對話框的一個對象,隻能添加幾個有限的消息,無右鍵點選,滑鼠懸停等) 2. 為圖檔控件添加變量,先修改ID,由IDC_STATIC改為IDC_PIC_STATIC(不改加不了變量),變量類型改為Picture,變量名m_Pic1。控件屬性中的Notify設定為true(預設false,觸發事件不會傳入父視窗)。
3. 在資源視圖中導入位圖IDB_BITMAP1
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVaa1WZ2A3MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM0MzM1EDN0ETOwUDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
4. 加載位圖(寫在程式需要加載的地方,例如點選按鈕) CBitmap bitmap1; // CBitmap對象,用于加載位圖
HBITMAP hBmp1; // 儲存CBitmap加載的位圖的句柄 bitmap1.LoadBitmap(IDB_BITMAP1); // 将位圖IDB_BITMAP1加載到bitmap
hBmp1 = (HBITMAP)bitmap1.GetSafeHandle(); // 擷取bitmap加載位圖的句柄
m_Pic1.SetBitmap(hBmp1); // 設定圖檔控件m_jzmPicture的位圖圖檔為IDB_BITMAP1
若為靜态文本框,加載位圖需要多一行代碼
CBitmap bitmap2;
HBITMAP hBmp2; m_Pic2.ModifyStyle(0, SS_BITMAP); //修改樣式為位圖
bitmap2.LoadBitmap(IDB_BITMAP2);
hBmp2 = (HBITMAP)bitmap2.GetSafeHandle();
m_Pic2.SetBitmap(hBmp2); 5. 添加消息響應 (1)右鍵控件彈出菜單: 在類向導中選擇類Picture1,添加OnRButtonDown消息
先建一個菜單 IDR_MENU1,注意菜單要有兩級,父級菜單不會顯示,是以把要顯示的菜單項都寫在子級菜單中。 處理程式代碼如下: void Picture1::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程式代碼和/或調用預設值
CMenu menu; //定義下面要用到的cmenu對象
menu.LoadMenu(IDR_MENU1); //裝載自定義的右鍵菜單
CMenu *pPopup = menu.GetSubMenu(0); //擷取第一個彈出菜單,是以第一個菜單必須有子菜單 CPoint point1;//定義一個用于确定光标位置的位置
GetCursorPos(&point1);//擷取目前光标的位置,以便使得菜單可以跟随光标 pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point1.x, point1.y, GetParent());//在指定 位置顯示彈出菜單
CStatic::OnRButtonDown(nFlags, point);
} (2)滑鼠懸停 添加消息OnMouseMove。(若用OnMouseHover沒有反應)