连动的数字编辑框

连动的数字编辑框,第1张

概述因为项目需要,要做一个互相关联的连动数字编辑框。闹了我两天时间,终于做好了。主要的错误出在没有理解MFC的WM_EN_CHANGE这个消息发送的时机,所以每次再影射这个消息并使用时总会出现一个ASSERT,提示::IsWindow(m_hWnd),为false。错误的查找是很辛苦的,一度怀疑是使用DDX影射的缘故,最终把很简单的代码全部修改为GetDlgItem()类的东东,还是由问题。俺终于

因为项目需要,要做一个互相关联的连动数字编辑框。闹了我两天时间,终于做好了。主要的错误出在没有理解MFC的WM_EN_CHANGE这个消息发送的时机,所以每次再影射这个消息并使用时总会出现一个ASSERT,提示::IsWindow(m_hWnd),为false。错误的查找是很辛苦的,一度怀疑是使用DDX影射的缘故,最终把很简单的代码全部修改为GetDlgitem()类的东东,还是由问题。

俺终于忍不住在这个消息里加上了如下代码,虽然看起来不那么顺眼,但总算解决了这个问题。

代码如下:

Cbutton* pbutton=(Cbutton*)GetDlgitem(m_edt[0]);
 CEdit* pStartB=(CEdit*)GetDlgitem(m_edt[6]);
 CEdit* pEndB=(CEdit*)GetDlgitem(m_edt[7]);
 CEdit* pStartA=(CEdit*)GetDlgitem(m_edt[4]);
 CEdit* pEndA=(CEdit*)GetDlgitem(m_edt[5]);
 CEdit* plines=(CEdit*)GetDlgitem(m_edt[10]);

 CString strText;
 int nlines=1;
 int nValue=1;
 //必须进行判断,否则会进入非窗口时事机
 if(plines!=NulL && ::IsWindow(plines->GetSafeHwnd())
   && ::IsWindow(pStartA->GetSafeHwnd()) && ::IsWindow(pStartB->GetSafeHwnd())
   && ::IsWindow(pEndA->GetSafeHwnd()) && ::IsWindow(pEndB->GetSafeHwnd()))
 {
  plines->GetwindowText(strText);
  nlines=atoi(strText);
  pStartA->GetwindowText(strText);
  nValue=atoi(strText);
  if(nValue>m_nMaxlineNumber-nlines+1)
  {
   nValue=m_nMaxlineNumber-nlines+1;
   strText.Format("%d",nValue);
   pStartA->SetwindowText(strText);
  }
  strText.Format("%d",nValue+nlines-1);
  pEndA->SetwindowText(strText);  

  if(pbutton->GetCheck()==BST_CHECKED)
  {
   pStartA->GetwindowText(strText); 
   pStartB->SetwindowText(strText);
   pEndA->GetwindowText(strText);
   pEndB->SetwindowText(strText);
  }
  else
  {
   pStartB->GetwindowText(strText);
   nValue=atoi(strText);
   if(nValue>m_nMaxlineNumber-nlines+1)
   {
    nValue=m_nMaxlineNumber-nlines+1;
    strText.Format("%d",nValue);
    pStartB->SetwindowText(strText);
   }
   strText.Format("%d",nValue+nlines-1);
   pEndB->SetwindowText(strText); 
   
  }
 }

 

总结

以上是内存溢出为你收集整理的连动的数字编辑框全部内容,希望文章能够帮你解决连动的数字编辑框所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存