[MFC] Modeless dialog krijgt assertion...

Pagina: 1
Acties:

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Hoi,

Ik ben bezig met een applicatie waar een tweetal modeless dialogs moeten worden gemaakt. De eerste maak ik in de InitInstance functie van m'n app, dat werkt prima. Vervolgens wil ik een modeless dialog creëeren vanuit een thread, dat doe ik als volgt:
code:
1
if( !CDebuggerDlg::IsOpen())    CDebuggerDlg::OpenDebugger( MainScript);

Dit zijn beide static functies, in OpenDebugger staat er dit:
code:
1
2
3
    m_DebuggerDlg = new CDebuggerDlg( inScriptPtr, 0L);
    m_DebuggerDlg->Create( IDD_FORMDEBUGGER, 0L);
    m_DebuggerDlg->ShowWindow( SW_SHOW);

waar m_DebuggerDlg een pointer is naar CDebuggerDlg, dit is een static member... Maar als ik dit doe, dan krijg ik een assert in wincore.cpp line 879, da's deze:
code:
1
2
    CHandleMap* pMap = afxMapHWND();
    ASSERT(pMap != NULL);

Kennelijk staat het window niet in de handlemap... als ik deze code aanroep vanuit InitInstance, dan werkt het wel :? Ik neem aan dat het iets met de thread heeft te maken, maar ik weet eigenlijk niet wat :( 'k heb al wat geprobeerd met AFX_MODULE_THREAD_STATE(), maar dat mocht ook niet baten..

Ik gebruik trouwens de OmniThread class.

-Edit-
Ik heb inmiddels de oplossing gevonden... ik heb nu een eigen CWinThread implementatie (deels dan), en deze roep ik aan vanuit de andere thread om het dialog te maken. Beetje omslachtig, maar het werkt wel :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs