when i called "GUI_ExecDialogBox"before , GUI_StroreKeyMsg will create a WM_KEY in WM_CALLBACK???why?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • when i called "GUI_ExecDialogBox"before , GUI_StroreKeyMsg will create a WM_KEY in WM_CALLBACK???why?


      when i called "GUI_ExecDialogBox"before , i called GUI_StroreKeyMsg or GUI_SendKeyMsg , and whether or not I called GUI_GetKey(), this action will create a WM_KEY in _cbCallback ???why??? plz , help me thx~~

      i think it may be a bug
    • Hi,

      GUI_StoreKeyMsg() adds WM_KEY messages to a buffer. Without any windows, the buffered messages cannot be sent anywhere.

      As soon as you create the dialog and GUI_Exec() is called (GUI_ExecDialogBox() calls GUI_Exec()), the stored key message gets sent to the window that has input focus which is the dialog window.

      Best regards,
      Florian
      Please read the forum rules before posting.

      Keep in mind, this is *not* a support forum.
      Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
      Should you be entitled to support you can contact us via our support system: segger.com/ticket/

      Or you can contact us via e-mail.
    • but i don't want to go to the WM_KEY in _cbCallback when i called GUI_ExecDialogBox() at first, how can i avoid ? because GUI_StoreKeyMsg() or GUI_SendKeyMsg() i used to Physical keys, The dialog box will pop up and disappear right away, thank u for your solution

      The post was edited 1 time, last by xiongda ().

    • Hi,

      If the dialog window has the focus, you will always land in WM_KEY, when a key message has been stored. So to avoid landing in WM_KEY, no key message should be stored. If there's no other way, you can add a guard to the WM_KEY case to control when the key is handled.

      Best regards,
      Florian
      Please read the forum rules before posting.

      Keep in mind, this is *not* a support forum.
      Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
      Should you be entitled to support you can contact us via our support system: segger.com/ticket/

      Or you can contact us via e-mail.