[V8i C++] Attempting to obtain DialogBox pointer when DIALOGID_GraphicsFileSaveAs is opened

I'm trying to get a DialogBox pointer to the DialogBox that gets created when you pick File->SaveAs (id=DIALOGID_GraphicsFileSaveAs). I've tried using mdlInput_setFunction() with INPUT_FILEOPENDIALOG_PREPROCESS and I can "trap" the instance before it is opened. However, it's not created yet, so there is no DialogBox instance to "find". I've also tried using a "hidden" dialog box and setting dmP->u.create.interests.otherDialogs=1 to get notified of when a dialog box is open/closed. It *seems* that all the entries under the "File" menu which spawn a dialog box (like SaveAs) don't get "seen" by interests.otherDialogs.

 

The ultimate goal of this exercise is to remove the ability of a user to be in a version 8 file and save it back to version 7 format. I was hoping there was some "capability" or "workmode" flag that could be set that would accomplish this, but I don't see one.

 

My though is that if I can get a pointer to that dialog box I can find the "filetypes" option button and remove the entry for V7.

Any suggestions are appreciated.

 

 

Thanks,

Bruce

  • At any given moment you can walk through all loaded dialog boxes, retrieve their title and when it match play with their content.

    Be aware that some dialog boxes are not true MicroStation creations targeting MicroStation Dialog Box Manager because they are wrappers to an alien content (like Dotnet et al.) and their items can not be manipulated by MDL tools.

    Walking through dialog boxes:

    MSWindow *current = NULL;

    for ( current = mdlWindow_getFirst (); current; current = mdlWindow_getNext ( current ) )

        {

        if ( mdlWindow_isDialogBox ( current ) )

           {      

           // process window here

           }

        }

    Cheers,

    /Chris Z.