我现在做了一个按钮, 想实现点击下去按钮,它响应一个函数而且按钮上的文字变化,再点击起来,按钮响应另一个函数然后按钮上的文字又变回原来状态,怎么实现呢?
    比如一个按钮初始状态上边显示的是:"开启",点击下去按钮后,实现了开启功能,且上边的显示变成"关闭";然后再单击起来这个“关闭”按钮,就实现关闭的功能,然后按钮上又显示的是开启... 
请高手帮帮忙....

解决方案 »

  1.   

    你说的是LButtonDown和LBUttonUp吗?
    class Button : public CButton;
    在Button里面添加对这两个消息的映射。
      

  2.   

    不就是 released 和 pressed二个事件嘛。打开VS直接找到button上面的这二个事件在上面写就行了
      

  3.   

    在处理函数里加一个static的bool变量作为标识,改标题用SetWindowText之类在的API就行了。
      

  4.   

    Button响应函数加个标志位flag嘛。每次函数进去判断flag来运行不同的代码。楼主好好补充下基础,加油
      

  5.   

    static BOOL bClick = FALSE;
    SetDlgItemText(IDC_BUTTON1, (bClick = !bClick) ? _T("Close") : _T("Open"));
      

  6.   

    谢谢各位...我本意是想知道能不能用LButtonDown和LBUttonUp两个函数来实现,我试了一下发现这个是鼠标点下去响应了LButtonDown,鼠标松了就响应的LBUttonUp函数,没能达到我想要的效果,不知到按照这种方式有没有实现的办法?
      

  7.   

    LButtonDown和LBUttonUp两个函数是响应鼠标事件的,
    可以这样:当鼠标按下的时候给按钮发送一个消息用于改变按钮的Text,鼠标抬起的时候给按钮发送另外一个消息改变按钮的Text,
    判断当鼠标指针停靠在按钮上方的时候,不就实现了功能么
      

  8.   

    用check box  然后把push like 选上  就达到效果了  然后两个功能 就判断一下 check box的 标题  if (check标题=a)
      {
      check标题=b
      ................
      } 
      else
      {
      check标题=a
      ................
      }
      

  9.   


    还是这种方法好用,我就经常这么用,不懂可以me我
    你好 我用了你说的方法 在响应函数里面加标志位flag 但是只能使按钮点击一次变换,再点击就不行了,好像是不能循环 不知道代码哪里出问题了 能帮我看一下么?
    void CCTestDlg::Onpingpang() 
    {
    // TODO: Add your control notification handler code here
    bool flag=true;
    if(flag=true)
    {
    CBitmap Bitmap1;
    Bitmap1.LoadBitmap(IDB_BITMAP2);
    HBITMAP hBitmap1=(HBITMAP)Bitmap1.Detach();
    CButton *pButton1=(CButton*)GetDlgItem(IDC_BUTTON1);
    pButton1->SetBitmap(hBitmap1);
    flag=false;
    }
    else(flag=false);
    {
        CBitmap Bitmap;
    Bitmap.LoadBitmap(IDB_BITMAP1);
    HBITMAP hBitmap=(HBITMAP)Bitmap.Detach();
    CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON1);
    pButton->SetBitmap(hBitmap);
    flag=true;
    }}
    不知道问题出在哪里