Ich habe eine Anwendung, welche ein einfaches Windows Fenster erzeugt.
Danach starte ich einen Thread und übergebe diesem als Parameter das Fenster-Handle.
Soweit funktioniert auch alles ganz gut, das übergebene Fenster-Handle hat innerhalb des Threads den richtigen Wert.
Hier ein bisschen Code zur besseren Verständnis:
Code: Alles auswählen
void CWndThread::Execute(void *Parameter)
{
HWND *hWnd = (HWND*)Parameter;
MSG msg;
while(true)
{
while (GetMessage(&msg, *hWnd , 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
Manchmal lässt es sich Ausführen (Release & Debug) und dann wieder nicht.
Wenn es mal nicht funktioniert meldet sich der Debugger mit einer Zugriffsverletzung.
Meine erste Idee war daraufhin das Fenster-Handle nicht zu übergeben und folgendermaßen bekannt zu machen:
Code: Alles auswählen
extern HWND g_hWnd;
Code: Alles auswählen
void CWndThread::Execute(void *Parameter)
{
MSG msg;
while(true)
{
while (GetMessage(&msg, g_hWnd , 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
Kann mir eventuel jemand das Verhalten erklären bzw einen Tip geben wie ich es über die Parameterübergabe hinbekommen könnte ?
Danke