![]() |
【转帖】[求助]讨教arx中的cacuitabmaindialog 和 cacuitabchilddialog的用法
[求助]讨教arx中的cacuitabmaindialog 和 cacuitabchilddialog的用法
[求助]讨教arx中的cacuitabmaindialog 和 cacuitabchilddialog的用法 最近,有一小项目用到了属性单与属性页,在arx文档中讲,用cacuitabmaindialog 和 cacuitabchilddialog来替代他们,有关此文档反复看了多次,仍不得其法。vc++也不太熟练(windows编程我原用delphi)。只能向版主或高手求教,且用示例说明。谢谢!email:wenbinpeng@163.com 其实这个问题很难用一两句话说清楚的。 你可以找一本arx的书看一下,因为操作起来很麻烦,一两句话也说不清楚。不过我可以简单的向你描述一下: 先加入属性单/属性页,属性单用控件中的“tab control”,属性页就同一般的对话框一样,下面的例子中我用mainsht来表示属性单类,用cpg1,cpg2,cpg3分别表示三个属性页类。然后需要在属性单的.h文件中声明属性页的实例,例如: // mainsht.h class cmainsht:public cacuitabmaindialog{ declare_dynamic(cmainsht) // // // cpg1 m_pg1; cpg2 m_pg2; cpg3 m_pg3; 在mainsht.cpp文件中 bool cmainsht::oninitdialog() { //将每个属性页加入到属性单中; //m_tabctrl是属性单中tab control控件对应的变量;m_pg1,m_pg2,m_pg3分别是三个属性页对应的变量。 // setacadtabpointer(&m_tabctrl); //得到指向嵌入式标签控件的指针; ); //将各个页插入到单中; m_tabctrl.addtab(0,_t("pg1"),cpg1::idd,&m_pg1m_tabctrl.addtab(1,_t("pg2"),cpg2::idd,&m_pg2); m_tabctrl.addtab(1,_t("pg3"),cpg3::idd,&m_pg3); // } 还需要在各个属性页中加入你特性化的东西。 我可不是什么高手,只是自己曾经做过,也不知道说明白了没有,但愿能帮上你的忙。可以看看爱尔兰人charles mcauley编的autocad like this arx中的cacuitabmaindialog 和 cacuitabchilddialog 与mfc中的类区别在于数据校验,步骤: 1 摆放空间形成dialog 2 生成cpropertysheet和cpropertypage类 3 将 cpropertysheet,cpropertypage改成cacuitabmaindialog 和 cacuitabchilddialog 4 将空件的类改成cad的相应的类如:cedit-->cacuiedit 非常感谢! 按照bb君的指引,现已搞定。经验总结:1、vc不熟;2、c++概念不清;3、ctabctrl、cacuitabctrl及cacuitabchilddialog之间的关系糊涂;4、我买的2本书均是帮助文件的“译文”,bb君讲的书在我市没有卖,可能老外才是真的著书吧。 老问题的新现象,请问bb 似乎在nt中无问题(未深入调试),而在win xp中,标签选项卡的第一页(项)不在对话框中显示,且第一页只有一个默认的<确定>按键,还不能对cacuitab的成员函数操作。是什么原因?还请bb君解答。 应该和操作系统关系不大吧?! 我觉得用什么操作系统并不影响程序的可执行性的。肯定还是你程序有问题。“确定”按钮不应该在属性页中显示吧?!应该把它放到属性单中。这样吧!我给你发个例程你好好看看。 谁还有“bb”发的那个例程啊,能发给我一份吗?谢谢 呵呵,老兄我也是从delphi转过来的,本来从delphi两行就能解决的问题,在vc中要经过很多不好理解的步骤。上面的bb说的很详细了,希望大家共同进步 |
| 所有的时间均为北京时间。 现在的时间是 11:33 PM. |