Minimieren frage
Mit Callback die WM_SYSCOMMAND abfangen
FF 
Code: Alles auswählen
;- Konstanten
Enumeration ; Window ID
#Window
EndEnumeration
Enumeration ; Menu ID
#Menu
EndEnumeration
Enumeration ; MenuItem ID
#Menu_Exit
EndEnumeration
Enumeration ; Statusbar ID
#Statusbar
EndEnumeration
Enumeration ; Gadget ID
#List
EndEnumeration
; ***************************************************************************************
;- Declare
Declare WinCB(hWnd, uMsg, wParam, lParam)
; ***************************************************************************************
Procedure UpdateWindow()
Protected x,y,dx,dy
Protected mn,st,tb
x = 0
y = 0
mn = MenuHeight()
st = StatusBarHeight(#StatusBar)
;tb = ToolBarHeight(#ToolBar)
dx = WindowWidth(#Window)
dy = WindowHeight(#Window) - mn - st - tb
ResizeGadget(#List, x, y, dx, dy)
EndProcedure
Procedure WriteLog(Info.s)
Protected temp.s
temp = FormatDate("%YYYY.%MM.%DD %HH:%II:%SS - ", Date()) + Info
AddGadgetItem(#List, -1, temp)
If CountGadgetItems(#List) > 500
RemoveGadgetItem(#List, 0)
EndIf
EndProcedure
;- Globale Variablen
Global exit = 0
;- Fenster
style = #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget
If OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 400, 300, "Fenster", style)
; Menu
If CreateMenu(#Menu, WindowID(#Window))
MenuTitle("&Datei")
MenuItem(#Menu_Exit, "Be&enden")
EndIf
; Statusbar
CreateStatusBar(#Statusbar, WindowID(#Window))
; Gadgets
If CreateGadgetList(WindowID(#Window))
ListViewGadget(#List, 0,0,0,0)
EndIf
;-- Setze Callback
SetWindowCallback(@WinCB())
;-- Hauptschleife
Repeat
event = WaitWindowEvent()
window = EventWindow()
menu = EventMenu()
type = EventType()
Select event
Case #PB_Event_Menu
Select menu
Case #Menu_Exit
Exit = 1
EndSelect
Case #PB_Event_Gadget
Case #PB_Event_CloseWindow
Exit = 1
Case #PB_Event_Repaint
Case #PB_Event_SizeWindow
UpdateWindow()
Case #PB_Event_MoveWindow
Case #PB_Event_ActivateWindow
Case #PB_Event_SysTray
EndSelect
Until Exit
EndIf
; ***************************************************************************************
Procedure WinCB(hWnd, uMsg, wParam, lParam)
Protected result, temp.s
result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_SIZE
Select wParam
Case #SIZE_MINIMIZED
WriteLog("Fenster wurde minimiert")
Case #SIZE_RESTORED
WriteLog("Fenster wurde wiederhergestellt")
Case #SIZE_MAXIMIZED
WriteLog("Fenster wurde maximiert")
EndSelect
Case #WM_SYSCOMMAND
Select wParam
Case #SC_MINIMIZE
WriteLog("Menu minimieren")
; Code zum Minimieren hier einfügen
result = 0
Case #SC_RESTORE
WriteLog("Menu wiederhergestellen")
Case #SC_MAXIMIZE
WriteLog("Menu maximieren")
EndSelect
Default
EndSelect
ProcedureReturn result
EndProcedure
; ***************************************************************************************

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
http://www.purebasic.fr/german/viewtopi ... 055#234055mk-soft hat geschrieben:Mit Callback die WM_SYSCOMMAND abfangen
FF
FF

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Andesdaf hat geschrieben: FF<-- was ist das eigentlich?


{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
WinAPI

(F)iel (F)ergnügenReturn Values
An application should return zero if it processes this message

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Das ist vollkommen korrekt. Deshalb habe ich ja auch zunächst die Links zu den Beispielen von Fluid Byte (der zeigt, wie das Problem in PB 4.20 und PB 4.30 nur mit PB-Bordmitteln lösbar ist) und edel gesetzt. Mein Beispiel bietet aber einen "Mehrwert", indem man eine beliebige Aktion vor dem Minimieren durchführen kann oder durch ein "ProcedureReturn 0" den Minimierungsvorgang ganz unterdrücken kann (sozusagen den Minimierungsknopf "abklemmen" ohne ihn unsichtbar zu machen)...Kaeru Gaman hat geschrieben:Die ursprüngliche Frage war aber nur, wie man das Minimieren überhaupt registriert.
von "vorher nochemal schnell so ne ackzion ausführn" hat er nix gesacht.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22