Close-Button von Fenstern nicht anklickbar machen (Windows)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Close-Button von Fenstern nicht anklickbar machen (Windows)

Beitrag von Frabbing »

Code: Alles auswählen

SetClassLongPtr_(WindowID(#Window), #GCL_STYLE, (GetClassLongPtr_(WindowID(#Window), #GCL_STYLE) | #CS_NOCLOSE))
RedrawWindow_(WindowID(#Window), #NULL, #NULL, #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EnableMenuItem_(GetSystemMenu_(WindowID(#Window), #False), #SC_CLOSE,  #MF_DISABLED)
Zuletzt geändert von Frabbing am 07.05.2012 17:51, insgesamt 1-mal geändert.
Gruß, Frank
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von RSBasic »

@Frabbing
Bitte immer einen vollständigen Code posten, damit jeder ohne zusätzlichem Aufwand direkt testen kann.

Z.B.:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  SetClassLongPtr_(WindowID(0), #GCL_STYLE, (GetClassLongPtr_(WindowID(0), #GCL_STYLE) | #CS_NOCLOSE))
  RedrawWindow_(WindowID(0), #Null, #Null, #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
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

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von ts-soft »

Das ganze macht IMHO nur Sinn wenn dann auch das Schließen des Systemmenüs ausgegraut wird.

Code: Alles auswählen

EnableMenuItem_(GetSystemMenu_(WindowID(0), 0), 6, #MF_BYPOSITION | #MF_GRAYED)
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.
Bild
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von Frabbing »

Manche Tools fügen Menüeinträge für Fenster dazu, Thomas. In dem Fall disablest du den verkehrten Eintrag. :mrgreen:
Darum hatte ich das ganz weggelassen.

@RSBasic: Hatte da wenig Zeit, aber ich gelobe Besserung. :allright:
Gruß, Frank
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von RSBasic »

Frabbing hat geschrieben:Manche Tools fügen Menüeinträge für Fenster dazu, Thomas. In dem Fall disablest du den verkehrten Eintrag. :mrgreen:
Ich bin mir zwar nicht ganz sicher, aber soweit ich weiß sind die Einträge, die extra hinzugefügt wurden, immer unten und zwar unter der Trennlinie.

\\Edit:
Beispiele:
http://i.msdn.microsoft.com/cc163805.fi ... -us%29.gif
http://binaryworld.net/Main/Articles/La ... en3656.jpg
http://www.planet-source-code.com/uploa ... 211798.JPG
http://www.swissdelphicenter.ch/screenshots/Tip1435.PNG
http://images.cnblogs.com/cnblogs_com/s ... 843750.gif
http://www.visual-basic5.de/net/systemm ... ll_url.jpg
http://www.codeproject.com/KB/menus/Sub ... emMenu.gif
http://blog.blueshop.com.tw/images/blog ... ysMenu.png
http://www.visual-basic5.de/vbclassic/m ... sysmen.jpg

\\Edit2:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  EnableMenuItem_(GetSystemMenu_(WindowID(0),#False), #SC_CLOSE,  #MF_DISABLED)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
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

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von ts-soft »

RSBasic hat geschrieben:

Code: Alles auswählen

 EnableMenuItem_(GetSystemMenu_(WindowID(0), #False), #SC_CLOSE,  #MF_DISABLED)
Ich habs doch geahnt, war nur zu faul zu suchen :mrgreen:
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.
Bild
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von Frabbing »

Super RSBasic, einwandfrei. :allright:
Gruß, Frank
Benutzeravatar
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

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von ts-soft »

Alt + F4 sollte auch noch berücksichtigt werden :mrgreen:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  EnableMenuItem_(GetSystemMenu_(WindowID(0),#False), #SC_CLOSE,  #MF_DISABLED)
  AddKeyboardShortcut(0, #PB_Shortcut_Alt | #PB_Shortcut_F4, 4711)
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf 
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.
Bild
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von Frabbing »

Also bei mir hier (gerade XP) ist das gar nicht notwenig, wenn der Menüeintrag disabled ist...
Gruß, Frank
Benutzeravatar
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

Re: Close-Button von Fenstern nicht anklickbar machen (Windo

Beitrag von ts-soft »

Frabbing hat geschrieben:Also bei mir hier (gerade XP) ist das gar nicht notwenig, wenn der Menüeintrag disabled ist...
Dann ist Dein PC kaputt :mrgreen:

Fenster den Fokus geben, z.B. Titelleiste klicken, jetzt Alt Drücken und festhalten, jetzt F4 drücken und siehe
da, Fenster schließt, auch unter XP!

Gruß
Thomas
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.
Bild
Antworten