Ich habe mich seit einigen Tagen etwas intensiver mit der Api beschäftigt,
dank rsbasic's Api-Library,
und hab,natürlich, erst mal alles(fast) ausprobiert.
Ind bin auf 'dumme' Gedanken gekommen.
Dabei ist mir allerdings ein verhalten aufgefallen,von dem ich nicht rausbekomme,woher es kommt.
Anbei ein kleiner Test-Code,mit verschiedenen Dingen.
Das Problem:
das rechte PanelGadget arbeitet wie erwartet
das linke flackert aber beim hinzufügen oder wechseln
ich weiss einfach nicht,was ich da machen könnte
Ein kleiner Tip wäre nett
Code: Alles auswählen
;*******************************************
;*   Quick'n'Dirty- Code
;*
;*   Dank an und Anregung von
;*   rsbasic's "WinAPI Library"
;*
;*   und MicroSofts Api- Doc
;*
;*   und allen,die Code zur verfügung gestellt haben
;*
;*********************************************
EnableExplicit
Global ed,ed1,ed2,ed3,win,stts,sth,mssg,main,tool,men,fnt,fntol
Global vary,func,cons,var,deb
Global OldProc,ixs
Global defaultBrush = CreateSolidBrush_(GetSysColor_(#COLOR_3DFACE))
Define i,j,k,ev,pnlnr
Declare.s Format(Zahl)
Declare LineCallBack()
Declare CodeGadget(nr,x,y,xx,yy,fl)
  Structure MyGadget
    gdgtnr.i
    ed1.i
    ed2.i
    ed3.i
    x.i
    y.i
    xx.i
    yy.i
    fl.i
    anz.i
    tag.s
    iks.i
  EndStructure 
Global a=-1
Global Dim qced.MyGadget(15)
 ;**************************************************
Procedure myPGcallback(hwnd, msg, wParam, lParam) 
  Protected Result = CallWindowProc_(OldProc, hwnd, msg, wParam, lParam) 
  Protected Gadget
  Protected Color
  Protected tabText$
  Protected *PGdis.DRAWITEMSTRUCT
  Select msg 
    Case #WM_DRAWITEM 
      *PGdis.DRAWITEMSTRUCT = lParam 
      If *PGdis\CtlType = #ODT_TAB       
       Gadget = GetProp_(*PGdis\hwnditem, "PB_ID")
        If *PGdis\itemID = GetGadgetState(Gadget)         
            Color = #Red
            tabText$ = GetGadgetItemText(Gadget, *PGdis\itemID)
            FillRect_(*PGdis\hdc, *PGdis\rcItem, defaultBrush)
            SetTextColor_(*PGdis\hdc, Color) 
            SetBkMode_(*PGdis\hdc, #TRANSPARENT) 
            DrawText_(*PGdis\hdc, tabText$, Len(tabText$), *PGdis\rcItem, #DT_LEFT | #DT_SINGLELINE | #DT_VCENTER | #DT_NOCLIP) 
          Else 
            tabText$ = GetGadgetItemText(Gadget, *PGdis\itemID)
            FillRect_(*PGdis\hdc, *PGdis\rcItem, defaultBrush)
            SetTextColor_(*PGdis\hdc, #Black) 
            SetBkMode_(*PGdis\hdc, #TRANSPARENT) 
            DrawText_(*PGdis\hdc, tabText$, Len(tabText$), *PGdis\rcItem, #DT_LEFT | #DT_SINGLELINE | #DT_VCENTER | #DT_NOCLIP) 
        EndIf 
      EndIf 
  EndSelect 
  ProcedureReturn  Result
EndProcedure 
Procedure CodeGadget(nr,ax,ay,axx,ayy,afl)
   Protected gdgtnr
   Protected ret$
  a+1
  With qced(a)
    \x=ax
    \y=ay
    \xx=axx
    \yy=ayy
    \fl=afl
    \tag=" New"
    \anz=a 
  EndWith
  OpenGadgetList(main)
  AddGadgetItem(main,qced(a)\anz,qced(a)\tag)
  
  gdgtnr=ContainerGadget(nr,ax,ay,axx,ayy,afl)
  SetGadgetColor(gdgtnr,#PB_Gadget_BackColor,$B7BCBC)
  ed1=EditorGadget(#PB_Any, 36,0, GadgetWidth(gdgtnr)-42, GadgetHeight(gdgtnr)-32)
  ed2=TextGadget(#PB_Any, 0,0, 30, GadgetHeight(gdgtnr),Format(1))
  ed3=TextGadget(#PB_Any, GadgetWidth(ed2),0, 6, GadgetHeight(gdgtnr),"")
  With qced(a)
  \gdgtnr=gdgtnr
  \ed1=ed1
  \ed2=ed2
  \ed3=ed3
  EndWith
  SetWindowTheme_(GadgetID(ed1), @"", @"")
  SetWindowLongPtr_(GadgetID(ed1), #GWL_EXSTYLE, 0)
  SetWindowPos_(GadgetID(ed1), 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED)
  SetGadgetColor(ed1,#PB_Gadget_BackColor,$B7BCBC)  
  SetGadgetColor(ed2,#PB_Gadget_BackColor,$7D8585)
  SetGadgetColor(ed3,#PB_Gadget_BackColor,$7D8585)
  CloseGadgetList() 
  
  CloseGadgetList()
  LineCallBack()
  BindGadgetEvent(ed1,@LineCallBack())
  SetActiveGadget(qced(a)\ed1)
  ProcedureReturn qced(a)\anz
EndProcedure
Procedure.s Format(zahl)
  Protected ret$
  If zahl<10
    ret$="  "+Str(zahl)
  ElseIf zahl<100
    ret$=" "+Str(zahl)
  ElseIf zahl>=100
    ret$=Str(zahl)
  EndIf
  ProcedureReturn ret$
EndProcedure  
Procedure LineCallBack() 
  Protected POINT.POINT
  Protected char
  Protected lineindex
  Protected colindex
  Protected col
  Protected row
  Protected lnnr
  Protected fl
  Protected lntxt$
  Protected i
  GetCaretPos_(@POINT)
  char = SendMessage_(GadgetID(ed1), #EM_CHARFROMPOS, 0, @POINT)
  lineindex = SendMessage_(GadgetID(ed1), #EM_LINEFROMCHAR, char, 0)
  colindex = SendMessage_(GadgetID(ed1), #EM_LINEINDEX, lineindex, 0)
  col = char-colindex
  row = lineindex + 1
  StatusBarText(stts,0 ,"Zeile:" + Str(row) + "  Spalte:" + Str(col))
  lnnr=SendMessage_(GadgetID(ed1),#EM_GETLINECOUNT,0,0)
  fl=SendMessage_(GadgetID(ed1),#EM_GETFIRSTVISIBLELINE,0,0)+1
  For i=fl To lnnr-1
    lntxt$=lntxt$+Format(i)+Chr(13)+Chr(10)
  Next i
  lntxt$=lntxt$+Format(i) 
  SetGadgetText(ed2,lntxt$)
EndProcedure  
;**************************************************
fnt=LoadFont(#PB_Any,"consolas",12)
fntol=LoadFont(#PB_Any,"consolas",8)
SetGadgetFont(#PB_Default,FontID(fnt))
SetThemeAppProperties_(0)
win=OpenWindow (#PB_Any,0,0,800,600,"Q-Code-Gadget",#PB_Window_Invisible|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_Maximize)
  SetWindowLongPtr_(WindowID(win),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(win),#GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WindowID(win), 0, 0, #LWA_ALPHA)
  HideWindow(win,#False)
men=CreateMenu(1,WindowID(win))
MenuTitle("File")
MenuItem(1,"New")
stts=CreateStatusBar(#PB_Any,WindowID(win))
AddStatusBarField(120)
AddStatusBarField(100)
sth=StatusBarHeight(stts)
main=PanelGadget(#PB_Any,3,20,WindowWidth(win)-215,WindowHeight(win)-sth-93)
CodeGadget(#PB_Any,0,0,GadgetWidth(main),GadgetHeight(main),#PB_Container_Double)
CloseGadgetList()
mssg=TextGadget(#PB_Any,3,GadgetHeight(main)+20,WindowWidth(win)-215,53,"Text$")
SetGadgetColor(mssg,#PB_Gadget_BackColor,$7D8585)
tool=PanelGadget(#PB_Any, GadgetWidth(main)+3,20, WindowWidth(win)-GadgetWidth(main)-5 ,WindowHeight(win)-sth-40)
AddGadgetItem(tool,0,"Values")
vary=PanelGadget(#PB_Any,0,0,GadgetWidth(tool),GadgetHeight(tool))
AddGadgetItem(vary,0,"Variable")
var=TextGadget(#PB_Any,0,0,GadgetWidth(vary),GadgetHeight(vary),"Variables")
SetGadgetColor(var,#PB_Gadget_BackColor,$ABABAB)
SetGadgetColor(var,#PB_Gadget_FrontColor,$160200)
AddGadgetItem(vary,-1,"Function")
func=TextGadget(#PB_Any,0,0,GadgetWidth(vary),GadgetHeight(vary),"Functions()")
SetGadgetColor(func,#PB_Gadget_FrontColor,$E71505)
SetGadgetColor(func,#PB_Gadget_BackColor,$ABABAB)
AddGadgetItem(vary,-1,"Constant")
cons=TextGadget(#PB_Any,0,0,GadgetWidth(vary),GadgetHeight(vary),"#Constants")
SetGadgetColor(cons,#PB_Gadget_BackColor,$ABABAB)
SetGadgetColor(cons,#PB_Gadget_FrontColor,$8E0596)
CloseGadgetList()
AddGadgetItem(tool,1,"Debug")
deb=TextGadget(#PB_Any,0,0,GadgetWidth(vary),GadgetHeight(vary),"Debug "+Chr(34)+"Vary=8\"+Chr(34))
SetGadgetColor(deb,#PB_Gadget_BackColor,$ABABAB)
SetGadgetColor(deb,#PB_Gadget_FrontColor,$0C01EB)
CloseGadgetList()  
SetGadgetFont(vary,FontID(fntol))
  SetWindowLong_(GadgetID(main), #GWL_STYLE, GetWindowLong_(GadgetID(main), #GWL_STYLE) | #TCS_OWNERDRAWFIXED) 
  OldProc = SetWindowLong_(GetParent_(GadgetID(main)), #GWL_WNDPROC, @myPGcallback()) 
For i=0 To 255  
  SetWindowLongPtr_(WindowID(win),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(win),#GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WindowID(win), 0, i, #LWA_ALPHA)
  Delay(3)
Next i
Repeat 
  ev=WaitWindowEvent()
  Select ev
    Case #PB_Event_CloseWindow
      a=255
      For i=a To 0 Step -1 
        SetWindowLongPtr_(WindowID(win),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(win),#GWL_EXSTYLE) | #WS_EX_LAYERED)
        SetLayeredWindowAttributes_(WindowID(win), 0, i, #LWA_ALPHA)
        Delay(5)
      Next i
      End
    Case #PB_Event_Menu
      Select EventMenu()
        Case 1
          CodeGadget(#PB_Any,0,0,GadgetWidth(main),GadgetHeight(main),#PB_Container_Double)
      EndSelect
  EndSelect
  pnlnr=GetGadgetState(main)
  SetActiveGadget(qced(pnlnr)\ed1)
  StatusBarText(stts,1 ,"TabNr.: "+Str(pnlnr+1))
ForEver
Olaf







 
   
 