Problem mit Popup-Fenstern
-
Hi,
wenn ich ein Popup-Fenster erstelle und dann draufklicke, kann ich ein paar Sekunden nicht mehr klicken bzw. beim Klicken tut sich nichts. Bei normalen Fenstern ist das nicht so.Hier ist mal der Code:
#undef UNICODE #define _WIN32_WINNT 0x0500 #include <windows.h> // Variablen HWND mainwindow; // MessageHandler LRESULT _stdcall MessageHandler( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_CLOSE: exit( 0 ); break; } return DefWindowProc( hWnd, uMsg, wParam, lParam ); } int CreateMainWindow( ) { HINSTANCE instance = GetModuleHandle( 0 ); // Window-Klasse WNDCLASSEX wndClass = { 0 }; wndClass.cbSize = sizeof( wndClass ); wndClass.style = 0; wndClass.lpfnWndProc = MessageHandler; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = instance; wndClass.hIcon = 0; wndClass.hCursor = LoadCursor( 0, IDC_ARROW ); wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); wndClass.lpszMenuName = 0; wndClass.lpszClassName = "MeineFensterKlasse"; wndClass.hIconSm = 0; RegisterClassEx( &wndClass ); // Window unsigned long style = WS_POPUP; RECT area; SystemParametersInfo( SPI_GETWORKAREA, 0, &area, 0 ); mainwindow = CreateWindowEx( WS_EX_LAYERED, "MeineFensterKlasse", "MeinFenster", style, area.right-280-20, area.bottom-300-20, 280, 300, 0, 0, instance, 0 ); SetLayeredWindowAttributes( mainwindow, 0, 192, LWA_ALPHA ); ShowWindow( mainwindow, true ); return 0; } // Main-Funktion int _stdcall WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { // Hauptfenster erstellen CreateMainWindow( ); // Hauptschleife MSG msg = { 0 }; while( msg.message != WM_QUIT ) { MsgWaitForMultipleObjects( 0, 0, 0, INFINITE, QS_ALLINPUT ); while( PeekMessage( &msg, mainwindow, 0, 0, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } return 0; }
-
Wie sollen wir wissen, was in Deinem Popup vorgeht, wenn Du nur den Code für das Hauptfenster postest?
-
Popupfenster = Hauptfenster
Ich habe Popupfenster geschrieben, weil es mit WS_POPUP erstellt wurde.
-
(OT: Hmm, hat MsgWaitForMultipleObjects()+PeekMessage() irgendwelche Vorteile gegenüber einfach GetMessage() ?)
-
@geeky, jetzt wo du's sagst ... eigentlich nicht. Zumindest sind mir noch keine aufgefallen.