zoukankan      html  css  js  c++  java
  • MFC中 给按钮添加图片的方法

    方法一:直接给CButton加图片。

    1.在资源编辑器中添加一个按钮,把它的Bitmap属性设为true

    2.在按钮上点右键,添加一个变量m_Btn(CButton类型的)

    3.将图片导入到资源管理器中,ID为IDB_BITMAP1

    4.然后在初始化中加入如下代码:

       HBITMAP hBmp=::LoadBitmap(AfxGetInstanceHandle(),  MAKEINTRESOURCE(IDB_BITMAP1));   
       m_Btn.SetBitmap(hBmp);
     
       如果是加载非资源图片的话,就在初始化中加入下代码:
       HBITMAP hBitmap = (HBITMAP)::LoadImage( 
                     NULL,  
                     "E://a.bmp",                       // 图片全路径 
                     IMAGE_BITMAP,                   // 图片格式 
                     0,0,  
                     LR_LOADFROMFILE|LR_CREATEDIBSECTION);  // 注意LR_LOADFROMFILE

       然后获得按钮句柄并调用SetBitmap即可。

    这样按钮上的文字就被图片取而代之了,但是我感觉不太好看。

    方法二:利用CBitmapButton,可以很容易地做出点动态的效果。

    1.在资源编辑器中添加一个按钮.

         把它的Owner Draw属性设为true.

         把它的ID设为IDC_BUTTON1.

         把它的Caption改成BITMAP_BUTTON

    2.准备4张图片(只准备其中一两张也可以),添加到资源管理器中

         正常状态时的按钮图片     的ID设为"BITMAP_BUTTONU"

         鼠标按下时的按钮图片     的ID设为"BITMAP_BUTTOND"

         鼠标点击过后的按钮图片  的ID设为"BITMAP_BUTTONF"

         按钮失效后的图片          的ID设为"BITMAP_BUTTONS"

         注意:一定要左右都带双引号!

         其实就是 "按钮的Caption+U或D或F或S"

    3.在dlg的头文件里添加一个CBitmapButton类型的成员变量m_bbtn

    4.在初始化中加入以下代码

       m_bbtn.AutoLoad(IDC_BUTTON1, this);
     
    注意:如果对按钮(CButton)用向导添加了Control变量的话,把DDX_Control(pDX, IDC_BUTTON1, m_btn1);这一行注释掉就可以了。
     
    方法三:使用CMFCButton
        1、在对话框编辑界面中,拖入一个button控件,改资源ID号为IDC_BUTTON_TEST。
        2、然后在CXXXDlg::OnInitDialog()中添加如下代码:
           CMFCButton * button1 = new CMFCButton;
           button1->Create(_T("Test Button"),
           WS_VISIBLE,
           CRect(160, 15, 280, 150),
           this,
           IDC_BUTTON_TEST);
           // 加载图片
           button1->SetImage(IDB_BITMAP1);     //IDB_BITMAP1为自己导入的图片的ID
     
      运行会发现出现了两个按钮,那么在对话框编辑界面中把Button1的Visible属性设为False便可以了。
     
     
     
  • 相关阅读:
    uni-app中动态设置头部颜色及字体
    微信小程序中 showToast 真机下一闪而过相关问题
    uni-app踩坑记
    配置git提交规范跟规范校验(ESLint、commitLint、husky)
    vscode中配置git终端
    vue插槽学习之——作用域插槽
    布局小技巧集合之——动态列表固定列数固定间距自适应布局
    写入自定义 ASP.NET Core 中间件
    [转]NET实现RSA AES DES 字符串 加密解密以及SHA1 MD5加密
    JavaScript事件循环机制
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3131002.html
Copyright © 2011-2022 走看看