我的窗体中有3个按钮,ID_BUTTON1 ID_BUTTON2 ID_BUTTON3
我如何通过一个循环for(int i=1;i<=3;i++){
}实现对这三个按钮的进行某一项相同行为的操作?我曾想这么做:
CString ItemCap;
for(int i=1;i<4;i++)
{
ItemCap.Format ("IDC_BUTTON%d",i);
GetDlgItem(ItemCap)->MoveWindow(100,i*10,100+20,i*10+20);
}
可这样实行不通的。
我如何通过一个循环for(int i=1;i<=3;i++){
}实现对这三个按钮的进行某一项相同行为的操作?我曾想这么做:
CString ItemCap;
for(int i=1;i<4;i++)
{
ItemCap.Format ("IDC_BUTTON%d",i);
GetDlgItem(ItemCap)->MoveWindow(100,i*10,100+20,i*10+20);
}
可这样实行不通的。
解决方案 »
- CPropertyPage类对象对话框标题栏的位置问题
- 关于服务器大并发的两个完成端口的问题
- 好像DCMconverter的代码有错误,请高手指教
- 请问ATL里组合框的类是什么?
- activeX控件如何实现打印预览功能?
- 求助:C编程。专科的作业。
- 如何在视图中让显示的文本可以选中,但是不可以更改?
- 请问高手们一个让我郁闷了好几天的问题!
- 如何改变Radio控件字体大小?
- nt4上开发应用程序,装哪个版本的vc比较好???
- 想不通?为什么MFC中的CToolBar不从CToolBarCtrl继承,而从CControlBar继承?
- 如何用最简单的方法获得某张表的记录数目,Sql server2000
hButton[0] = GetDlgItem(...) ;
hButton[1] = GetDlgItem(...) ;for(int i=1;i<4;i++)
{
::MoveWindow(hButton[i], 100,i*10,100+20,i*10+20);
}
这样就可以
for(int i=1;i<4;i++)
{
控件(i).MoveWindow(hButton[i], 100,i*10,100+20,i*10+20);
}
那么GetDlgItem()就可以在循环中实现了。若是在程序中创建, 可直接将其WINDOWS句柄保存在数组中。没有VB的那种控件数组。
那么GetDlgItem()就可以在循环中实现了。"小第愚笨,能否举例说明一下,谢谢~
int nArrID[nCount] = {IDC_BUTTON1,IDC_BUTTON2,IDC_BUTTON3};
for(int i = 0;i< nCount;i++)
{
GetDlgItem(nArrID[i])->MoveWindow(100,i*10,100+20,i*10+20);
}
GetDlgItem的参数要求是int的,你传给它CString当然不行了。你的那几个控件的
ID要是都是连续的,你也可以直接写
假如IDC_BUTTON1 = 1001,IDC_BUTTON2 = 1002,IDC_BUTTON3 = 1003,for(int i = 1001;i< 1004;i++)
{
GetDlgItem(i)->MoveWindow(100,i*10,100+20,i*10+20);
}
不过不建议这么写