MFC图片控件-加载位图以及添加消息响应

1.    在类向导中添加类Picture1,以CStatic为基类。(新建类以便添加消息响应,若只是主对话框的一个对象,只能添加几个有限的消息,无右键点击,鼠标悬停等)
2. 为图片控件添加变量,先修改ID,由IDC_STATIC改为IDC_PIC_STATIC(不改加不了变量),变量类型改为Picture,变量名m_Pic1。控件属性中的Notify设置为true(默认false,触发事件不会传入父窗口)。

3.    在资源视图中导入位图IDB_BITMAP1
            MFC图片控件-加载位图以及添加消息响应
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消息
                MFC图片控件-加载位图以及添加消息响应
                先建一个菜单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没有反应)