关于vc编辑框控件的问题

 大概意思是有40个edit控件。向每个控件中输入数据。且有检测功能,如果有一个没有输入,则不能向下运行。最后将每个edit控件中的内容写入文件。现在问题来了,我不想对每个控件都操作一遍,想用循环一次搞定

C/C++ code
  
  
// 你创建ID必须是有规则的,最好是连续的 #define IDC_EDIT1 1000 #define IDC_EDIT2 1001 #define IDC_EDIT3 1002 #define IDC_EDIT4 1003



 

C/C++ code
    
    
// .h中加 public : int nData[ 40 ]; // 加这条,根据你需要更改数组,如char或者double类型的 protected : HICON m_hIcon; // Generated message map functions // {{AFX_MSG(CXXDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnKillfocusEdit(UINT nid); // 加这条 virtual void OnOK(); // }}AFX_MSG DECLARE_MESSAGE_MAP()



 

C/C++ code
    
    
// .cpp中加 BEGIN_MESSAGE_MAP(CXXDlg, CDialog) // {{AFX_MSG_MAP(CXXDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_CONTROL_RANGE(EN_KILLFOCUS,IDC_EDIT1, IDC_EDIT40,OnKillfocusEdit) // 加这条 // }}AFX_MSG_MAP END_MESSAGE_MAP()


void CXXDlg::OnKillfocusEdit(UINT nid) 
{
// TODO: Add your control notification handler code here
CString str;
GetDlgItemText(nid,str);
if(!str.IsEmpty())
nData[nid-IDC_EDIT1] = atoi(str); //根据数组类型转成不同的类型
else
nData[nid-IDC_EDIT1] = 0; //为空的存0
}

void CXXDlg::OnOK() 
{
// TODO: Add extra validation here
char szFilter[]= "文本文件 (*.txt)|*.txt|所有文件(*.*)|*.*||";  
CFileDialog SaveDlg(false,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter,this);  
SaveDlg.m_ofn.lStructSize=sizeof(SaveDlg.m_ofn);  
SaveDlg.m_ofn.hwndOwner = NULL;  
SaveDlg.m_ofn.lpstrTitle= 保存为"; 
SaveDlg.m_ofn.lpstrDefExt="txt"; 

CString str;
if(SaveDlg.DoModal()==IDOK) 

CFile m_fileSave; 
CString strPathName=SaveDlg.GetPathName();  
m_fileSave.Open(strPathName,CFile::modeCreate|CFile::modeWrite);
for(int i=0; i<40; i++)
{
str.Format("%d",nData[i]);
str += 0x0d;  
str += 0x0a;
m_fileSave.Write(str,str.GetLength());
}
m_fileSave.Close();
}
// CDialog::OnOK();
}
[code=C/C++][/code]

///

C/C++ code
  
  
void CXXDlg::OnKillfocusEdit(UINT nid) { // TODO: Add your control notification handler code here CString str; GetDlgItemText(nid,str); if ( ! str.IsEmpty()) nData[nid - IDC_EDIT1] = atoi(str); // 根据数组类型转成不同的类型 else nData[nid - IDC_EDIT1] = 0 ; // 为空的存0 } void CXXDlg::OnOK() { // TODO: Add extra validation here char szFilter[] = " 文本文件 (*.txt)|*.txt|所有文件(*.*)|*.*|| " ; CFileDialog SaveDlg( false ,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this ); SaveDlg.m_ofn.lStructSize = sizeof (SaveDlg.m_ofn); SaveDlg.m_ofn.hwndOwner = NULL; SaveDlg.m_ofn.lpstrTitle = 保存为 " ; SaveDlg.m_ofn.lpstrDefExt = " txt " ; CString str; if (SaveDlg.DoModal() == IDOK) { CFile m_fileSave; CString strPathName = SaveDlg.GetPathName(); m_fileSave.Open(strPathName,CFile::modeCreate | CFile::modeWrite); for ( int i = 0 ; i < 40 ; i ++ ) { str.Format( " %d " ,nData[i]); str += 0x0d ; str += 0x0a ; m_fileSave.Write(str,str.GetLength()); } m_fileSave.Close(); } // CDialog::OnOK(); }

///

//

把控件ID定义为连续的数字:
#define IDC_EDIT1 101;
#define IDC_EDIT2 102;
.....
#define IDC_EDIT40 140;

CString temp="";
for(int i=0;i<40;i++)
{
  CSting Str=GetDlgItem(IDC_EDIT1+i)->GetWindowText();
  if(Str==""}
  { 
  return;
  }
  else
  temp+=Str;
}
if(i==40) //说明40个控件都有非空。
{ }
  temp+=

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值