我的目的是按一个名称为 “”采集 的按钮,然后按钮名称改为 “停止”,同时执行相关的操作;然后再按这个按钮停止执行,按钮名称变成 “采集”。但是我目前的遇到的问题是,可以执行相关操作,但是名称没办法改过来。也就是说 “采集” “停止”名称没办法变动。这个按钮我是在对话框上面直接拉进去的。void CMeasureDlg::OnBtnCollect()
{
// TODO: 在此添加控件通知处理程序代码 /*CButton *pBtn=new CButton;
pBtn->GetDlgItem(IDC_BTN_COLLECT);*/
if(btnFlag == FALSE)
{
GetDlgItem(IDC_BTN_COLLECT)->SetWindowTextW(_T("停止"));
btnFlag = TRUE; CCollectDlg dlg_Collect; if(IDOK==dlg_Collect.DoModal())
{
m_Interface.m_dUpLimite=dlg_Collect.m_dUp;
m_Interface.m_dStandar=dlg_Collect.m_dStandar;
m_Interface.m_dDownLimite=dlg_Collect.m_dDown;
}
SetTimer(1,1000,NULL);
}
else
{
GetDlgItem(IDC_BTN_COLLECT)->SetWindowTextW(_T("采集"));
btnFlag = FALSE;
KillTimer(1);  
}
}

解决方案 »

  1.   

    直接给控件关联一个变量,然后调用SetWindowText
      

  2.   

    为什么这样子不行啊,不是通过GetDlgItem直接获得这个控件吗
      

  3.   

    你给这个空间关联变量了没有?可能你关联了, 这个变量初始为空, 你一 update 他就自动设置按钮文字为空了,相当于你GetDlgItem(IDC_BTN_COLLECT)->SetWindowTextW(_T("停止"));没有起作用,另外 SetWindowTextW(_T("停止")); 改成
    SetWindowText(_T("停止"));
      

  4.   

    static BOOL bFlag = FALLSE;
    GetDlgItem(IDC_BTN_COLLECT)->SetWindowText((bFlag = !bFlag) ? _T("采集") : _T("停止"));
      

  5.   

    已解决,谢谢各位!
    给发
             CString str;
    if(GetDlgItemText(IDC_BTN_COLLECT,str),str==_T("采集"))
    {
    if(m_bFirstSet)
    {
    CCollectDlg dlg_Collect; if(IDOK==dlg_Collect.DoModal())
    {
    m_Interface.m_dUpLimite=dlg_Collect.m_dUp;
    m_Interface.m_dStandar=dlg_Collect.m_dStandar;
    m_Interface.m_dDownLimite=dlg_Collect.m_dDown;
    }
    m_bFirstSet = FALSE;
    }
            SetDlgItemText(IDC_BTN_COLLECT,_T("停止"));
    SetTimer(1,1000,NULL); }
    else
    {
    // GetDlgItem(IDC_BTN_COLLECT)->SetWindowTextW(_T("采集"));
    SetDlgItemText(IDC_BTN_COLLECT,_T("采集"));
    // btnFlag = FALSE;
    KillTimer(1);  
    }