![]() |
【转帖】crash in odgsbasevectorizedeviceonsize9outputrect0
crash in odgsbasevectorizedevice::onsize(outputrect)
crash in odgsbasevectorizedevice::onsize(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. |
所有的时间均为北京时间。 现在的时间是 07:52 AM. |