几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » DirectDWG
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-05-04, 06:30 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】crash in odgsbasevectorizedeviceonsize9outputrect0

crash in odgsbasevectorizedevice:nsize(outputrect)
crash in odgsbasevectorizedevice:nsize(outputrect)
my application is crashing in the statement odgsbasevectorizedevice:nsize(outputrect)
in the function void exgsgdisimplevectorizedevice:nsize
i found thru trace that the value for top is a huge negative number.
the onsize is called by m_pdevice->onsize(gsrect); in the createdevice function of the viewing code as in cdwgviewer::createdevice()
has anyone experienced the same crash in this portion of the code? what could be the possible causes for a crash in onsize?
thanks...
hi,
>>i found thru trace that the value for top is a huge negative number.
so that seems to be a problem. how gsrect (outputrect) is filled in in your code ?
hi dmitry,
following is the entire code of the createdevice function; i am using dd 1.13;
void cappview::createdevice()
{
crect rc;
getclientrect(&rc);
cappdoc* pdoc = (cappdoc*)getdocument();
try
{
odgsmoduleptr pgs = :drxdynamiclinker()->loadmodule("wingdi.gs", false);
odgsdeviceptr pdevice = pgs->createdevice();
odrxdictionaryptr pproperties = pdevice->properties();
if(pproperties.get())
{
pproperties->putat("windowhdc", odrxvariantvalue((long)hwindowdc));
if(pproperties->has("doublebufferenabled"))
{
pproperties->putat("doublebufferenabled", odrxvariantvalue (theapp.doublebufferenabled())); }
}
oddbdatabase* pdb = (cappdoc*)getdocument();
m_pdevice = oddbgsmanager::setupactivelayoutviews(pdevice, this);
m_layoutid = m_pdevice->layoutid();
const odcolorref* palette = theapp.curpalette();
odgspalette ppalcpy;
ppalcpy.insert(ppalcpy.begin(), palette, palette+256);
ppalcpy[0] = theapp.activebackground();
m_pdevice->setlogicalpalette(ppalcpy.asarrayptr(), 256);
if(m_pdevice->iskindof(odgsmodellayouthelper::desc()))
{
m_bpsoverall = false;
m_pdevice->setbackgroundcolor(theapp.activebackground());
}
else
{
m_bpsoverall = true;
m_pdevice->setbackgroundcolor(odrgb(173,174,173)); }
setpalettebackground(theapp.activebackground());
// rc.top is showing a huge negative number
odgsdcrect gsrect(rc.left, rc.right, rc.bottom, rc.top);
// crashes on following statement
m_pdevice->onsize(gsrect);
}
catch(const oderror& e)
{
m_pdevice.release();
theapp.reporterror("graphic system initialization error", e);
}
}
last edited by robertpantangco@hotmail.com; 6th october 2005 at 08:38 pmfff">. reason: error in entering code
hi robert,
huge negative value should not crash device, but top equal to bottom or left equal to right would.
has exception handled by "catch" statement ?
dmitry,
yes. the catch statement indicates "graphics initialization error" -"invalid input".
the only possibility i see is the getclientrect(&rc) is not getting valid values.
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 09:55 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多