如何比较快地 把多个控件的值与其祖父窗口中的变量对应?? 做了一个对话框,有多个Edit控件,等待用户输入。想把用户输入的值与这个对话框“父窗口”中一些变量相对应。比较常规的方法是DoModal之后, YY1 = dlg.XX1; YY2 = dlg.XX2; YY3 = dlg.XX3; ......我感觉这些式子是有规律的,但是找不到一种简化的方法,大家有何高见?非常感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在dodatachage中,直接印射你的变量.DDX_Text(pDX, IDC_EDIT1, maindlg.m_text); 注意放在AFX_DATA_MAP外面,这样不会破坏wizzard 查到一种方法如下根据ID区分 比如你可以这样 IDC_XXX1,IDC_XXX2, .................. IDC_XXX29,IDC_XXX30 定义一个数组变量,比如a[i],与这些控件交换数据 定义一个宏#define val(n) IDC_XXX##n 如果你要对控件ID赋值, for(int i=0;i<30;i++) SetDlgItemText(val(i),a[i]); 如果从控件中返回变量 for(int i=0;i<30;i++) GetDlgItemText(val(i),a[i]); ----------------------------------------------------------很有创意,但恐怕行不通,因为编译器会预先实现替换,val(i)=〉IDC_XXXi而不是想要的IDC_XXX1如何改进,退后实现替换? 俺都是在PretranslageMessage中处理。 if( VK_RETURN == pMsg->wParam ) {RETURNCASE: if( id >= IDC_NUMBER0 && id <= IDC_NUMBER16 ) { if( m_number[ id - IDC_NUMBER0 + 1 ]->IsWindowVisible() ) { m_number[ id - IDC_NUMBER0 + 1 ]->SetFocus(); m_number[ id - IDC_NUMBER0 + 1 ]->SetSel( 0, -1 ); return TRUE; } else { m_ok.SetFocus(); return TRUE; } }这样只要在控件的id是有规则的就可以处理了。实际效果就是IDC_NUMBER0与m_number[ 0 ]绑定,IDC_NUMBER1与m_number[ 1 ]绑定,等等。 非常感谢!!不过还是有几个小小的疑问:1 IDC_XXX0就是我在Dialog设计窗口给控件设的名字吧?2 我没太看懂哪一句是把控件和变量绑定的语句。 (我想把Edit和一个变量绑定)3 绑定的是Value还是Control,我没太看出来。谢谢!!! 窗口分割问题 Cannot open include file: 'ColorListCtrl.h': No such file or directory???? 用listctrl出现的错误(在线急等) 做一个类似于WIN2K的任务管理器 关于树型控件问题(菜鸟提问) 我打不开CHM格式了. GetEditCtrl()的问题 求大神解决RichEdit控件的问题 如何实现调用一个函数,该函数返回一个字符串指针,同时返回一个int整数 vc+access+ado建mdb文件+建表后,出现的问题,希望高手帮忙解答 Dll 对话框 显示 ? mfc 中线程问题
比如你可以这样
IDC_XXX1,IDC_XXX2,
..................
IDC_XXX29,IDC_XXX30
定义一个数组变量,比如a[i],与这些控件交换数据
定义一个宏#define val(n) IDC_XXX##n
如果你要对控件ID赋值,
for(int i=0;i<30;i++)
SetDlgItemText(val(i),a[i]);
如果从控件中返回变量
for(int i=0;i<30;i++)
GetDlgItemText(val(i),a[i]);
----------------------------------------------------------很有创意,但恐怕行不通,因为编译器会预先实现替换,val(i)=〉IDC_XXXi
而不是想要的IDC_XXX1如何改进,退后实现替换?
{
RETURNCASE:
if( id >= IDC_NUMBER0 && id <= IDC_NUMBER16 )
{
if( m_number[ id - IDC_NUMBER0 + 1 ]->IsWindowVisible() )
{
m_number[ id - IDC_NUMBER0 + 1 ]->SetFocus();
m_number[ id - IDC_NUMBER0 + 1 ]->SetSel( 0, -1 );
return TRUE;
}
else
{
m_ok.SetFocus();
return TRUE;
}
}这样只要在控件的id是有规则的就可以处理了。
实际效果就是IDC_NUMBER0与m_number[ 0 ]绑定,IDC_NUMBER1与m_number[ 1 ]绑定,等等。
2 我没太看懂哪一句是把控件和变量绑定的语句。 (我想把Edit和一个变量绑定)
3 绑定的是Value还是Control,我没太看出来。谢谢!!!