Avatar billede rrm Nybegynder
08. oktober 2008 - 22:35 Der er 1 kommentar

MessageLoop + PeekMessage + lukning af form

Hej

Jeg har en c++ dll, der kommunikere til en C# form via beskeder (PostMessageThread og PeekMessage). Mit problem, hvor jeg skal placere koden der rydere op i besked køen, når formen lukkes.

Jeg har forsøgt med at placere kaldet af c++ funktionen i FormClosing og FormClosed. Koden til min form er som følgende:

public frmMain()
    {
      InitializeComponent();

      base.FormClosing += new FormClosingEventHandler(frmMain_FormClosed);

      if (wpGrabDll.WPGrabInitDll() == 0)
      {
...
      }

      int t = wpGrabDll.WPGrabSubmitJob("http://localhost/index.html", null); // sender nogle beskeder til besked køen via PostThreadMessage(ownerThreadId, WM_WPGRAB_EVT, (WPARAM) structPointer, (LPARAM) convertState(status)), hvor ownerThreadId = GetCurrentThreadId(); sættes i WPGrabInitDll()

    }

FormClosing ser således ud:
private void frmMain_FormClosed(Object sender, FormClosingEventArgs e)
    {
      if (Application.MessageLoop)
      {
        MessageBox.Show("fjghjkfshg");
      }
      wpGrabDll.WPGrabCleanupDll();
    }

Besked boksen bliver vist, men
while(PeekMessage(&msg, (HWND) -1, WM_WPGRAB_EVT, WM_WPGRAB_EVT, PM_REMOVE) != 0), returnere ingen beskeder.

Hvis jeg placere WPGrabCleanupDll umildbart efter WPGrabInitDll(), så virker det fint, så de må værre noget med hvornår besked køen lukkes!?!

Nogen ideer?
Avatar billede rrm Nybegynder
08. oktober 2008 - 22:38 #1
Det skal nævnes at der bliver postet ca 3 beskeder via wpGrabDll.WPGrabSubmitJob("http://localhost/index.html", null) funktionen... Disse bliver sendt asynkront...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester