在改一个比较老的程序,VC++的MFC做的界面,工程内的文件都是.c格式的,我现在在窗体界面上添加了一个checkbox,添加结束之后,不知道如何获取该checkbox的状态,还望各位指教!

解决方案 »

  1.   

    补充一下:在界面加了一个IDC_Check1
    我在interface.c文件里对IDC_Check1进行了BST_CHECKED设置选中为1,没有选中为0,
    然后我在工程下的service.c如何获取界面上的check1的状态呢? 
      

  2.   

    可以在interface加一个函数查询IDC_Check1状态并返回
    查询函数可以这样
    int GetCheck()
    {
      CButton* chk = (CButton*)GetDlgItem(IDC_Check1);
      return chk->GetCheck();
    }
      

  3.   

    static UINT IsDlgButtonChecked(HWND hDlg,Int nlDBUtton);UINT GetCheckBox(HWND hDlg,Int nlDBUtton)
    {   int i;     
          UINT iChecked;   
        iChecked = IsDlgButtonChecked(hDlg,IDC_check1);   
          if(iChecked == BST_CHECKED)
         {  
               g_replyFlag =  1;
         }
         else
         {
              g_replyFlag =  0;
         }
    }以上的程序编译的时候,报redefiniton; different linkage
    说什么参考winuser.h里的定义,
    问题出在哪里啊?
      

  4.   

    更正一下我定义的是
    static UINT WINAPI IsDlgButtonChecked(HWND hDlg,Int nlDBUtton);
      

  5.   

     IsDlgButtonChecked 是个API函数啊 直接使用就可以了
    http://msdn.microsoft.com/en-us/library/windows/desktop/bb761879(v=vs.85).aspx
      

  6.   

    ((CButton *)GetDlgItem(IDC_CHECK1))->IsDlgButtonChecked(IDC_CHECK1)API和CButton方法都有的,而且参数也一样。
      

  7.   

    IsDlgButtonChecked(根据父窗口句柄和 ID)
    SendDlgItemMessage(根据父窗口句柄和 ID)发送 BM_GETCHECK
    SendMessage(根据)发送 BM_GETCHECK
      

  8.   

    SendMessage(根据句柄)发送 BM_GETCHECK