G
threadhandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)thread_DXRENDER(NULL,hDlg),NULL,0,&threadid);
Ich bin jetzt etwas verwirrt, wie du CreateThread aufrufst. Denn normalerweise sieht das etwas anders aus.
Keine Ahnung was du in thread_DXRENDER machst und was du da zurückgibst. Aber normalerweise gibt man einfach nur die Adresse der ThreadProc an, und ruft diese nicht auf.
ZB
DWORD WINAPI MyThreadProc(LPVOID lpParameter)
{
// bla
}
HANDLE threadhandle = CreateThread(NULL, 0, &MyThreadProc, parameter, 0, &threadid);
Und parameter ist dann das Argument, was du in deiner ThreadProc mittels lpParameter ansprechen kannst. Du solltest also dafür sorgen, dass der Zeiger solange gültig bleibt, solange der Thread läuft. Kannst natürlich auch einfach einen Nullzeiger übergeben, sofern du den Parameter nicht brauchst.