Avatar billede tokelil Nybegynder
20. september 2004 - 00:37 Der er 1 løsning

Tråd problemmer ved tegning af vindue

Jeg er ved at skrive et plug-in til en media afspiller. Plug-in'et er en dll.
Plug-in'et visser hvilken sang der spilles i et popup vindue (tooltip ballon). Problemmet er at mens vinduet er fremme låser hele interfacet på afspilleren. Jeg har prøvet et løse det ved at oprette en ny tråd, hvor fra jeg opretter vinduet. Problemmet er nu at vinduet bliver vist, men tekst mv. bliver aldrig tegnet og forsvinder heller ikke igen som det skal. (Vinduet bliver automatisk lukket via en timer)
Jeg går ud fra det er pga. at vindue procedure aldrig får CPU tid, så vil hører om der er nogen der har erfaring med at løse den slags.

Jeg opretter min tråd med følgende:
  g_hThreadHandle = ::CreateThread(NULL, 0, BalloonThreadProc, 0, CREATE_SUSPENDED, &g_iThreadID);
  // Error check
  ResumeThread(g_hThreadHandle);


Mit trådloop ser ud som følger:
  while (true)
  {
    if (WAIT_OBJECT_0 == MsgWaitForMultipleObjects(1, g_hWaitEvents, false, INFINITE, QS_ALLEVENTS)) {
      bFirstRun = true;
      ResetEvent(g_hWaitEvents[0]);
    }

    if (g_bQuit)
      break;
    if (bFirstRun) {
      bFirstRun = false;

      // Lav str

      if (!pWindow->m_hWnd)
        MessageBox(hwndPlayer, _T("Error"), _T("Error!"), MB_OK);
      else {
        wndOwner.FromHandle(pWindow->m_hWnd);

        CBalloonHelp::LaunchBalloon(" Now Playing:", strOut, g_rectPos, IDI_INFORMATION,
      CBalloonHelp::unDELETE_THIS_ON_CLOSE|CBalloonHelp::unCLOSE_ON_LBUTTON_UP|CBalloonHelp::unSHOW_TOPMOST|CBalloonHelp::unCONTENT_TEXT_CENTER,
          &wndOwner, "", iTimeOut);
        }
      }
    }
  } // End loop
Avatar billede tokelil Nybegynder
22. september 2004 - 01:56 #1
Fandt selv ud af det.
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
Kurser inden for grundlæggende programmering

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