Multithreading & CView*
-
Hi!
Ich habe folgendes Problem. Hab ein Multithreading Programm. Bekomm im Debug Modus immer einen Assert. Ist zwar net so schlimm, er störrt aber.UINT SizeCheckThreadProc(LPVOID pParam) { ... CMainFrame *pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd; pMain->GetLogView()->GetListCtrl().DeleteAllItems(); }
Komme dann zu folgenden Assert
void CWnd::AssertValid() const { ... }
Dort werde ich Afgefordert, das Fensterhandle per HWND zu übergeben, aber des funtzt net ganz.
Zwar hab ich jetzt in der SizeCheckThreadProc(LPVOID pParam) den pParam, dem bei Threadstart folgendes übergeben wird:
[code type="C++"]
AfxBeginThread(SizeCheckThreadProc, GetSafeHwnd(),
THREAD_PRIORITY_NORMAL);[/cpp]Nur wenn ich jetzt
CWnd *pWnd = NULL; pWnd->GetFromHandel((HWND) pParam);
schreibe, kennt er natürlich meinen LogView nicht.
Was muss ich in SizeCheckThreadProc reinschreiben, damit ich auf meine Liste zuugreifen kann? Oder Wie kann ich das HWND mitübergeben?Danke im voraus!!
mfg mike
PS: Es Handelt sich um ein Splitt Window. Mit CMainFrame::GetLogView bekomme ich einen CView* Pointer.[ Dieser Beitrag wurde am 01.01.2003 um 14:51 Uhr von *mike* editiert. ]
[ Dieser Beitrag wurde am 01.01.2003 um 14:52 Uhr von *mike* editiert. ]
-
In dem Parameter pParam kannst du alles mitgeben was du willst (z.B. eine Struktur). Dort drin stehen dann die Sachen die du brauchst...
[ Dieser Beitrag wurde am 02.01.2003 um 16:47 Uhr von MaSTaH editiert. ]
-
Original erstellt von MaSTaH:
In dem Parameter pParam kannst du alles mitgeben was du willst (z.B. eine Struktur). Dort drin stehen dann die Sachen die du brauchst...Alles, nur keine CWnd Objekte.