如何在程序运行时动态地创建不定数量的文本框?
正在编制一个评价软件,需要对N个元素进行两两比较(N由数据库中的记录数量决定,为一变量),初步打算在程序中动态的生成N*N个文本框并按矩阵样式摆放。
按照有关的文档,单独生成一个或几个数量确定的文本框并不难,只需建立几个指向CEDIT的对象,指定资源ID,然后再使用CEdit::Creat()和ShowWindow()即可。我的问题是如何生成不定数量的文本框?
问题点数:20、回复次数:6Top
1 楼fengqinggao(风清高)回复于 2003-07-05 21:33:31 得分 20
不定数量和定数量,唯一区别在于ID个数,有两个方法,一个是程序静态的定义你所需要的最大数目的ID,然后按顺序创建;或者你查看resource.h文件,看那段ID号不可能使用,你就动态的指定你的ID处于该段,就可以了,例如从10000起,VC自身就用得很少了。Top
2 楼ml_tt(梵笙)回复于 2003-07-07 08:30:05 得分 0
1、如果动态指定ID的话,原来的声明控件变量CEdit m_pEdit、定义ID#define IDC_EDIT 1080和分配内存m_pEdit = new CEdit应该如何编写?以前没有做过,不知道该怎么办?能不能详细说明一下?可以加分噢!
2、现在想想,如果一下子建立一百多个文本框,后来的文本提取也是一个难题,有谁知道还有什么新的办法可以实现这个功能?Top
3 楼fengqinggao(风清高)回复于 2003-07-07 10:31:09 得分 0
如果是动态创建的话,就不能有这些映射的对象了,只能临时获取,如:
CEdit *pEdit = (CEdit*)GetDlgItem(IDC_YOURID);
然后对pEdit进行操作。
其实动态创建的ID更容易提取文本,你保证的ID是连续的,就可以这么做了:
CStringArray arrYourText;
for(int i = 0; i < iYourCtrlNumber; i++)
{
CString strTemp;
GetDlgItem(IDC_YOURFIRSTID + i)->GetWindowText(strTemp);
arrYourText.Add(strTemp);
}
这样你一次性将所有的Edit控件中的数据读到一个链表中了,你想怎么处理就怎么处理,呵呵。
比较麻烦的其实是布局,得动态更改对话框的大小,所以,呵呵,你得想想办法,是可以实现的,我做过。Top
4 楼Smile_Tiger(笑面虎)回复于 2003-07-07 11:30:29 得分 0
为什么要创建这么多的edit box?浪费资源!
如果只是为了显示,那么创建一个static作为画布,在上面画表格显示数据就行了
如果有输入,也可以即时创建edit box(只需要一个)呀Top
5 楼ml_tt(梵笙)回复于 2003-07-10 10:31:00 得分 0
感谢风清高老兄。
您讲的挺好的,我正在试着做。如有疑问,还将继续求教。
to 笑面虎
我得输入这些值并提取处理,还有什么更好的办法?Top
6 楼ml_tt(梵笙)回复于 2003-07-10 17:42:13 得分 0
都搞定了。送分还人情喽!Top
相关问题
- 如何在程序运行时动态创建文本框
- 请问如何使文本框在程序运行时可以拖动?
- 创建文本框组?
- 如何使程序具有记忆功能?比如:在程序运行时我让一个已经设置好的本来不可见的文本框为可见,用什么办法使程序下一次运行时文本框继续可见?
- 运行时弹出一个窗体,在窗体中有一个文本框和一个按钮,按此按钮后,文本框显示“你好!!”。请给出VC实现以上功能的详细步骤及程序。谢谢!
- [很难的问题]在窗体上放一个文本框,然后运行程序,在文本框里右击,会出现一个粘贴的菜单,如何把这个菜单去掉?
- 为什么运行时文本框中不能输入中文???
- 怎样在运行时设置文本框焦点?
- 请问CEdit类创建的文本框怎样才能和普通的文本框一样``有3D感`?
- 知道另一程序中文本框的句柄(hWnd),如何得到该文本框的内容?





