明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2619|回复: 8

无法隐藏模式对话框

[复制链接]
发表于 2005-9-9 09:49:00 | 显示全部楼层 |阅读模式

用以下代码创建了一个模式对话框:

CAcModuleResourceOverride  resOveride;
CModalDlg pDlg(CWnd::FromHandle(adsw_acadMainWnd()));
pDlg.DoModal();

点对话框中一个按钮,添加如下代码,希望隐藏对话框:

ShowWindow(SW_HIDE);

对话框是隐藏了,但焦点回不了acad的主界面了,就是鼠标点不了acad的界面,包括菜单、绘图区等等,没有任何错误提示,程序也没有“无响应”。

请问大家,这是怎么回事?

发表于 2005-9-9 10:57:00 | 显示全部楼层

reply

你可以使用CAcUiPickButton,在事件处理中用
   BeginEditorCommand();
   CancelEditorCommand();
参见..\arx_sdk\ObjectARX2004\samples\editor\mfcsamps\acuisample_dg例子
发表于 2005-9-9 11:32:00 | 显示全部楼层
是的.grass说的有道理。
 楼主| 发表于 2005-9-9 21:54:00 | 显示全部楼层

谢谢王咣生斑竹!

 楼主| 发表于 2005-9-10 10:13:00 | 显示全部楼层

现在点击了模式对话框的按钮,生成一条直线,只有退出模式对话框才能显示该直线,请问要如何才能更新绘图区呢?

发表于 2005-9-10 10:19:00 | 显示全部楼层

更新绘图区acedGetAcadDwgView()->UpdateWindow();

 

 楼主| 发表于 2005-9-10 10:31:00 | 显示全部楼层
yfy2003发表于2005-9-10 10:19:00 更新绘图区acedGetAcadDwgView()->UpdateWindow();


用了这行代码还是没有什么反应的

 BeginEditorCommand();

 //焦点给acad主窗体
 AfxGetMainWnd()->SetFocus();
 //将当前文档锁定,因为要写入实体了
 acDocManager->lockDocument( acDocManager->curDocument(), AcAp::kWrite,
  NULL,
  NULL,true) ; 

 //添加直线到块表记录
 AcDbBlockTable*  pBlockTable=NULL;
 AcDbBlockTableRecord* pSpaceRecord=NULL;
 acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead);
 pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord, AcDb::kForWrite);
 pBlockTable->close();

 AcDbLine *pLine=new AcDbLine(stPntNew,edPntNew);

 pSpaceRecord->appendAcDbEntity(LineId,pLine);
 pSpaceRecord->close();

 //添加新层
 AcDbLayerTable *pLayerTable;
 acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTable, AcDb::kForWrite);
 if(!pLayerTable->has("Line"))
 {
  AcDbLayerTableRecord *pLayerTableRecord=new AcDbLayerTableRecord;
  pLayerTableRecord->setName("Line");
  pLayerTable->add(pLayerTableRecord);
  pLayerTableRecord->close();
 }
 pLayerTable->close();
 pLine->setLayer("Line");
 pLine->setColorIndex(1);

 pLine->close();

 //更新绘图区域
 acedGetAcadDwgView()->UpdateWindow();

 //文档解锁
 acDocManager->unlockDocument(acDocManager->curDocument());

 //返回模式对话框
 CompleteEditorCommand();

发表于 2005-9-10 23:23:00 | 显示全部楼层
   // 刷新显示屏幕
   actrTransactionManager->flushGraphics();
   acedUpdateDisplay();
 楼主| 发表于 2005-9-12 20:44:00 | 显示全部楼层
谢谢 王咣生 yfy2003 斑竹,问题已解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 04:21 , Processed in 0.155161 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表