Empfängt die Hook Funktion für GetOpenFileName() auch WM_DESTROY ???



  • Problem:
    Ich benutze zur Dateiauswahl die Funktion GetOpenFileName(). Die Dialog Box habe ich ein wenig verändert in dem ich ein Template (lpTemplateName) hinzugefügt habe, auf dem ein weiterer Button liegt. Für die Ereignisbehandlung habe ich eine Hookfunktion in lpfnHook angegeben. Das alles funktioniert soweit.

    Aber ich allokiere innerhalb der Hook Funktion Resourcen und diese möchte innerhalb der Funktion wieder freigeben (Frage der Sauberkeit). Also suche ich nach einem Ereignis welche beim Beenden der Dialog Box an die Hook Funktion weitergeleitet wird. Das WM_DESTROY Ereignis sieht zwar schön aus, funktioniert zwar auch, aber ich weis nicht ob man das machen darf da in der Doku drinsteht dass das Ereignis nur durch die WNDPROC empfangen wird. 😕

    Ist es erlaubt das WM_DESTROY Ereignis in einer Hook Funktion abzufragen ?

    UINT_PTR CALLBACK LoadDialogHookProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
      static char* Res;
    
      if (uMsg == WM_INITDIALOG)
      {
        ...
        Res = malloc(256);
        return 0;
      }
      else if (uMsg == WM_DESTROY)
      {
        free(Res);
        return 0;
      }
    }
    

  • Mod

    Wenn Du es bekommst ist es erlaubt...


Anmelden zum Antworten