查看单个帖子
旧 2009-04-16, 02:01 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】[求助]arx使用对话框的问题

[求助]arx使用对话框的问题
[求助]arx使用对话框的问题
1.为什么我的arx中调用对话框必须加 cacmoduleresourceoverride resoverride; 这句才能这确显示?我看别人写的都没有这句却可以?为什么啊?
2.如何将对话框以非模态方式显示?使用m_dlg.domodal();是以模态显示的,我需要非模态显示,如何做?
下面是我调用对话框的函数?望朋友们帮我解决上面的问题,非常感谢!
//主函数
void addcode_main(void)
{
//必须,否则显示的对话框并非你资源中所定义的
cacmoduleresourceoverride resoverride;
//获取cad窗口句柄
cmdiframewnd *pm=acedgetacadframe();

cacdialog m_dlg;
int retvalue = m_dlg.domodal();
}
非模态对话框
cacdialog *pdlg = new cacdialog();
pdlg.create(idd_***) ; //idd_***是对话框资源id
pdlg.showwindow(sw_show);
/////////////////////////////////////
cacmoduleresourceoverride resoverride ;
这个好像也是处理资源的,但具体的作用,我也很想知道,
期待高手讲解(估计现在高手很少来吧)
cacmoduleresourceoverride 的确是用来切换资源的,在arx代码中,默认的始终是cad的资源,所以当你需要用自己的资源dll时,需要调用这个,来切换到你自己的res dll,否则你用acstring等load过来的字符串,将是cad中同号的字符串资源,而不是你自己想要的定义在自己资源里的。尤其是当你需要在对话框中进行图形操作,如begineditorcommand这些操作时,这cacmoduleresourceoverride 就更加重要,加得不对,经常出来错误的结果。
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)