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.