ParentWindow nicht den Fokus klauen
ParentWindow nicht den Fokus klauen
Ich möchte ein Fenster in ein fremdes einsetzen ohne dem Parent den Fokus zu klauen sobald ein Gadget darauf aktiv ist. Kann man Parten und Child Fokus technisch gleichberechtig machen?
Re: ParentWindow nicht den Fokus klauen
Und wenn du nach dem SetParent den Fokus erneut setzt und zwar auf das Fenster, welches den Fokus weiterhin besitzen soll?
Oder meinst du das Problem, wenn man auf das neue Unterfenster, welches setparent wurde, klickt, dass das Hauptfenster den Fokus verliert?
Also:
Meinst du dieses Problem?
Wenn ja, könntest ja so machen, damit der Fokus des Hauptfensters erhalten bleibt:
Falls du das nicht meintest, dann bitte erneute Problembeschreibung. 
Oder meinst du das Problem, wenn man auf das neue Unterfenster, welches setparent wurde, klickt, dass das Hauptfenster den Fokus verliert?
Also:
Code: Alles auswählen
EnableExplicit
Define EventID
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If OpenWindow(1001,100,100,300,200,"Window",#PB_Window_BorderLess|#PB_Window_Invisible)
TextGadget(1,10,10,100,20,"Text",0)
SetWindowColor(1001,RGB(100,100,100))
SetParent_(WindowID(1001),WindowID(0))
HideWindow(1001,0)
EndIf
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIfWenn ja, könntest ja so machen, damit der Fokus des Hauptfensters erhalten bleibt:
Code: Alles auswählen
EnableExplicit
Define EventID
Define oldStyle
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If OpenWindow(1001,100,100,300,200,"Window",#PB_Window_BorderLess|#PB_Window_Invisible)
TextGadget(1,10,10,100,20,"Text",0)
SetWindowColor(1001,RGB(100,100,100))
SetParent_(WindowID(1001),WindowID(0))
HideWindow(1001,0)
oldStyle=GetWindowLongPtr_(WindowID(1001),#GWL_STYLE)
SetWindowLongPtr_(WindowID(1001),#GWL_STYLE,oldStyle|#WS_CHILD &(~#WS_POPUP))
SetWindowPos_(WindowID(1001), 0,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
SetActiveWindow(0)
EndIf
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIfRe: ParentWindow nicht den Fokus klauen
Zweiteres! Danke 
wobei, gehört dadurch das einzusetzende Fenster jetzt dem fremden Fenster? Die Event Verarbeitung läuft nehmlich in einem Thread einer DLL. (wobei eigentlich ja nur der Style geändert wird, sehe kein WND_PROC)

wobei, gehört dadurch das einzusetzende Fenster jetzt dem fremden Fenster? Die Event Verarbeitung läuft nehmlich in einem Thread einer DLL. (wobei eigentlich ja nur der Style geändert wird, sehe kein WND_PROC)
Re: ParentWindow nicht den Fokus klauen
Habe folgende Lösung. Zur gegebener Zeit #WM_NCATIVATE an das Fenster dessen TitleBar gezeichnet werden soll senden. wParam 1 für aktiv 0 für inaktiv. lParam bei geskinten Fenstern.
Code: Alles auswählen
SendMessage_ (hwnd, #WM_NCACTIVATE ,1,-1)
