Quantcast
Channel: MicroStation Programming Forum - Recent Threads
Viewing all articles
Browse latest Browse all 4331

[CONNECT C++ U14] Issue with mdlDialog_hookItemSendUserMsg

$
0
0

Hi everyone 

In our mdlMain we have somewhere :


 SystemCallback::SetWindowsKeystrokeMessageFunction(CatchToucheClavier);

And also this following code : 

bool CatchToucheClavier(void* windowID, UInt32 messageNumber, uintptr_t wParam, intptr_t lParam, long x, long y)
{
GestionRaccourciToolsBoxGeneral((int)wParam,DIAGID_AlmBoxToolsGeneral);
}
void GestionRaccourciToolsBoxGeneral(int key, RscId dialogID)
{
 MSDialogP dialP = almDialog_find(dialogID, NULL);
  DialogItem *itemP = NULL;
  StRsc_AlmIconCmd *zmRscIconCmdP = NULL;
  AlmToolsDlgBoxRsc *zmrscP = NULL;
  UInt64 cmd;
  ULong valeur;
    if (dialogID != DIAGID_DscObjet)
    {
      int nbItem = mdlDialog_itemsGetNumberOf(dialP);

      for (int i = 0; i < nbItem; ++i)
      {
        itemP = mdlDialog_itemGetByIndex(dialP, i);
        if (itemP != NULL && itemP->type == RTYPE_IconCmd)
        {
          if ((zmRscIconCmdP = (StRsc_AlmIconCmd*)Alm::Basic::Resource_load(
            0, RSCST_AlmIconCmd, itemP->id)) != NULL)
          {
            int j = 0;
            while (zmRscIconCmdP->clavier[j] != 0)
            {
              if ((key == zmRscIconCmdP->clavier[j]))
              {
                if (itemP!=NULL && itemP->rawItemP != NULL)
                {
                  mdlDialog_hookItemSendUserMsg(itemP->rawItemP, DITEM_MESSAGE_QUEUECOMMAND, NULL);// <=Crash after 3/4 down of a key
                  Alm::Tool::Resource_free((void**)&zmRscIconCmdP);
                  break;
                }
              }
              j++;
            }
            Alm::Tool::Resource_free((void**)&zmRscIconCmdP);
          }
        }
      }
    }
}

The goal here, is to handle keyboard key press event for our dialog box DIAGID_AlmBooxToolsGeneral when it doesn't have focus.

In microstation v8i we do not need to use "SystemCallback::SetWindowsKeystrokeMessageFunction" we juste have a hook where we handle  DialogMessage DIALOG_MESSAGE_KEYSTROKE. 

But i dont know why, since connect , this way does not work anymore.

My issue is after 3 or 4 press on a key this function mdlDialog_hookItemSendUserMsg crash and i don't know why. i tried every possible value for DITEM_MESSAGE_something but it still crashing.

Do you have any idea why?

Is there an other way to handle key press for a windows who does not have focus?

Thanks for your help

Rgdts 

Arnaud


Viewing all articles
Browse latest Browse all 4331


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>