[求助]讨教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

ublic cacuitabmaindialog{
declare_dynamic(cmainsht)
//
//
//
cpg1 m_pg1;
cpg2 m_pg2;
cpg3 m_pg3;
在mainsht.cpp文件中
bool cmainsht:

ninitdialog()
{
//将每个属性页加入到属性单中;
//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说的很详细了,希望大家共同进步