?
Hilft mir leider nicht brauch wirklich die Hinstance einer bestimmten funktion;
Das Problem ist das die Funktion keine Globale funktion ist sondern eine Methode einer Klasse. make_winapp ist static! Oder kann mir jemand sagen wie ich mehrer Wnds RegisterClassEx(&windowClass)) registrieren kann? Ich meine pro Fenster ein Thread wären
void CAVLTree_OpenGl::_init_window(){
m_hnd = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)make_winapp, this, 0, NULL);
}
DWORD WINAPI CAVLTree_OpenGl::make_winapp(LPVOID dummy) {
HINSTANCE hi = 0;
char string[] = "Avl Tree OpenGl Ausgabe";
CAVLTree_OpenGl * pthis = ((CAVLTree_OpenGl*)dummy);
pthis->WinMain(hi, main_HInc, string, SW_MAXIMIZE);
CloseHandle(pthis->m_hnd);
pthis->m_hnd = NULL;
return 0;
}
WPARAM WINAPI CAVLTree_OpenGl::WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
WNDCLASSEX windowClass; // Variable meiner Wnd Klasse
MSG msg; // message
bool done = false; // flag fr message loop(wenn app fertig(WM_QUIT)
// MEMORY_BASIC_INFORMATION mbi;
// VirtualQuery(this->WinMain,&mbi,sizeof(mbi));//Dss geht Nicht
// hInstance = (HINSTANCE)mbi.AllocationBase;
/* ATTRIBUTE DER windowClass */
windowClass.cbSize = sizeof(WNDCLASSEX); // gr�se der WND struktur
windowClass.style = CS_VREDRAW | CS_HREDRAW; // Neuzeichnen
windowClass.lpfnWndProc = (WNDPROC)WndProc; // Funktions Zeiger definieren
windowClass.cbClsExtra = 0; // keine Extra Bytes
windowClass.cbWndExtra = 0;
windowClass.hInstance = hInstance; // hInstance dieser Applikation denken!!!!!!
windowClass.hIcon = LoadIcon(0, IDI_APPLICATION);// standard icon
windowClass.hCursor = LoadCursor(0, IDC_ARROW); // standard WND Cursor laden
windowClass.hbrBackground = 0; // kein Hintergrund brush
windowClass.lpszMenuName = 0; // kein Men
windowClass.lpszClassName = "Meine Klasse!"; // Name der WND Klasse
windowClass.hIconSm = LoadIcon(0, IDI_WINLOGO); // kleines icon
// registriere diese Klasse (gib adr. an windows)
// ACHTUNG nur fir WNDCLASSEX nicht fr die alte WNDCLASS
if (!RegisterClassEx(&windowClass))
return 0; //BEKOMME beim erstellen eines 2 Fensters 0 Zurück!!!!
/* ERSTELLEN DES FENSTERS */
m_hwnd = CreateWindowEx(NULL,
"Meine Klasse!",
"Avl Baum Opengl Ausgabe",
WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
100, 100, // xy Koordinaten
400, 400, // h�e, breite
NULL, // Anhaltspunkt to parent
NULL, // Anhaltspunkt zum menue
hInstance, // applikations instance
NULL); // keine extra parameter
/* wurde Fenster ohne Probleme erstellt */
if (!m_hwnd)
return 0;
done = false;
/* Message Loop und rendering */
while (GetMessage(&msg,m_hwnd,0,0)) {
TranslateMessage(&msg); // bersetze msg
DispatchMessage(&msg); // msg abfertigen und Windows schicke
render();
}
return msg.wParam;
}