ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1305
1305
EMPFEHLEN
-
Hallo,
Ich habe eine dringende und wahrscheinlich banale Frage, zu der ich leider keine Lösung bekomme. Ich habe das Problem mal heruntergebrochen, so dass der "Profi" wohl gleich sehen wird, was die Ursache ist.
Ich habe 2 gleichwertige Fenster, wobei sich das eine schließen soll, wenn das andere geöffnet wird. In folgendem Beispiel soll sich das eine einfach schließen wenn Escape gedrückt wurde, während das andere allerdings geöffnet bleiben soll. Das bekomme ich leider einfach nicht hin. Es ist übrigens Absicht, das mit Fenstern lösen zu wollen (also keine Messagebox, oder Dialog Box)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
[SIZE=2][COLOR=#0000ff]#include[/COLOR][/SIZE][SIZE=2] <windows.h>[/SIZE] [SIZE=2]LRESULT CALLBACK WindowProcedure(HWND hwnd,UINT msg,WPARAM [/SIZE] [SIZE=2]wparam,LPARAM lparam);[/SIZE] [SIZE=2]HWND awindow;[/SIZE] [SIZE=2]HWND bwindow;[/SIZE] [SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Register(WNDCLASSEX WindowClass)[/SIZE] [SIZE=2]{[/SIZE] [SIZE=2] RECT DesktopSize;[/SIZE] [SIZE=2] GetClientRect(GetDesktopWindow(),&DesktopSize);[/SIZE] [SIZE=2] WindowClass.cbSize = [/SIZE][SIZE=2][COLOR=#0000ff]sizeof[/COLOR][/SIZE][SIZE=2](WNDCLASSEX);[/SIZE] [SIZE=2] WindowClass.style = CS_HREDRAW | CS_VREDRAW;[/SIZE] [SIZE=2] WindowClass.lpfnWndProc = WindowProcedure;[/SIZE] [SIZE=2] WindowClass.cbClsExtra = 0;[/SIZE] [SIZE=2] WindowClass.cbWndExtra = 0;[/SIZE] [SIZE=2] WindowClass.hInstance = GetModuleHandle(NULL);[/SIZE] [SIZE=2] WindowClass.hIcon = NULL;[/SIZE] [SIZE=2] WindowClass.hCursor = NULL;[/SIZE] [SIZE=2] WindowClass.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);[/SIZE] [SIZE=2] WindowClass.lpszMenuName = NULL;[/SIZE] [SIZE=2] WindowClass.lpszClassName = "ClassName";[/SIZE] [SIZE=2] WindowClass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);[/SIZE] [SIZE=2] RegisterClassEx(&WindowClass);[/SIZE] [SIZE=2]}[/SIZE] [SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=2] WINAPI WinMain( HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR Ipcmdline, [/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=2] cCmdShow)[/SIZE] [SIZE=2]{[/SIZE] [SIZE=2]MSG Message; [/SIZE] [SIZE=2]WNDCLASSEX WindowClass;[/SIZE] [SIZE=2]ZeroMemory(&WindowClass,[/SIZE][SIZE=2][COLOR=#0000ff]sizeof[/COLOR][/SIZE][SIZE=2](WNDCLASSEX));[/SIZE] [SIZE=2]Register(WindowClass);[/SIZE] [SIZE=2]awindow=CreateWindow( "ClassName",[/SIZE] [SIZE=2] "Window A",[/SIZE] [SIZE=2] WS_OVERLAPPED|WS_SYSMENU|WS_VISIBLE,[/SIZE] [SIZE=2] 200,300,[/SIZE] [SIZE=2] 200,300,[/SIZE] [SIZE=2] NULL,[/SIZE] [SIZE=2] NULL,[/SIZE] [SIZE=2] GetModuleHandle(NULL),[/SIZE] [SIZE=2] NULL);[/SIZE] [SIZE=2]bwindow=CreateWindow( "ClassName",[/SIZE][INDENT][INDENT][INDENT][INDENT][SIZE=2]"Window B",[/SIZE][/INDENT][INDENT][SIZE=2]WS_OVERLAPPED|WS_SYSMENU|WS_VISIBLE,[/SIZE][/INDENT][INDENT][SIZE=2]500,300,[/SIZE][/INDENT][INDENT][SIZE=2]200,300,[/SIZE][/INDENT][INDENT][SIZE=2]NULL,[/SIZE][/INDENT][INDENT][SIZE=2]NULL,[/SIZE][/INDENT][INDENT][SIZE=2]GetModuleHandle(NULL),[/SIZE][/INDENT][INDENT][SIZE=2]NULL);[/SIZE][/INDENT] [/INDENT][/INDENT][/INDENT][SIZE=2]ZeroMemory(&Message,[/SIZE][SIZE=2][COLOR=#0000ff]sizeof[/COLOR][/SIZE][SIZE=2](MSG));[/SIZE] [SIZE=2][COLOR=#0000ff]while[/COLOR][/SIZE][SIZE=2](Message.message!=WM_QUIT) [/SIZE] [SIZE=2]{[/SIZE][INDENT][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][SIZE=2](PeekMessage(&Message,NULL,0U,0U,PM_REMOVE))[/SIZE][INDENT][SIZE=2]{[/SIZE][/INDENT][INDENT][SIZE=2]TranslateMessage(&Message); [/SIZE][/INDENT][INDENT][SIZE=2]DispatchMessage(&Message); [/SIZE][/INDENT][INDENT][SIZE=2]}[/SIZE][/INDENT][SIZE=2]}[/SIZE] [/INDENT][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2] 0;[/SIZE] [SIZE=2]}[/SIZE] [SIZE=2]LRESULT CALLBACK WindowProcedure(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)[/SIZE] [SIZE=2]{[/SIZE] [SIZE=2][COLOR=#0000ff]switch[/COLOR][/SIZE][SIZE=2](msg)[/SIZE] [SIZE=2]{[/SIZE][INDENT][SIZE=2][COLOR=#0000ff]case[/COLOR][/SIZE][SIZE=2] WM_KEYDOWN:[/SIZE][/INDENT][INDENT][SIZE=2]{[/SIZE][/INDENT][INDENT][INDENT][SIZE=2][COLOR=#0000ff]switch[/COLOR][/SIZE][SIZE=2](wparam)[/SIZE][/INDENT][INDENT][SIZE=2]{[/SIZE][/INDENT][INDENT][SIZE=2][COLOR=#0000ff]case[/COLOR][/SIZE][SIZE=2] VK_ESCAPE: [/SIZE][/INDENT][INDENT][SIZE=2]{[/SIZE][/INDENT][INDENT][INDENT][SIZE=2]DestroyWindow(bwindow);[/SIZE][/INDENT][INDENT][SIZE=2][COLOR=#0000ff]break[/COLOR][/SIZE][SIZE=2];[/SIZE][/INDENT][/INDENT][INDENT][SIZE=2]}[/SIZE][/INDENT][INDENT][SIZE=2]}[/SIZE][/INDENT][INDENT][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2] 0;[/SIZE][/INDENT][/INDENT][INDENT][SIZE=2]}[/SIZE][/INDENT][INDENT][SIZE=2][COLOR=#0000ff]case[/COLOR][/SIZE][SIZE=2] WM_DESTROY:[/SIZE][/INDENT][INDENT][SIZE=2]{[/SIZE][/INDENT][INDENT][INDENT][SIZE=2]PostQuitMessage(0);[/SIZE][/INDENT][INDENT][SIZE=2][COLOR=#0000ff]break[/COLOR][/SIZE][SIZE=2];[/SIZE][/INDENT][/INDENT][INDENT][SIZE=2]}[/SIZE][/INDENT][SIZE=2]}[/SIZE] [SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2] DefWindowProc(hwnd,msg,wparam,lparam);[/SIZE] [SIZE=2]}[/SIZE]
Tut mir leid, falls ich mich hier irgendwo völlig in die Nesseln gesetzt habe aber ich hoffe es kann mir jemand weiterhelfen.
Gruß
Haribald
-
Du könntest das einzig richtige tun: Den beiden Fenster zwei verschiedene Window-Procs spendieren!
Wenn es aber so laufen soll, kannst du bei VK_ESCAPE natürlich prüfen, ob das HWND das gewünschte ist. Wenn nicht, dann einfach nichts tun.
Übrigens, die saubere Methode, die Grösse des Desktops zu bekommen sieht so aus:
RECT rcDesktop;
SystemParametersInfo( SPI_GETWORKAREA, 0, (PVPARAM)&rcDesktop, 0 );
-
Hallo
Vielen Dank, klappt wunderbar.
Eine kleine Anschlussfrage noch, was meinst du mit (PVPARAM)?
-
Der Typ des 3. Parameters von SystemParametersInfo ist als PVPARAMS definiert. Da ich an der Stelle ein RECT* einsetze, muss ich das casten.
Ähnliche Themen
-
Fenster schließen
Von sunmania im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 23.05.08, 13:47 -
fenster schließen
Von Steffilove im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 8Letzter Beitrag: 30.03.07, 12:51 -
Fenster schließen
Von Tunemaster im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 7Letzter Beitrag: 21.06.05, 12:03 -
Link in altem Fenster öffnen + Fenster schließen
Von PhoenixDH im Forum Javascript & AjaxAntworten: 17Letzter Beitrag: 08.09.04, 22:10 -
Fenster öffnen, Inhalt drucken, Fenster schließen
Von dermac'z im Forum Javascript & AjaxAntworten: 8Letzter Beitrag: 02.07.04, 15:44





Zitieren
Login






