各位,想问一下,在MFC中,如何使,比如说4个按钮控件,响应同一个函数.我目前在做一个计算器,我想把上面的1,2,3...9全部用一个函数来进行处理.那么,如何获得控件的ID呢?我的想法是根据不同的ID值,来显示不同的值.还请各位赐教

解决方案 »

  1.   

    我晕,方法有多种:
    1 每个按钮进行消息响应,然后在每个函数里处理同一个函数就可以了,比如:
      CXX::YourOnlyOneFun(参数1, ...)
     { 
        // do something
     }
      CXX::OnOne()
      { 
         YourOnlyOneFun(参数1,...);
      }
      CXX::OnTwo()
      {
        YourOnlyOneFun(参数2, ...);
      }
      //...2 响应OnCommand(WPARAM wParam, LPARAM lParam)
     {
        switch()
        {
           //...
        }
       ..//
     }
      

  2.   

    ON_CONTROL_RANGE,赞啊,呵呵.那么我还想问下,如何在点击一个按钮时获取其ID或者能唯一标示它的参数
      

  3.   

    ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)
    void CMyDialog::OnButtonClicked( UINT nID )
    {
       if ( IDC_BUTTON1 == nID )
         ....
    }
      

  4.   

    注意:  IDC_BUTTON1 ~ IDC_BUTTON10 的值(打开resource.h查看/编辑) 必须要连续
      

  5.   

    回4楼:你不想有太多函数就响应OnCommand消息,反正COMMAND消息都会进来的另外:一个界面中能有多少个控件??10个?20个?我倒觉得这样代码会更直观一些
      

  6.   

    10个按钮?
    10个按钮的ID要连续,一气呵成。可以检查resource.h的确认。
    把下面的代码,手动拷贝到你的程序中。xxxxx.cppON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CYourDialog::OnButtonClicked( UINT nID )
    {
        int nButton = nID - IDC_BUTTON1;    //从按钮取0,1,2,。
        ASSERT( nButton >= 0 && nButton < 10 );
        // ...
    }
    xxxxxxxxxxxxxxxx.h
    afx_msg void OnButtonClicked( UINT nID );
      

  7.   

    10个按钮?
    10个按钮的ID要连续,一气呵成。可以检查resource.h的确认。
    把下面的代码,手动拷贝到你的程序中。xxxxx.cppON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CYourDialog::OnButtonClicked( UINT nID )
    {
        int nButton = nID - IDC_BUTTON1;    //从按钮取0,1,2,。
        ASSERT( nButton >= 0 && nButton < 10 );
        // ...
    }
    xxxxxxxxxxxxxxxx.h
    afx_msg void OnButtonClicked( UINT nID );
      

  8.   

    9楼的,不好意思,加分加错了,本来那个15分是给你的,sorry