我知道CBitmapButton怎么用,也实现了,但是当多个按钮都设置成CBitmapButton时,就会出现问题,其实应该是编译通过了,但是运行会出现错误。比如,开始是4个按钮Button1,Button2,Button3,Button4,运行正常,后来我又添加了几个按钮,就不行了。
请那位大侠帮我分析一下到底是什么问题。在此先谢谢了!

解决方案 »

  1.   

    问题描述不太清晰,是你的BitmapButton显示不出来,是它不响应点击,还是其他?有没有相关代码?
      

  2.   

    具体是这样的:
    开始我是用四个按钮,采用下面的方式与控件联系起来,运行正常,图片可以显示,也可以点击,但是当我再加几个按钮时,编译和连接都没有问题,但运行就会出问题,说是exe文件运行中遇到问题,需要关闭.
    CBitmapButton m_btn1;
    CBitmapButton m_btn2;
    CBitmapButton m_btn3;
    CBitmapButton m_btn4;
    CBitmapButton m_btn5;
    CBitmapButton m_btn6;
    CBitmapButton m_btn7;
    CBitmapButton m_btn8;
    CBitmapButton m_btn9;
    DDX_Control(pDX,IDC_BUTTON1,m_btn1);
    DDX_Control(pDX,IDC_BUTTON2,m_btn2);
    DDX_Control(pDX,IDC_BUTTON3,m_btn3);
    DDX_Control(pDX,IDC_BUTTON4,m_btn4);
    DDX_Control(pDX,IDC_BUTTON5,m_btn5);
    DDX_Control(pDX,IDC_BUTTON6,m_btn6);
    DDX_Control(pDX,IDC_BUTTON7,m_btn7);
    DDX_Control(pDX,IDC_BUTTON8,m_btn8);
    DDX_Control(pDX,IDC_BUTTON9,m_btn9);请大侠帮我解释一下,本人将感激不尽.
      

  3.   

    在OnInitDialog函数中添加了m_btn1.AutoLoad(IDC_BUTTON1,this);这个吗?
    我今天也在做这个,我添加了好多个都没问题啊,每个按钮都得加这句话的.
    m_btn1.AutoLoad(IDC_BUTTON1,this);
    m_btn2.AutoLoad(IDC_BUTTON2,this);
    m_btn3.AutoLoad(IDC_BUTTON3,this);
    m_btn4.AutoLoad(IDC_BUTTON4,this);
    m_btn5.AutoLoad(IDC_BUTTON5,this);
    m_btn6.AutoLoad(IDC_BUTTON6,this);
    m_btn7.AutoLoad(IDC_BUTTON7,this);
    m_btn8.AutoLoad(IDC_BUTTON8,this);
    m_btn9.AutoLoad(IDC_BUTTON9,this);可能我比较罗嗦了,但我真心的希望能帮到你.
      

  4.   

    我甚至用过20个,且是数组形式的,都没问题。如下:资源编辑:给每个IDC_BUTTONi控件加Bitmap、Owner Draw、Notify属性定义: CBitmapButton m_BtmpBtn[20];
    相关实现:
    BEGIN_MESSAGE_MAP(CJ8FDcmpDlg, CDialog)
    //{{AFX_MSG_MAP(CJ8FDcmpDlg)
    ON_WM_PAINT()
    //}}AFX_MSG_MAP
    ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON20, OnBtnClick)
    END_MESSAGE_MAP()CXXDlg::OnInitDialog()内加入 for (int i=0; i<20; i++)//位图按钮的装载
    {
    m_BtmpBtn[i].AutoLoad(IDC_BUTTON1+i, this);
    m_BtmpBtn[i].SizeToContent();
    }
    void CXXDlg::OnBtnClick()//位图按钮消息处理函数
    {
    MSG *pMsg = (MSG *) GetCurrentMessage();
    if (pMsg->message != WM_COMMAND)
    return;
    UINT idButton = (int) LOWORD(pMsg->wParam);//被点击按钮的ID

    }这样还不行,怀疑你的D版VC有点问题,重编译或重装试试如果
      

  5.   

    点管理帖子->每层楼给分->楼主帖子下输入密码,确认结贴