ich wollte mal fragen wie ich das "?" neben dem Schließen, Maximieren und Minimieren in das Systemmenü eines Fensters bekomme. Hab schon gesucht, aber mir fehlt irgendwie die richtige Bezeichnung
Gruß Fusselohr
Code: Alles auswählen
Procedure.l WindowCallback(Windowid, Message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_HELP
*Helpinfo.HELPINFO = lParam
Select *Helpinfo\iCtrlId
Case 0
Debug "Button 0 gedrückt!"
Case 1
Debug "Button 1 gedrückt!"
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
OpenWindow(0,0,0,100,100,"No Name",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ButtonGadget(0,10,10,100,20,"Button 0",0)
ButtonGadget(1,10,40,100,20,"Button 1",0)
EndIf
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, #WS_EX_CONTEXTHELP)
SendMessage_(WindowID(0), #WM_NCPAINT, 1, 0)
SetWindowCallback(@WindowCallback())
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Menu
Select EventMenu()
Case 1
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 1
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Code: Alles auswählen
If OpenWindow(#Window_0, 412, 202, 310, 320, "New window ( 0 )",#PB_Window_BorderLess)
If CreateGadgetList(WindowID(#Window_0))
ImageGadget(33,0,0,310,320,Img)
ListIconGadget(#ListIcon_0, 10, 35, 290, 270, "Column0", 92, #PB_ListIcon_GridLines)
AddGadgetColumn(#ListIcon_0,1,"Syntax",175)
SetGadgetFont(#Text_0, FontID2)
ButtonImageGadget(#ButtonImage_0, 289, 5, 16, 16, Image0)
EndIf
EndIf
DisableGadget(33,1)
StickyWindow(#Window_0,1)
Repeat
WaitWindowEvent()
ForEverCode: Alles auswählen
If OpenWindow(0,0,0,500,500,"No Name",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
EndIf
Repeat
SendMessage_(WindowID(0),#WM_NCLBUTTONDOWN, #HTCAPTION,0)
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
windowstyles = #PB_Window_SystemMenu|1|#PB_Window_Invisible ;die 1 = zentriert
hwnd=OpenWindow(0,0,0,100,100,"",windowstyles)
;Fragezeichen zum Hauptfenster
SetWindowLong_(hWnd, #GWL_EXSTYLE,GetWindowLong_(hWnd, #GWL_EXSTYLE)|#WS_EX_CONTEXTHELP)
SetWindowState(0, #PB_Window_Normal) Code: Alles auswählen
Case #WM_HELP
*Help.HELPINFO
*Help = lParam
ProgrammHilfe(*Help)
Result = #True ;sonst gibt es ev.2-3 messages
Code: Alles auswählen
Procedure ProgrammHilfe(*Help.HELPINFO) ;09.01.08
pbnr = *Help\iCtrlId
IDnr = *Help\hItemHandle
sp = *Help\mousepos\x
ze = *Help\mousepos\y
;Text aus Datei lesen
test=OpenPreferences("ebaylist4.txt")
If test=0: CreatePreferences("ebaylist4.txt"): EndIf
nr$ = Str(pbnr)
vg$ = Str(pbnr)
txt$ = ReadPreferenceString (nr$, vg$)
If txt$=vg$
If IsGadget(pbnr)
txt$=nr$+" "+GetGadgetText(pbnr)
WritePreferenceString (nr$, txt$)
EndIf
EndIf
ClosePreferences()
;Maße
br = 220
hh = 50 ;Startwert, siehe While/Wend
wbr = DesktopWidth(0)-20
whh = DesktopHeight(0)-50
;der Versuch die Höhe einigermaßen genau zu ermitteln
;mit Hilfe des angeklickten Buttons.
;der Font sollte dem Textgadget weiter unten zugewiesen werden.
FontID = GetGadgetFont(pbnr)
DC = GetDC_(IDnr)
TextSize.Size
GetTextExtentPoint32_(DC,txt$,Len(txt$),@TextSize)
lg = textsize\cx
hoehe = textsize\cy+2
anzze1 = 1+lg/br
While anzze2 < anzze1
anzze2= hh/hoehe
hh+hoehe
Wend
;damit die Info im Window bleibt
If sp > wbr-br: sp-br:EndIf
If ze > whh-hh: ze-hh:EndIf
;Hauptfenster aus
DisableWindow(0, 1)
;Info anzeigen
hdw=OpenWindow(#PB_Any, sp, ze, br, hh,"", #WS_POPUPWINDOW, WindowID(0))
CreateGadgetList(WindowID(hdw))
txtnr=TextGadget(#PB_Any,5,5,br-10,hh-10,"")
SetGadgetFont(txtnr, FontID)
SetGadgetText(txtnr,txt$)
Repeat
EventID = WaitWindowEvent()
If eventid = #WM_LBUTTONDOWN
EventID = #PB_Event_CloseWindow
EndIf
Until EventID = #PB_Event_CloseWindow
CloseWindow(hdw)
DisableWindow(0, 0)
EndProcedure
Selbst wenn es ginge ist ein Callback immer vorzuziehen. Erstens verarbeitet PB nicht alle Events (oder nur teilweise) und zweitens ist übersichtlicher den API Kram von der normalen Eventberabeitung zu trennen.hardfalcon hat geschrieben:... aber kann das #WM_HELP Event nicht auch ohne Callback verarbeitet werden, über den "herkömmlichen" PB-Weg ...