Hinstance
-
Ist es möglich eine hinstance aus einer Methode aus einer klasse zu bekommen die nicht statisch ist?
MEMORY_BASIC_INFORMATION mbi; VirtualQuery(this->NewWindow,&mbi,sizeof(mbi)); hInstance = (HINSTANCE)mbi.AllocationBase;geht nicht
thx
-
ich weis nicht genau was du machst aber so vielleicht
HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);http://msdn.microsoft.com/library/en-us/dllproc/base/getmodulehandle.asp
-
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ärenvoid 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; }