Display a MFC Modal Dialog with CListBox in TestStand

I want to display a MFC Modal Dialog with a CListBox element, but I can't fill the listbox with data.
Here are some commands of my program:
SequenceContext seqContext;
Engine engine;
seqContext.AttachDispatch(seqContextDisp, FALSE);
engine.AttachDispatch(seqContext.GetEngine());
HWND parentHwnd = (HWND)engine.GetAppMainHwnd();
CSearch_Line_Window_Dialog dlg(CWnd::FromHandle(parentHwnd));
dlg.m_SearchLineWindow_Listbox.m_hWnd = parentHwnd;
(without this command I get the error "Debug Assertion Failed", because of ASSERT(::IsWindow(m_hWnd)))
dlg.m_SearchLineWindow_Listbox.AddString("Hallo");
dlg.DoModal();
seqContext = NULL;
engine = NULL;
The dialog with the emtpy listbox appears, b
ut without any text. I tried the same by using NotifyStartOfModalDialogEx and NotifyEndOfModalDialog. The example "MFC_Modal_Dialog" opens only a dialog without elements.
I hope you can help me to solve my problem.
Thank you.

I've about the same problem and tried to implement your solution but can't get it to run. I always receive an assertion failure.
I try to fill the ComboBox in a dialog with items at runtime. (use VC++ and MFC-DLL)
the header of my dialog:
class DlgSelectECU : public CDialog
public:
DlgSelectECU(CWnd* pParent = NULL);
BOOL OnInitDialog();
//{{AFX_DATA(DlgSelectECU)
enum { IDD = IDD_DLGSELECTECU_DIALOG };
CComboBox m_ECUList;
CStringList m_StringList;
//}}AFX_DATA
//{{AFX_VIRTUAL(DlgSelectECU)
protected:
virtual void DoDataExchange(CDataExchange*pDX);
//}}AFX_VIRTUAL
protected:
DECLARE_MESSAGE_MAP()
the implementation of my dialog:
DlgSelectECU:lgSelectECU(CWnd* pParent /*=NULL*/)
: CDialog(DlgSelec
tECU::IDD, pParent)
//{{AFX_DATA_INIT(DlgSelectECU)
//}}AFX_DATA_INIT
BOOL DlgSelectECU:nInitDialog()
POSITION pos = m_StringList.GetHeadPosition();
while (pos)
m_ECUList.AddString(m_StringList.GetNext(pos));
return true;
void DlgSelectECU:oDataExchange(CDataExchange* pDX)
CDialog:oDataExchange(pDX);
//{{AFX_DATA_MAP(DlgSelectECU)
DDX_Control(pDX, IDC_COMBO_ECU, m_ECUList);
//}}AFX_DATA_MAP
my dll function TestStand calls looks like that:
EXPORT CALLBACK SelectECU(char ECUs[1024])
AFX_MANAGE_STATE(AfxGetStaticModuleState());
DlgSelectECU Dlg;
Dlg.m_StringList.AddTail("ITEM 1");
if (Dlg.DoModal() == IDOK)
// do something
Running the sequence file in TestStand and calling the dll function descriped above causes an assertion failure each time I try to add anything to the StringList. Why? And what am I doing wrong? Is there
a documentation about how to write dlls with MFC elements
for use with TestStand using other tools than LabWindows/CVI? Everything I found so far is rather crude.
Thanks!

Similar Messages

  • Plugin fails to display modal dialog with ActiveX'ed bean

    I have first posted this in the ActiveX bridge group, and have gotten no response. Since the plugin group also has posts on modal dialogs, thought this is also correct to post here. Both plugin and ActiveX'ed beans use beans.ocx for display.
    I have a bean wrapped as ActiveX with sun.beans.ole.Packager. The bean provides a method, which ultimately will pop up a modal confirm dialog (JOptionPane.showConfirmDialog(.)).
    If the method is triggered solely from within the bean, say via a click on a bean's button, all is well.
    If the method is triggered from its host (VB form), the
    - the call is done on the main thread. The confirm dialog shows, but when I click on one of its buttons, the app hangs.
    - If I try to pass the call into the event dispatch thread (SwingUtilities.invokeAndWait(.)), the confirm dialog somewhat pops up, but does not paint completely and the app hangs.
    - If I try to pass the call into the event dispatch thread with SwingUtilities.invokeLater(.) all is well, the confirm dialog pops up, I can click on its buttons, etc. but the function returns to VB too early, which is not what I want since I need the answer.
    - I have tried the following:
    entry method determines it is not on the event dispatch thread.
    Tries itself with invokeLater(.), yields the current thread and calls wait(.).
    The method invoked later will execute in the event dispatch thread, popup the confirm dialog and when finished will do a notifyAll(.).
    Unfortunately, what happens is that the entry thread (the main thread) puts the invokeLater into the event dispatch queue, yields itself and wait()'s. And waits and waits. In the meantime, the dispatch thread will get to the point where it wants to show the confirm dialog, but will then hang. If I time out the wait in the main thread, then the confirm dialog is popped up immediately after the wait finishes with the time-out.
    Sooo, this tells me that there is some strange synchronization going on which causes something like a deadlock. Is there any good approach to triggering modal dialogs from a native app hosting the ActiveX'ed bean??
    I have found many entries on probs with modal dialogs in the plug-in, which relate to applets. But no solution yet.
    Some keywords that I have came across are:
    - the event dispatch queue can be flushed and "empty events" can be posted into it. Also, the invokeAndWait(.) will register a "conditional" message pump on the event queue that seems to work until the locking condition is no longer valid. Any experience with these? Any way to manipulate (a) main thread, (b) event dispatch queue, (c) event dispatch thread to resolve the apparent deadlock?
    - There seems to be some difference in locking when the parent process is VB/COM as when it is Java. I have the impression that the main thread has some lock until the call made from VB/COM is fully completed and the call stack cleaned up. Can anyone confirm this? And/or suggest a way around it?
    Sylvia

    Sylvia - I found your posting because I have a similar problem in which a JavaBean wrapped using the Packager needs to call a Visual Basic event subroutine from a thread other than the main thread.
    This, I have discovered, is not supported in VB unless you use special thread marshalling calls (not available to the Java bean) or event queuing calls (ditto, afaik).
    My point is that this may be related to your problem. Check this Microsnot document on their public support site:
    Q196026

  • Java help dialog invoked from modal dialog with webstart

    Hi,
    we have an application where we invoke a Help window from a modal dialog. It works fine if ran from IDE but doesn't work if ran from a webstart loader. The problem is to be able to set decorations (exit/minimize) for this help window but since this window is null (from printouts) it never goes to lines where decorations are set. The help dialog is displayed by calling super.setDisplayed(true) but it is not setting variables "frame" or "dialog" of DefaultHelpBroker class.
    I am sure it doesn't sound very clear but if you had a similar problem with web start messing up something please let me know.
    thanks.
    private static void initHelp()
        ClassLoader loader = HelpFactory.class.getClassLoader();
        try
          URL url = HelpSet.findHelpSet(loader, HELPSETNAME);
          helpSet = new HelpSet(loader, url);
          helpBroker = new DefaultHelpBroker(helpSet)
            public void setActivationWindow(Window window)
              if (window instanceof Dialog)
                Dialog d = (Dialog) window;
                if (d.isModal())
                  super.setActivationWindow(window);
                  return;
              super.setActivationWindow(null);
            public void setDisplayed(boolean b)
              //no exception here and shows dialog with no decorations
              super.setDisplayed(b);
              System.out.println("d: " + dialog);//prints null here
              System.out.println("d: " + frame); //prints null here
              if (b)
                if (dialog != null)//since this is true, it never sets decorations
                  dialog.hide();             
                  dialog.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
                  dialog.show();
          helpBroker.setFont(new Font("Verdana", Font.PLAIN, 12));
          helpListener = new HelpListener(helpBroker);
        catch (HelpSetException e)
          e.printStackTrace();
      }

    sorry guys, i should've posted it either in the web-start or on javahelp forums. I'll do it right now.
    never mind :-)

  • Trying to make up a Modal Dialog with customized event dispatcher

    Hello everyone.
    I try to make up a ModalDialog class with customized event dispatcher in order to wait an invoker.
    But it fails :-(
    import javafx.event.ActionEvent;
    import javafx.event.Event;
    import javafx.event.EventDispatchChain;
    import javafx.event.EventHandler;
    import javafx.event.EventTarget;
    import javafx.event.EventType;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.stage.Modality;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle;
    import javafx.stage.Window;
    import javafx.stage.WindowEvent;
    import com.sun.javafx.stage.WindowEventDispatcher;
    import java.util.ArrayList;
    public class ModalDialog extends Stage {
      ArrayList<Button> buttons;
      int rc;
      Stage stage;
      Event event;
      EventDispatchChain tail;
      public ModalDialog( Window owner, String title ){
        initModality( Modality.APPLICATION_MODAL );
        initOwner( owner );
        initStyle( StageStyle.UTILITY );
        setTitle( title );
        stage = this;
      public void setContents( Group group, ArrayList<Button> buttons ){
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root);
        setScene(scene);
        root.setCenter( group );
        this.buttons = buttons;
        HBox buttonPane = new HBox();
        buttonPane.setSpacing(10);
        for( int i=0 ; i<buttons.size() ; i++ ){
          buttons.get(i).setOnAction( actionHandler );
        buttonPane.getChildren().setAll( buttons );
        root.setBottom( buttonPane );
      public int show( double screenX, double screenY ){
        setX( screenX ); setY( screenY );
        show();
        MyWindowEventDispatcher dispatcher =  new MyWindowEventDispatcher( stage );
        setEventDispatcher( dispatcher );
        while(true){
          event = dispatcher.dispatchEvent( event, tail );
          EventType<? extends Event> type = event.getEventType();
          if( type==WindowEvent.WINDOW_HIDDEN ){
            break;
        return( rc );
      EventHandler<ActionEvent> actionHandler = new EventHandler<ActionEvent>() {
        public void handle( ActionEvent e ){
          EventTarget src = e.getTarget();
          rc = buttons.indexOf( src );
          stage.hide();
      class MyWindowEventDispatcher extends WindowEventDispatcher {
        public MyWindowEventDispatcher( Window window ){
          super( window );
        public Event dispatchEvent( Event event, EventDispatchChain tail) {
          ModalDialog.this.event = dispatchCapturingEvent( event );
          ModalDialog.this.tail = tail;
          return( event );
    }A sample code to invoke ModalDialog
    import java.util.ArrayList;
    import javax.swing.JOptionPane;
    import javafx.application.Application;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.stage.WindowEvent;
    public class WindowEvent06 extends Application {
      Stage mainStage;
      public void start(Stage stage) throws Exception {
        Group root = new Group();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("WindowEvent06");
        mainStage = stage;
        stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
          public void handle(WindowEvent e){
            ModalDialog dialog = new ModalDialog( mainStage, "Question" );
            Button yes = new Button( "Yes" );
            Button no  = new Button( "No" );
            ArrayList<Button> buttons = new ArrayList<>();
            buttons.add(yes); buttons.add(no);
            Label msg = new Label( "Really Exit ?" );
            Group groupInDialog = new Group();
            groupInDialog.getChildren().add( msg );
            dialog.setContents( groupInDialog, buttons );
            int ans = dialog.show( 300, 300 );
            System.out.println("returned from a modal dialog");
            if( ans == 1 ){
              e.consume(); // this blocks window closing
        stage.show();
      public static void main(String[] args) {
        launch(args);
    }

    Hi,
    The logic what you follows is some what in the right direction but need to have some changes.
    What I would say is, first consume the windowClose event. Then open the dialog box and close the parent accordingly.
    So after refactoring your code.
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.stage.Modality;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle;
    public class ModalDialog extends Stage {
         Stage owner;
         Stage stage;
         BorderPane root;
      public ModalDialog( Stage owner, String title){
        root = new BorderPane();
        stage = this;
        this.owner = owner;
        initModality( Modality.APPLICATION_MODAL );
        initOwner( owner );
        initStyle( StageStyle.UTILITY );
        setTitle( title );
        setContents();
      public void setContents(){
        Scene scene = new Scene(root,150,150);
        setScene(scene);
        Group groupInDialog = new Group();
        groupInDialog.getChildren().add( new Label("Really Exit ?") );
        root.setCenter( groupInDialog );
        Button yes = new Button( "Yes" );
        yes.setOnAction(new EventHandler<ActionEvent>() {
              @Override
              public void handle(ActionEvent paramT) {
                   stage.close(); // Closing the pop up.
                   owner.close(); // Closing the parent stage also.
        Button no  = new Button( "No" );
        no.setOnAction(new EventHandler<ActionEvent>() {
              @Override
              public void handle(ActionEvent paramT) {
                   stage.close(); // Closing the pop up only
        HBox buttonPane = new HBox();
        buttonPane.setSpacing(10);
        buttonPane.getChildren().addAll(yes,no);
        root.setBottom(buttonPane);
        stage.show();
    }And the main class to check this implementation is
    import javafx.application.Application;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    import javafx.stage.WindowEvent;
    public class WindowEvent06 extends Application {
      public void start(final Stage stage) throws Exception {
        Group root = new Group();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("WindowEvent06");
        stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
          public void handle(final WindowEvent e){
             e.consume(); // Consuming the event by default.
             new ModalDialog( stage, "Question");
        stage.show();
      public static void main(String[] args) {
        launch(args);
    }I hope the above code will give you some idea what i mean. :)
    Happy Coding !!
    Regards,
    Sai Pradeep Dandem.
    Edited by: Sai Pradeep Dandem on Jan 20, 2012 4:03 AM

  • ALV in modal dialog box

    Hi,
    I have an ALV on suppose screen 3000, I have created a button in the tool bar to call another ALV, but my question is, can we display ALV in modal dialog box screen(because the requirement is to display ALV as a popup)
    So when i changed the screen type to normal screen, my alv is coming,,but when i change the screen type to modal dialog box, then no ALV is being displayed in the output. Only blank screen is displayed.
    Can you please help me.
    Thanks.

    Hello
    The problem is that you have to take into account that the ALV in the popup (or modal dialogbox) is displayed on a different screen level:
    level 0 = main screen
    level 1 = 1st popup
    level 2 = 2nd popup
    We have up to 9 screen level available.
    The following sample report ZUS_SDN_ALV_IN_POPUP is a variant of my sample report ZUS_SDN_TWO_ALV_GRIDS.
    Depending on whether you mark P_POPUP or not the second ALV grid is additionally displayed on a popup.
    *& Report  ZUS_SDN_ALV_IN_POPUP
    *& Thread: ALV in modal dialog box
    *& https:||<a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="762642"></a>
    *& Screen '0100' contains no elements.
    *& ok_code -> assigned to GD_OKCODE
    *& Flow logic:
    *  PROCESS BEFORE OUTPUT.
    *    MODULE STATUS_0100.
    *  PROCESS AFTER INPUT.
    *    MODULE USER_COMMAND_0100.
    REPORT  zus_sdn_alv_in_popup.
    TYPE-POOLS: abap.
    DATA:
      gd_okcode        TYPE ui_func,
      gd_repid         TYPE syst-repid,
    " containers and ALV grids for main screen
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_splitter      TYPE REF TO cl_gui_splitter_container,
      go_cell_top      TYPE REF TO cl_gui_container,
      go_cell_bottom   TYPE REF TO cl_gui_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid,
      go_grid2         TYPE REF TO cl_gui_alv_grid,
    " container and ALV grid for popup
      go_docking3      TYPE REF TO cl_gui_docking_container,
      go_grid3         TYPE REF TO cl_gui_alv_grid,
      gs_layout        TYPE lvc_s_layo.
    DATA:
      gt_knb1          TYPE STANDARD TABLE OF knb1,
      gt_knvv          TYPE STANDARD TABLE OF knvv.
    PARAMETERS:
      p_popup AS CHECKBOX DEFAULT ' '.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING
              e_row
              e_column
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_double_click.
    *   define local data
        DATA:
          ls_knb1      TYPE knb1.
        CHECK ( sender = go_grid1 ).
        READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
        CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
        IF ( p_popup = abap_true ).
          CALL METHOD cl_gui_cfw=>set_new_ok_code
            EXPORTING
              new_code = 'POPUP'
    *        IMPORTING
    *          rc       =
        ELSE.
    *     Triggers PAI of the dynpro with the specified ok-code
    *  *    CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).  " not on 4.6c
          CALL METHOD cl_gui_cfw=>set_new_ok_code
            EXPORTING
              new_code = 'DETAIL'
    *        IMPORTING
    *          rc       =
        ENDIF.
      ENDMETHOD.                    "handle_double_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
    " Select data
      SELECT        * FROM  knb1 INTO TABLE gt_knb1
             WHERE  bukrs  = '1000'.
      PERFORM init_controls.
    * Display data
      gs_layout-grid_title = 'Customers'.
      CALL METHOD go_grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNB1'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = gt_knb1
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      gs_layout-grid_title = 'Customers Details (Sales Areas)'.
      CALL METHOD go_grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNVV'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = gt_knvv  " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      gs_layout-grid_title = 'Customers Details (Sales Areas)'.
      CALL METHOD go_grid3->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNVV'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = gt_knvv  " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Link the docking container to the target dynpro
      gd_repid = syst-repid.
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = gd_repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Link the docking container to the popup
      gd_repid = syst-repid.
      CALL METHOD go_docking3->link
        EXPORTING
          repid                       = gd_repid
          dynnr                       = '0200'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * NOTE: dynpro does not contain any elements
      CALL SCREEN '0100'.
    * Flow logic of dynpro (does not contain any dynpro elements):
    *PROCESS BEFORE OUTPUT.
    *  MODULE STATUS_0100.
    *PROCESS AFTER INPUT.
    *  MODULE USER_COMMAND_0100.
    END-OF-SELECTION.
    *&      Form  INIT_CONTROLS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM init_controls .
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent = cl_gui_container=>screen0  " main screen -> level 0 !!!
          ratio  = 90
        EXCEPTIONS
          OTHERS = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Create splitter container
      CREATE OBJECT go_splitter
        EXPORTING
          parent            = go_docking
          rows              = 2
          columns           = 1
    *      NO_AUTODEF_PROGID_DYNNR =
    *      NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Get cell container
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = go_cell_top.
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 2
          column    = 1
        RECEIVING
          container = go_cell_bottom.
    * Create ALV grids
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent = go_cell_top
        EXCEPTIONS
          OTHERS   = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Set event handler
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.
      CREATE OBJECT go_grid2
        EXPORTING
          i_parent = go_cell_bottom
        EXCEPTIONS
          OTHERS   = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      " Create container and grid for popup.
    * Create docking container
      CREATE OBJECT go_docking3
        EXPORTING
          parent = cl_gui_container=>screen1 " !!! popup !!!
          ratio  = 90
        EXCEPTIONS
          OTHERS = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      " NOTE: Starting from a main dynpro (screen level 0) the first popup
      "       (or modal dialogbox) is on level 1 !!!
      " Using cl_gui_container=>screen0 fails to display ALV grid.
      CREATE OBJECT go_grid3
        EXPORTING
          i_parent = go_docking3
        EXCEPTIONS
          OTHERS   = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " INIT_CONTROLS
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.  " contains push button "DETAIL"
    *  SET TITLEBAR 'xxx'.
    * Refresh display of detail ALV list
      CALL METHOD go_grid2->refresh_table_display
    *    EXPORTING
    *      IS_STABLE      =
    *      I_SOFT_REFRESH =
        EXCEPTIONS
          OTHERS         = 2.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE syst-dynnr.
        WHEN '0100'.
          CASE gd_okcode.
            WHEN 'BACK' OR
                 'END'  OR
                 'CANC'.
              SET SCREEN 0. LEAVE SCREEN.
    *   User has pushed button "Display Details"
            WHEN 'DETAIL'.
              PERFORM entry_show_details.
            WHEN 'POPUP'.
              PERFORM entry_show_details.
              go_grid3->refresh_table_display( ). " required
              CALL SCREEN '0200' STARTING AT 5 5
                                 ENDING   AT 150 30.
            WHEN OTHERS.
          ENDCASE.
        WHEN '0200'.
          set screen 100. leave screen.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  ENTRY_SHOW_DETAILS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM entry_show_details .
    * define local data
      DATA:
        ld_row      TYPE i,
        ls_knb1     TYPE knb1.
      CALL METHOD go_grid1->get_current_cell
        IMPORTING
          e_row = ld_row.
      READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row.
      CHECK ( syst-subrc = 0 ).
      SELECT        * FROM  knvv INTO TABLE gt_knvv
             WHERE  kunnr  = ls_knb1-kunnr.
    ENDFORM.                    " ENTRY_SHOW_DETAILS
    Regards
      Uwe

  • How to create modal dialog to suspend menu activity until process completes

    I have a Swing application with several tabs, buttons, and menu items.
    When the user pushes some of the buttons, a background process is kicked off that may take some time to complete.
    When the process is finished, I get notification from a socket that the process has completed.
    I then display a dialog that notifies the user that the process has completed.
    All this is in place.
    What I need to do is to block the user from pushing any other buttons, selecting tabs or menu items while the process is in progress.
    My thought was to display a modal dialog with a message and no buttons to remove it,
    and then have the application dispose the dialog when I get the completion response.
    Is there a way to do this with a JOptionPane or some variant or do I need to create a modal dialog from scratch?
    Any suggestions?

    I was playing around with this a bit and I think it can be done.
    In the main class of my application, I have a variable
    public JFrame mainFrame;
    mainFrame = this.getFrame():
    In the page where I want to disable the application, I have the following:
    parent.mainFrame.setEnabled(false);
    (parent is a reference to the main class)
    When I get a response back from the socket, I can set
    parent.mainFrame.setEnabled(true);
    This seems to do what I want, but the fly in the ointment is that it disables the entire application.
    If I don't get a response, then the application is hung.
    Can't use the "X" button to close the application.
    I think I can work on some refinements from the clues given to make it work.
    Thanks for the feedback.

  • Clicking a frame in the taskbar that has an open modal dialog

    hi guys,
    ive written a small application which openes several dialogs. since i need to pass it to less experienced users who dont know how to use alt+tab (on windows) i have a question:
    if there is an open modal dialog with my frame as owner and it isnt activated / on top of the screen a click onto the taskbar icon (the frame) should bring up the dialog with the frame in the background.
    testing this results in a behaviour i didnt expect - not the modal dialog with the frame in the background pops up but the frame without showing up the dialog.
    since dialogs dont get an entry in the taskbar the 0815-user doesnt know how to get back the dialog. and even worse - he cant do anything anymore (modal dialog..).
    how can i fix that problem?
    thanks in advance

    lol
    got the problem
    i added the owner of the dialog - but in a different class ;)
    my test case was still null

  • Can't have multiple modal dialogs?  What am I doing wrong?

    The following applet is a VERY stripped down version of what I am writing. I have an applet which creates modal dialog in which a user will enter data, then if the user tries to close without saving, I pop up another modal dialog to ask the user to save. Everything is fine that far, then, when the user dismisses that dialog, for example (with Cancel) or pressing the X, things look fine, it goes back to the first modal dialog, but that dialog is no longer modal! I can access the underlying applet. Here is a VERY stripped down version. What am I doing wrong? Help! Thanks!
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.lang.*;
    import java.net.*;
    import javax.help.*;
    import javax.swing.*;
    import java.util.*;
    public class SherlockApplet extends JApplet
         public void init()
         // get root frame of applet
    Component component = this;
    while (component.getParent() != null)
    component = component.getParent();
    Frame appletFrame = (Frame) component;
    // create a modal dialog with the root frame as the parent
    JDialog firstModalDialog = new JDialog(appletFrame);
         firstModalDialog.setModal(true);
         firstModalDialog.setSize(200, 200);
         // create another modal dialog with the first dialog as the parent
         final JDialog secondModalDialog = new JDialog(firstModalDialog);
         secondModalDialog.setModal(true);
         secondModalDialog.setSize(100, 100);
         // add a listener to pop up the second modal dialog when we try to close the first
         firstModalDialog.addWindowListener(
    new WindowAdapter()
    public void windowClosing(WindowEvent e)
    secondModalDialog.show();
    // make sure not to close the first dialog if the user clicks the X
    firstModalDialog.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
         // show the first dialog
         firstModalDialog.show();
    }

    Good call dchsw, I tried 1.4.1_01 jre and it worked. If you run it with 1.3.0_01 jre you will see my problem. The problem for us is, we are stuck with 1.3.0_01 for our next release at least, due to Sun's decision to change event handling for java 1.4 jre and not make it backward compatible. I might have to hack my way around this one. Any other suggestions?
    Thanks

  • Maximize button in a modal dialog

    Dear All,
         I have requirement. I want to show a maximize button in a modal dialog which has the same maximizing functionality of a frame. I find the JDialog which is a secondary window and doesn't have API to add/remove buttons directly to the title bar as in JInternalFrame. I show a table in a popup modal dialog. But when the no of columns is more, the user might find difficult to traverse the table. Instead if the maximize button is there he can maximize the dialog to see all the columns in one shot. So, what all i need is a modal dialog with a maximize button in the title bar. This is quite urgent!. Thanks for any thoughts, ideas or code snippets.
    wbr,
    Srinivasan Samivelu

    Hi Srinivasan,
    Have you got any solution for this.
    If so,please let me know.I am facing similar problem.
    Thanks in advance

  • [solved] Gnome 3.14.2 Modal dialogs not working

    Hi,
    updated today and found out that the modal password prompts in Gnome 3 do not work anymore. Does anybody know anything about this?
    I´m experiencing following behaviour:
    Whenever a gnome modal dialog with an input field appears the dialog will freeze after submitting the data. The only action left to click is the cancel action (or the escape key) which of course also cancels the data submission and also cancels the data submission the process.
    I would love to debug this, unfortunately Google hasn´t provided anything useful yet...
    Last edited by justforgetme (2015-01-10 15:21:58)

    Ok, so apparently the Modal dialog not working was based on gdk-pixbuf2 dhaving wrong caches or something.
    When consulting journalctl about gnome in general I discovered that my system had lost the ability to comprehend the svg format. One ddg query later i was  here again just in another topic viewtopic.php?pid=1491839

  • How to display non modal dialog box in a Dll call from TestStand implemented in visual c

    Dear Jason F.
    Applications Engineer
    National Instruments
    Hello
    I did the same way you told me
    the non modal dialog appeared and
    system hangs and
    giving the error message
    ""SeqEdit.exe-Application Error
    The instruction at �0x047fc5b0� referenced memory at �0x047fc5b0�. The memory could not be �read� ""
    please solve my problem
    and thanks for yours early response
    you can email me at
    [email protected]

    Hi Mkehret,
    Does your dialog have ActiveX controls on it? If your DLL dialog uses ActiveX controls and is not programmed in a certain manner it can hang because of a conflict in the threading model used by the TestStand Engine that is calling into your DLL and the model that is required by the MFC ActiveX Container. If you are using ActiveX controls in your dialog, you need to make special considerations for the threading model MFC dialogs that use ActiveX controls need in order to work properly. The example under \Examples\MFCActiveXContainerDlg illustrates how to appropriately handle this situation as well as explaining why it is necessary.
    Note: The above example displays the dialog as modal, but this is irrelevant to the problem I am describing.
    Again for information on properly creating a dialog class object and displaying it as non-modal refer to the information on MSDN that I referred you to in this post:
    http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=506500000008000000E98A0000&USEARCHCONTEXT_CATEGORY_0=_8_&USEARCHCONTEXT_CATEGORY_S=0&UCATEGORY_0=_8_&UCATEGORY_S=0
    If your dialog does not use ActiveX controls or after trying the programming method illustrated in the "MFCActiveXContainerDlg" example TestStand still hangs when calling your DLL, try calling your DLL from another environment just to make sure whether the DLL works at all. If the DLL works properly when called by another environment (e.g. VB, VC++, LabVIEW, or CVI), please submit a MINIMAL and REPRODUCEABLE example source project for your DLL for us to look at (please exclude all unnecessary code not required to reproduce the specific problem of displaying the dialog, and include all files necessary to build your dll with any
    specific instructions needed to do so).
    Jason F.
    Applications Engineer
    National Instruments
    www.ni.com/ask

  • Module Pool - Error message on a Modal Dialog screen with input

    Hello All,
    I have a modal dialog screen which is called on F4 help of a input field. This dialog screen has radio buttons on it to select. On selection, we check if the user is authorized to that option. If not, raise and error message with command MESSAGE msgid.....
    When the error message pops-up and when clicked ok on it, the radio buttons on the modal dialog screen gets disabled. I want to have the modal dialog box to be able to accept the new radio button as input.
    Can anyone please suggest.
    Thanks,
    Smita

    Put all of your Radio buttons in the CHAIN ... ENDCHAIN with one module.
    CHAIN.
        FIELD rb1.
        FIELD rb2.
        FIELD rb3.
        MODULE check_chain ON CHAIN-REQUEST.   "<< implement logic in check_Chain
      ENDCHAIN.
    If you want, you can even disable the options before displaying the screen. Do all necessary checks in the PBO and based on that disable the options.
    Regards,
    Naimesh Patel

  • ActiveX controls disappear when VI is loaded in a Sub-Panel with Start Modal Dialog usage

    Hi,
    I have a subpanel in a VI (VI1) in which another VI (VI2) is loaded. VI1 is used as a module for an Action step in TestStand. VI2 has ActiveX controls like ExpressionEdit and Adobe PDF reader etc. VI1 loads VI2 in a sub-panel and calls Start Modal Dialog.vi. I have set 'Show front panel when called' to true for VI1 so that the VI pops up when the sequence is run. When the sequence runs and when the Start Modal Dialog VI is called from VI1, all ActiveX controls in VI2 (loaded in the sub-panel) disappears. Here is the screenshot of the frontpanel of VI1 when the sequence is run:
    This problem occurs in TestStand 4.2.1, TestStand 2010 and TestStand 2010 SP1 (as far as I have tested. May occur in older versions too). In the attached file, VI1 is 'ExprEdit Test.vi' and VI2 is 'SubpanelLoad.vi'. The attached sequence is developed in TestStand 2010 SP1.
    How can this issue be solved?
    Thank you,
    Ganesh Kumar
    Solved!
    Go to Solution.
    Attachments:
    Subpanel Load ExpressionEdit problem.zip ‏23 KB

    Hi,
    An update on this issue: I tried changing the order of loading the VI in the SubPanel and the start modal dialog. I called start modal dialog and then loaded the VI (VI2) in the SubPanel. When I ran the sequence, the activeX controls did not disappear (I was pretty sure that the ActiveX controls in VI2 would not disappear since I am calling Start Modal Dialog before loading the VI in the Subpanel). Then I just changed the sequence of operations back to the previous order (loading the Subpanel with the VI and then calling the Start Modal Dialog). When I ran the sequence, the activeX controls where still displayed. But when I ran the sequence with the VI1 backup (that I had taken before making all these modifications) the activeX controls were not displayed. I a nutshell, I now have 2 versions whose codes are the same. But when I run the sequence with action steps for these VIs, the activeX controls disappear when the unmodified backup VI runs and does not disappear when the modified VI is run. I have attached the files that I used along with the sequence file. The details are as follows:
    ExprEdit Test (Not Working).vi - The unmodified backup VI for which the ActiveX controls disappear.
    ExprEdit Test (Working).vi - The modified VIs in which the ActiveX Controls do not disappear (But same code as ExprEdit Test (Not Working).vi).
    ExpreEdit Test.seq - The sequence file containing 2 action steps one each for theabove mentioned VIs.
    SubpanelLoad.vi - The VI that contains activeX controls and is loaded in the SubPanel.
    Note that the sequence is created in TestStand 4.2.1.
    Thank you,
    Ganesh Kumar
    Attachments:
    Subpanel Load ExpressionEdit problem.zip ‏36 KB

  • [Mac/CC 2014] modal dialogs can't be displayed

    Hi everybody,
    I have ported a plugin from CS6 to CC2014, which works fine for almost everything, except one. Modal dialogs seems not to work anymore. For example, this code:
    CAlert::InformationAlert(PMString("Hey, display me!"));
    makes InDesign freezing. More precisely, InDesign displays a while rectangle, which seems to be the modal dialog. But there is nothing more, juste this white rectangle. I can move it, but can't interact with it. As it is a modal dialog, the application refuses all further interaction, and I can't close that modal.
    I have noticed this behavior was the same with, for example, a Yes/No modal dialog. I suppose this happens on every modal dialog types.
    Is there anything that can cause a modal dialog not to be able to display correctly?
    Some pieces of informations on versions :
    OS : Mac OS 10.9.4
    InDesign : 10.1.0.71
    Thanks to anybody providing any piece of advice.
    Rémi

    Must have opened my eyes after waking up...
    I think I guessed what happens. This modal dialog is called from a model plugin, which works in CS6. I guess Adobe has removed support on anything that is UI-related in model plugin. But instead of generating an error, it makes some mess. I'll try to move the piece of code surrounding the modal dialog call to my UI plugin and see what happens.

  • Help with modal dialog returning a value to the calling page

    Greetings,
    Apex Version: 4.1.0.0.32
    What I am trying to do is to create a modal dialog that is called from a form page. The dialog will present the user with an IR report that will allow the him to select a row and return a value from that row to a field on the calling page. I have it working in Firefox, but I get an error using IE 8. I hope someone can show me why it is not working in IE.
    Here is how I am doing it:
    From the calling page:
    Created a button
         Action: Redirect to URL
         URL Target: javascript:var rc = window.showModalDialog('f?p=&APP_ID.:70:&SESSION.::&DEBUG.:::','','resizable:yes;center:yes;dialogWidth:1000px;dialogHeight:500px;');
    On the called page:
    The called page is an IR report where the query returns this as one of the columns:
    *(Note: I had to put a dot '.' in front of the onclick to get it to show in this thread. It is not there in my real code.)*
    select
    <a href="#" name="z" style="color:blue; text-decoration:underline;" .onclick="javascript:passBack(''' || LOT_NO ||''');">Select</a>' SelectThis
    , column1
    , column2
    from sometablename;This resolves the anchor to:
    <a .onclick="javascript:passBack('232158');"  href="#">Select</a>Here is the Javascript function that is called from the anchor onclick:
    function passBack(passVal1)
      opener.document.getElementById("P75_ITEM1").value = passVal1;
      close();
    }When I run this in Firefox, it works as expected. I click on the button on the parent page. The modal dialog is opened and the IR report is displayed. I click on one of the links in the report and it returns the correct value back to the calling page and closes the modal dialog.
    When I run it in IE8, it fails. I click on the button on the parent page. The modal dialog is opened and the IR report is displayed. I click on one of the links in the report and I get this error: “opener.document is null or not an object”.
    I hope that is clear and that someone can help.
    Thanks
    Larry

    A quick google search determines that window.opener doesn't exists when using window.showModalDialog
    Suggestions range from using window.open instead of window.showModalDialog to using dialogArguments instead of window.opener
    Try the following:
    In the parent page define a getPopupValue() function:
    function getPopupValue(){
       var dr =  window.showModalDialog('f?p=&APP_ID.:70:&SESSION.::&DEBUG.:::','','resizable:yes;center:yes;dialogWidth:1000px;dialogHeight:500px;');
        if ( (dr != undefined) && (dr != '') && (dr != false) ){
         $x("P75_ITEM1").value = dr;
    }Change the button url to call the function:
    javascript:getPopupValue(); On the popup page change the passback function to:
    function passBack(passVal1)
      returnValue = passVal1;
      close();
    }

Maybe you are looking for

  • Can Time Capsule hard drive be accessed with Disk Utility? I'm having issues...

    How does one mount , inspect , verify , and possibly repair a Time Capsule hard drive  with Disk Utility ? My 500Gb 1st gen Time Capsule  ( used wireless with Airport)  has quit backing up new data . ( iMac Core2Duo, Snow Leopard) .  TC  says it need

  • [SOLVED] Configure keyboard with HAL

    Hi I'm using HAL with the new xorg-server 1.6 and since the upgrade, the keyboard delay before starting to repeat a keypress has become longer.  I'm not sure what caused this, but now I'd like to know how I configure this with HAL. I configured the m

  • ITunes 8 Missing Features In Advanced Preferences!?

    After installing iTunes 8 I noticed that I can no longer "see" the "General" "Importing" and "Burning" tabs usually listed under the "Advanced" tab!!?? If you have noticed the same thing, were you able to find a fix? T.Y. M

  • Change the list values

    hi friends,      i generated a list and now i need to change the values in the list, and then this changes should be seen in database, could anyone could help me

  • Bluetooth is not available

    Did latest OSX update.  Nothing major, just a camera caompatability update but my Bluetooth quit working after the update.  For awhile it was just not available but after a couple of restarts it was there but would not recognize any of my devices.