Callback mit zwei Gadget Update´s

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Callback mit zwei Gadget Update´s

Beitrag von Velindos »

Hallo Leute,
da versteh ich was nicht! Wenn ich folgenden Eintrag im Callback aufrufe läuft dieser
und meine Update Procedure wird ordentlich aufgerufen!

Code: Alles auswählen

Procedure Callback_EditorGadget(hwnd , msg , wparam , lparam)
    Protected ReturnCallBack = #PB_ProcessPureBasicEvents
    Protected *nmhdr.NMHDR   
    If msg = #WM_NOTIFY
      *nmhdr = lparam
      If *nmhdr\code = #EN_SELCHANGE
        EditorGadget_UpdateGadgets(*nmhdr\idFrom)
        Debug "Änderung im NotizZoomGadget"
      EndIf     
    EndIf   
    ProcedureReturn ReturnCallBack
  EndProcedure
Nun schalte ich mein Programm um auf ein Fenster mit einen Listicon und EditorGadget.

Code: Alles auswählen

Procedure Callback_ColumnClick(Window.l, message.l, wParam.l, lParam.l)
    Protected Result = #PB_ProcessPureBasicEvents
    Protected *pnmh.NMHDR
    Protected *pnmv.NMLISTVIEW
    Protected *lpnmitem.NMITEMACTIVATE
    
    Protected *pnmhdr.NMHDR
    Protected color$, size$, effect$
    Protected *nmhdr.NMHDR   
    
    If msg = #WM_NOTIFY
      *nmhdr = lparam
      If *nmhdr\code = #EN_SELCHANGE
        MiniEditorGadget_UpdateGadgets(*nmhdr\idFrom)
        Debug "Änderung im NotizZoomGadget"
      EndIf     
    EndIf   
    
    Select message
        
      Case #WM_NOTIFY  
        *pnmh = lParam        ; lParam points to a structure with more info
        *pnmh.NMHDR = lParam  ; lParam points to a structure with more info
        
        If *pnmh\hwndFrom = GadgetID(#Work_ListIcon) ; see if it is the right gadget
          Select *pnmh\code  ; code contains actual message
              
              ; Columen Klick
            Case #LVN_COLUMNCLICK ; user clicked on the Header of a ListIconColumn
              *pnmv.NMLISTVIEW = lParam
              Callback_ListIconSort(#Work_ListIcon, *pnmv\iSubItem)         ; *** Callback_ListIconSort setzen bze umschalten   
              updown = -updown                                              ; *** updown setzen bzw umschalten   
              
              ; Linker Klick  Mouse CLICK   
            Case #NM_CLICK  ; user clicked in the ListView
              *lpnmitem.NMITEMACTIVATE = lParam                             ; Callback
              ListIconZeile.l = *lpnmitem\iItem                             ; Zeile eintragen
              ListIconSpalte.l = *lpnmitem\iSubItem                         ; Spalte eintragen
              
          EndSelect
        EndIf
    EndSelect
    ProcedureReturn Result
  EndProcedure
Das Update auf das EditorGadget funktioniert nicht mehr, jemand eine Ahnung?

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Callback mit zwei Gadget Update´s

Beitrag von NicTheQuick »

Keine Ahnung wie man das testen soll. Liegt es vielleicht daran, dass an der einen Stelle 'MiniEditorGadget_UpdateGadgets()' und an der anderen Stelle 'EditorGadget_UpdateGadgets()' steht?
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Callback mit zwei Gadget Update´s

Beitrag von Velindos »

Hallo,
hier mal das Beispiel. Konkret zur meiner Frage, wenn ich im Editorgadget schreibe und den Cursor mit der Maus verändere, dann sollten die Button "Bold etc." aktualisiert werden!

Code: Alles auswählen

Enumeration
  #Window
  #Work_ListIcon
  #Zoom_EditorInsObereGadget
  #Zoom_Stichwort
  #Zoom_ClearUnteresGadget
  #Zoom_ShowRtfCode
  #MiniEditor2_StyleFormat
  #MiniEditor2_StyleB
  #MiniEditor2_StyleI
  #MiniEditor2_StyleU
  #MiniEditor2_StyleS
  #Work_Notiz
EndEnumeration

Global format.CHARFORMAT
Global pf.PARAFORMAT

Procedure WorkNotiz_SetFontStyle(editor , mask)
  format\cbSize         = SizeOf(CHARFORMAT)               
  format\dwMask         = mask
  format\dwEffects      = 0
  If  GetGadgetState(#MiniEditor2_StyleB)
    format\dwEffects   | #CFE_BOLD
  EndIf
  If GetGadgetState(#MiniEditor2_StyleI)
    format\dwEffects   | #CFE_ITALIC
  EndIf
  If GetGadgetState(#MiniEditor2_StyleU)
    format\dwEffects   | #CFE_UNDERLINE
  EndIf
  If GetGadgetState(#MiniEditor2_StyleS)
    format\dwEffects   | #CFE_STRIKEOUT
  EndIf
  SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , format)               
EndProcedure

Procedure MiniEditor_UpdateWorkNotiz(editor)
  Protected fName$ , i
  Debug "Update"
  
  format\cbSize   = SizeOf(CHARFORMAT)
  SendMessage_(GadgetID(editor) , #EM_GETCHARFORMAT , #SCF_SELECTION , format)
  
  pf\cbSize   = SizeOf(PARAFORMAT)
  SendMessage_(GadgetID(editor) , #EM_GETPARAFORMAT , 0 , pf)   
  
  ; SET dwEffects
  If format\dwEffects & #CFE_BOLD
    SetGadgetState(#MiniEditor2_StyleB , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleB , 0)
  EndIf
  If format\dwEffects & #CFE_ITALIC
    SetGadgetState(#MiniEditor2_StyleI , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleI , 0)
  EndIf
  If format\dwEffects & #CFE_UNDERLINE
    SetGadgetState(#MiniEditor2_StyleU , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleU , 0)
  EndIf   
  If format\dwEffects & #CFE_STRIKEOUT
    SetGadgetState(#MiniEditor2_StyleS , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleS , 0)
  EndIf   
  SetActiveGadget(editor)
EndProcedure

Procedure Callback_ColumnClick(Window.l, message.l, wParam.l, lParam.l)
  Protected Result = #PB_ProcessPureBasicEvents
  Protected *pnmh.NMHDR
  Protected *pnmv.NMLISTVIEW
  Protected *lpnmitem.NMITEMACTIVATE
  
  Protected *nmhdr.NMHDR 
  ; Hier das Editorgadget
  If msg = #WM_NOTIFY
    *nmhdr = lparam
    If *nmhdr\idFrom = GadgetID(#Work_Notiz)
      If *nmhdr\code = #EN_SELCHANGE
        MiniEditor_UpdateWorkNotiz(editor)  ; <=== Hier geschieht nichts
        Debug *nmhdr\idFrom
        Debug "Änderung"
      EndIf   
    EndIf
  EndIf 
  
  Select message
      
    Case #WM_NOTIFY  
      *pnmh = lParam        ; lParam points to a structure with more info
      *pnmh.NMHDR = lParam  ; lParam points to a structure with more info
      ; Hier das Listicon
      If *pnmh\hwndFrom = GadgetID(#Work_ListIcon) ; see if it is the right gadget
        Select *pnmh\code  ; code contains actual message
            
            ; Columen Klick
          Case #LVN_COLUMNCLICK ; user clicked on the Header of a ListIconColumn
            *pnmv.NMLISTVIEW = lParam
            updown = -updown                                              ; *** updown setzen bzw umschalten   
            
            ; Linker Klick  Mouse CLICK   
          Case #NM_CLICK  ; user clicked in the ListView
            *lpnmitem.NMITEMACTIVATE = lParam                             ; Callback
            ListIconZeile.l = *lpnmitem\iItem                             ; Zeile eintragen
            ListIconSpalte.l = *lpnmitem\iSubItem                         ; Spalte eintragen
            Debug "RDBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
            ; Linker Doppelklick
          Case #NM_DBLCLK  ; user clicked in the ListView    
            *lpnmitem.NMITEMACTIVATE = lParam
            ListIconZeile.l = *lpnmitem\iItem
            ListIconSpalte.l = *lpnmitem\iSubItem
            Debug "RDBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
          Case #NM_RCLICK  ; Rechter Klick
            *lpnmitem.NMITEMACTIVATE = lParam
            ListIconZeile.l = *lpnmitem\iItem
            ListIconSpalte.l = *lpnmitem\iSubItem
            Debug "RDBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
          Case #NM_RDBLCLK  ; Rechter Doppelklick
            *lpnmitem.NMITEMACTIVATE = lParam
            ListIconZeile.l = *lpnmitem\iItem
            ListIconSpalte.l = *lpnmitem\iSubItem
            Debug "RDBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
        EndSelect
      EndIf
  EndSelect
  ProcedureReturn Result
EndProcedure

OpenWindow(#Window,  0, 0,667, 732, Fensterueberschrift$,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
; ----------------------------------------------------------------------------------------
ListIconGadget(#Work_ListIcon,  2, 85, 663, 226, "• ", 663,#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)  
For K = 0 To 10
  AddGadgetItem(#Work_ListIcon,-1, Str(k)+"Eintrag "+Chr(10)+"Eintrag ")        
Next
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleB ,          24, 417, 22, 22 ,"B",#PB_Button_Toggle);
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleI,           47, 417, 22, 22,"I",#PB_Button_Toggle );
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleU,           70,  417, 22, 22 ,"U",#PB_Button_Toggle );
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleS,           93,  417, 22, 22,"S",#PB_Button_Toggle);
; ----------------------------------------------------------------------------------------
EditorGadget(#Work_Notiz,                   2, 440, 660, 289, #PB_Editor_WordWrap);#PB_Editor_ReadOnly
; ----------------------------------------------------------------------------------------
;-RUN
SetWindowCallback(@Callback_ColumnClick()) 
;-Event
Define MyEvent
Repeat
  
  MyEvent =  WaitWindowEvent()
  Select MyEvent
      
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      Select EventGadget()
          
        Case #MiniEditor2_StyleB
          Debug "bld"
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_BOLD)
          
        Case #MiniEditor2_StyleI
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_ITALIC)
          
        Case #MiniEditor2_StyleU
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_UNDERLINE)
          
        Case #MiniEditor2_StyleS
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_STRIKEOUT)
      EndSelect
      
  EndSelect
ForEver
End
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: Callback mit zwei Gadget Update´s

Beitrag von uweb »

Ich glaube, du hast da einen Flüchtigkeitsfehler.
Das bringt dich aber auch nur einen kleinen Schritt weiter.
Für mehr kenne ich mich da nicht genug aus und habe momentan nicht die Zeit mich rein zu lesen.

Code: Alles auswählen

Procedure Callback_ColumnClick(Window.l, message.l, wParam.l, lParam.l)
  Protected Result = #PB_ProcessPureBasicEvents
  Protected *pnmh.NMHDR
  Protected *pnmv.NMLISTVIEW
  Protected *lpnmitem.NMITEMACTIVATE
 
  Protected *nmhdr.NMHDR
  ; Hier das Editorgadget
  
    Debug "msg                   = "+Str(msg)
    Debug "message               = "+Str(message)
    Debug "#WM_NOTIFY            = "+Str(#WM_NOTIFY)
    Debug ".............."
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: Callback mit zwei Gadget Update´s

Beitrag von ts-soft »

Mit EnableExplicit wäre schon mal aufgefallen, das es kein msg im Callback gibt. Da kann schon mal nichts kommen.

So langsam solltet Ihr den Sinn von EnableExplicit doch erfasst haben, auch wenn das in diesem Falle nur ein Teil des
Fehlers ist, aber ein entscheidender. Variablen gebt Ihr Typen wie Long, obwohl das Integer sind, aber diesen
Befehl lasst Ihr weg :roll:

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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Callback mit zwei Gadget Update´s

Beitrag von RSBasic »

Das wird sich auch in 100 Jahren nie ändern, wenn PB EnableExplicit nicht standardmäßig von Hause aus aktiviert. Ist halt optional, was ich immernoch nicht verstehen kann.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Callback mit zwei Gadget Update´s

Beitrag von Velindos »

Hallo Leute,
danke für die Tips, Vorschlag gleich angenommen in eingearbeitet(hat sich in in einen Tag geändert, spass!), hier die Lösung:

Code: Alles auswählen

EnableExplicit 

Enumeration
  #Window
  #StatusBar
  #Work_ListIcon
  #Zoom_EditorInsObereGadget
  #Zoom_Stichwort
  #Zoom_ClearUnteresGadget
  #Zoom_ShowRtfCode
  #MiniEditor2_StyleFormat
  #MiniEditor2_StyleB
  #MiniEditor2_StyleI
  #MiniEditor2_StyleU
  #MiniEditor2_StyleS
  #Work_Notiz
  #Font_Work_Notiz
  #CFM_BACKCOLOR  = $4000000
EndEnumeration

Global ListIconZeile.l 
Global ListIconSpalte.l
Global K
Global evMask
Global cur1 = LoadCursor_(0, #IDC_IBEAM)
Global cur2 = LoadCursor_(0, #IDC_HAND)



Procedure WorkNotiz_SetFontStyle(editor , mask)
  Protected format.CHARFORMAT
  format\cbSize         = SizeOf(CHARFORMAT)               
  format\dwMask         = mask
  format\dwEffects      = 0
  If  GetGadgetState(#MiniEditor2_StyleB)
    format\dwEffects   | #CFE_BOLD
  EndIf
  If GetGadgetState(#MiniEditor2_StyleI)
    format\dwEffects   | #CFE_ITALIC
  EndIf
  If GetGadgetState(#MiniEditor2_StyleU)
    format\dwEffects   | #CFE_UNDERLINE
  EndIf
  If GetGadgetState(#MiniEditor2_StyleS)
    format\dwEffects   | #CFE_STRIKEOUT
  EndIf
  SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , format)               
EndProcedure

Procedure MiniEditor_UpdateWorkNotiz(editor)
  Protected fName$ , i
  Debug "Update"
  Protected format.CHARFORMAT2
  Protected pf.PARAFORMAT
  
  format\cbSize   = SizeOf(CHARFORMAT2)
  SendMessage_(GadgetID(editor) , #EM_GETCHARFORMAT , #SCF_SELECTION , format)
  
  pf\cbSize   = SizeOf(PARAFORMAT)
  SendMessage_(GadgetID(editor) , #EM_GETPARAFORMAT , 0 , pf)   
  
  ; SET dwEffects
  If format\dwEffects & #CFE_BOLD
    SetGadgetState(#MiniEditor2_StyleB , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleB , 0)
  EndIf
  If format\dwEffects & #CFE_ITALIC
    SetGadgetState(#MiniEditor2_StyleI , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleI , 0)
  EndIf
  If format\dwEffects & #CFE_UNDERLINE
    SetGadgetState(#MiniEditor2_StyleU , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleU , 0)
  EndIf   
  If format\dwEffects & #CFE_STRIKEOUT
    SetGadgetState(#MiniEditor2_StyleS , 1)
  Else
    SetGadgetState(#MiniEditor2_StyleS , 0)
  EndIf   
  SetActiveGadget(editor)
EndProcedure

Procedure Callback_ColumnClick(Window.l, message.l, wParam.l, lParam.l)
  Protected Result = #PB_ProcessPureBasicEvents
  
  Protected  *msgf.MSGFILTER, pos.POINT, char, lineindex, colindex, col, row
  
  Protected *pnmh.NMHDR
  Protected *pnmv.NMLISTVIEW
  Protected *lpnmitem.NMITEMACTIVATE
  
  Select message
      
    Case #WM_NOTIFY  
      
      *msgf=lParam
      Select *msgf\NMHDR\code
        Case #EN_MSGFILTER   
          Select *msgf\msg
            Case #WM_LBUTTONUP, #WM_KEYUP
              Debug "#WM_LBUTTONDBLCLK"
              MiniEditor_UpdateWorkNotiz(*msgf\NMHDR\idFrom)   ; Editorgadget UPDATE
              GetCaretPos_(@pos)
              char=SendMessage_(GadgetID(#Work_Notiz), #EM_CHARFROMPOS, 0, @pos)
              lineindex=SendMessage_(GadgetID(#Work_Notiz), #EM_LINEFROMCHAR, char, 0)
              colindex=SendMessage_(GadgetID(#Work_Notiz), #EM_LINEINDEX, lineindex,0)
              col = char-colindex
              row = lineindex + 1
              Debug "("+Str(col)+", "+Str(row)+")"
              StatusBarText(#StatusBar, 0, "Editor ")
              StatusBarText(#StatusBar, 1, "Spalte " +Str(col))
              StatusBarText(#StatusBar, 2, "Zeile " +Str(row))
              
          EndSelect
      EndSelect
      
      *pnmh = lParam        ; lParam points to a structure with more info
      *pnmh.NMHDR = lParam  ; lParam points to a structure with more info
      
      If *pnmh\hwndFrom = GadgetID(#Work_ListIcon) ; see if it is the right gadget
        Select *pnmh\code  ; code contains actual message
            
            ; Columen Klick
          Case #LVN_COLUMNCLICK ; user clicked on the Header of a ListIconColumn
            *pnmv.NMLISTVIEW = lParam
            Debug "LVN_COLUMNCLICK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
            ; Linker Klick  Mouse CLICK   
          Case #NM_CLICK  ; user clicked in the ListView
            *lpnmitem.NMITEMACTIVATE = lParam                             ; Callback
            ListIconZeile.l = *lpnmitem\iItem                             ; Zeile eintragen
            ListIconSpalte.l = *lpnmitem\iSubItem                         ; Spalte eintragen
            Debug "NM_CLICK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
            ; Linker Doppelklick
          Case #NM_DBLCLK  ; user clicked in the ListView    
            *lpnmitem.NMITEMACTIVATE = lParam
            ListIconZeile.l = *lpnmitem\iItem
            ListIconSpalte.l = *lpnmitem\iSubItem
            Debug "NM_DBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
          Case #NM_RCLICK  ; Rechter Klick
            *lpnmitem.NMITEMACTIVATE = lParam
            ListIconZeile.l = *lpnmitem\iItem
            ListIconSpalte.l = *lpnmitem\iSubItem
            Debug "NM_RCLICK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
          Case #NM_RDBLCLK  ; Rechter Doppelklick
            *lpnmitem.NMITEMACTIVATE = lParam
            ListIconZeile.l = *lpnmitem\iItem
            ListIconSpalte.l = *lpnmitem\iSubItem
            Debug "NM_RDBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
            
        EndSelect
      EndIf
  EndSelect
  ProcedureReturn Result
EndProcedure

OpenWindow(#Window,  0, 0,667, 732, "Listicon mit Editorgadget Update",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateStatusBar(#StatusBar, WindowID(#Window))
  AddStatusBarField(40)                                         ; StatusBar 0
  AddStatusBarField(420)                                        ; StatusBar 1
  AddStatusBarField(#PB_Ignore)                                        
  ; StatusBar 2
EndIf

; ----------------------------------------------------------------------------------------
ListIconGadget(#Work_ListIcon,  2, 85, 663, 226, "? ", 663,#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)  
For K = 0 To 10
  AddGadgetItem(#Work_ListIcon,-1, Str(k)+"Eintrag "+Chr(10)+"Eintrag ")        
Next
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleB ,          24, 417, 22, 22 ,"B",#PB_Button_Toggle);
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleI,           47, 417, 22, 22,"I",#PB_Button_Toggle );
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleU,           70,  417, 22, 22 ,"U",#PB_Button_Toggle );
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleS,           93,  417, 22, 22,"S",#PB_Button_Toggle);
; ----------------------------------------------------------------------------------------
EditorGadget(#Work_Notiz,                   2, 440, 660, 269, #PB_Editor_WordWrap);#PB_Editor_ReadOnly
SetGadgetFont(#Work_Notiz, LoadFont(#Font_Work_Notiz, "Verdana", 11, #PB_Font_HighQuality));||#PB_Font_Bold

; ----------------------------------------------------------------------------------------
;-RUN
AddGadgetItem(#Work_Notiz,0,"Hello, this is PB WEB")
; Callback Einstellungen
evMask = SendMessage_(GadgetID(#Work_Notiz), #EM_GETEVENTMASK, 0, 0)
SendMessage_(GadgetID(#Work_Notiz), #EM_SETEVENTMASK, 0, evMask|#ENM_KEYEVENTS|#ENM_MOUSEEVENTS )
SetWindowCallback(@Callback_ColumnClick())

;-Event
Define MyEvent
Repeat
  
  MyEvent =  WaitWindowEvent()
  Select MyEvent
      
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      Select EventGadget()
          
        Case #MiniEditor2_StyleB
          Debug "#MiniEditor2_StyleB"
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_BOLD)
          
        Case #MiniEditor2_StyleI
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_ITALIC)
          
        Case #MiniEditor2_StyleU
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_UNDERLINE)
          
        Case #MiniEditor2_StyleS
          WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_STRIKEOUT)
          
      EndSelect
  EndSelect
ForEver
End
Natürlich für weitere Tips wäre ich Dankbar!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
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: Callback mit zwei Gadget Update´s

Beitrag von ts-soft »

Zeile 86 sollte lauten:

Code: Alles auswählen

Procedure Callback_ColumnClick(Window.i, message.l, wParam.i, lParam.i)
Handle und Pointer sind immer PB-Integer (bzw. *). Konstanten sind immer Long (zumindest
in der Win-API).

Wenn Du schon den Type angibst, bitte auch den Richtigen, dann klappts auch mit dem
64-bittigem Nachbarn :wink:

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