Seite 1 von 2

Close-Button von Fenstern nicht anklickbar machen (Windows)

Verfasst: 04.05.2012 20:10
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)

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

Verfasst: 04.05.2012 20:15
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

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

Verfasst: 04.05.2012 20:22
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)

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

Verfasst: 06.05.2012 20:50
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:

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

Verfasst: 06.05.2012 21:05
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

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

Verfasst: 06.05.2012 21:59
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:

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

Verfasst: 07.05.2012 17:50
von Frabbing
Super RSBasic, einwandfrei. :allright:

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

Verfasst: 07.05.2012 18:14
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 

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

Verfasst: 07.05.2012 21:35
von Frabbing
Also bei mir hier (gerade XP) ist das gar nicht notwenig, wenn der Menüeintrag disabled ist...

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

Verfasst: 07.05.2012 21:43
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