apple@nprdc.navy.mil (Jim Apple) (05/17/91)
I need some help with the Ulowell C++ bindings for Motif.
My problem is that I can not pass a object (XMObject) as a argument
to a function that is in another source file.
here is a short fragment of what I'm trying to do
----- main.cc
.
void CreateMainMenu( XMForm * );
// I've also tried, void CreateMainMenu( XMObject * );
void main (unsigned int argc, char **argv)
{
XMApplicationShell topLevel ("topLevel", &argc, argv );
XMForm mainWindow (&topLevel, "mainWindow" );
CreateMainMenu( &mainWindow );
}
----- menus.cc
void
CreateMainMenu( XMForm * parent )
{
XMString string ( "test" );
XMLabel label ( parent, "label", &string );
label.Manage();
}
The mainWindow is displayed but I get a message "Destroying Widget ..",
and the label is never displayed
If I move the three lines from CreateMainMenu to main.cc and replace "parent"
with "&mainWindow", it works fine.
GDB show main.cc:&mainWindow and Menus.cc:parent to be the same address
and type.
Any help would be great
Config:
Sun 3 OS 4.1.1
g++-1.39.1
gdb 3.5
PS: I'd love to hear from anyone else who is using / trying to use
these bindings.
Jim Apple apple@nprdc.navy.mil
WB1DOG ...}ucsd!nprdc!applekseethar@hawk.ulowell.edu (Krishnan Seetharaman) (05/18/91)
In article <15457@arctic.nprdc.navy.mil> apple@nprdc.navy.mil (Jim Apple) writes: > > I need some help with the Ulowell C++ bindings for Motif. > >My problem is that I can not pass a object (XMObject) as a argument >to a function that is in another source file. > > here is a short fragment of what I'm trying to do > >----- main.cc >. >void CreateMainMenu( XMForm * ); >// I've also tried, void CreateMainMenu( XMObject * ); > >void main (unsigned int argc, char **argv) >{ > XMApplicationShell topLevel ("topLevel", &argc, argv ); > XMForm mainWindow (&topLevel, "mainWindow" ); > CreateMainMenu( &mainWindow ); >} > >----- menus.cc > >void >CreateMainMenu( XMForm * parent ) >{ > XMString string ( "test" ); > XMLabel label ( parent, "label", &string ); > label.Manage(); >} > >The mainWindow is displayed but I get a message "Destroying Widget ..", >and the label is never displayed > >If I move the three lines from CreateMainMenu to main.cc and replace "parent" >with "&mainWindow", it works fine. > >GDB show main.cc:&mainWindow and Menus.cc:parent to be the same address Hi I tried out the above program and the fix seems to be to put declare the variables in the other file as static. Hope this helps ... Regards Krishnan -- K. Seetharaman | email : kseethar@cs.ulowell.edu Graphics Research Laboratory, | Tel : 508-934-3612 Department of Computer Science | University of Lowell, Lowell, MA 01854 |
ctim@aaet.csc.ti.com (Craig Timmerman) (05/18/91)
> I need some help with the Ulowell C++ bindings for Motif. > > My problem is that I can not pass a object (XMObject) as a argument > to a function that is in another source file. > > here is a short fragment of what I'm trying to do > > > > ----- main.cc > . > void CreateMainMenu( XMForm * ); > // I've also tried, void CreateMainMenu( XMObject * ); > > void main (unsigned int argc, char **argv) > { > XMApplicationShell topLevel ("topLevel", &argc, argv ); > XMForm mainWindow (&topLevel, "mainWindow" ); > CreateMainMenu( &mainWindow ); > } > > ----- menus.cc > > void > CreateMainMenu( XMForm * parent ) > { > XMString string ( "test" ); > XMLabel label ( parent, "label", &string ); > label.Manage(); > } > > The mainWindow is displayed but I get a message "Destroying Widget ..", > and the label is never displayed I'm assuming you are using the latest version of the Lowell bindings (the version that works with Motif 1.1). In this version I believe that the destructor for the object calls XtDestroyWidget. In your case the label object goes out of scope at the end of CreateMainMenu and therefore its associated widget will be destroyed before it is ever displayed. This would explain the message you see and why it would work if you move the creation of the label into main--it wouldn't go out of scope there. Try explicitly creating the label using new, and don't delete it. Your problem should go away. > PS: I'd love to hear from anyone else who is using / trying to use > these bindings. I have used the first version of the bindings, and may use them again in the future. -- ---------------------------------------------------------------------- Craig Timmerman email: ctim@aaet.csc.ti.com Texas Instruments Austin, TX ----------------------------------------------------------------------