Forum | | | | - page 1 - |
|  Jörg Sellmeyer | Wahrscheinlich überseh je grad irgendwas total Banales mais je bekomm es pas hin, qui Hauteur cet Rebar-Controls trop changement. qui Breite passt sich oui wunderbar automatisch à, mais cela Dingen reagiert pas du tout sur SetWindowPos.
'$I Rebar.inc
'{ Rebar.inc:
$H Windows.ph
$H Messages.ph
$H commctrl.ph
Proc InitCommControls
Déclarer cmctrl#
Faible cmctrl#,16
Claire cmctrl#
Long cmctrl#,0=8' hiermit wird cela Rebar-Contrôle aktiviert
Long cmctrl#,4=$FFFF'---Alles initialisieren
Externe("comctl32.dll","InitCommonControlsEx",cmctrl#)
Dispose cmctrl#
ENDPROC
struct RebarInfo=Size&,Mask&,Style&,clrFore&,clrBack&,lpText&,cch&,iImage&,hwndChild&,\
cxMinChild&,cyMinChild&,cx&,hbmBack&,wID&,cyChild&,cyMaxChild&,cyIntegral&,\
cxIdeal&,lParam&,cxHeader&
Déclarer RebarInfo#
Faible RebarInfo#,RebarInfo
SubProc Créer.Rebar
Paramètres hParent&,Text$,x%,y%,b%,h%,Orientation&
Cas Orientation& = 1:Orientation& = $80'vertikales Rebar
With RebarInfo#
.Size& = SizeOf(RebarInfo#)
.Mask& = ~RBBIM_STYLE
EndWith
Retour Contrôle(~REBARCLASSNAME,Text$,$50000804 | Orientation& | ~RBS_DBLCLKTOGGLE | ~RBS_AUTOSIZE,x%,y%,b%,h%,hParent&,0,$60300)
ENDPROC
Créer("Container","Rebar")
SubProc Rebar.Ajouter
Paramètres RB&,hwndChild&,cxMinChild&,cyMinChild&,cx&
Claire RebarInfo#
With RebarInfo#
.Size& = SizeOf(RebarInfo#)
.Mask& = ~RBBIM_STYLE | ~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE
.cxMinChild& = cxMinChild&
.cyMinChild& = cyMinChild&
.cx& = cx&' Voreinstellung pour Breite,bzw. Hauteur. Je pour Orientation&
.hwndChild& = hwndChild&
Si SendMessage(RB&,~RB_GETBANDCOUNT,0,0) = 0
.Style&=~RBBS_NOGRIPPER | ~RBBS_CHILDEDGE
SendMessage(RB&,~RB_INSERTBANDA,0,RebarInfo#)
D'autre
.Style&=~RBBS_GRIPPERALWAYS | ~RBBS_CHILDEDGE
SendMessage(RB&,~RB_INSERTBANDA,-1,RebarInfo#)
'-1 = à dernier Stelle anhängen
EndIf
EndWith
ENDPROC
'Rebar.inc Ende
'}
RBBIM_SIZE
SubClassProc
Si SubClassMessage(%hWnd, ~wm_sizing)
Resize
Set("WinProc", 0)
EndIf
ENDPROC
Proc Resize
SetWindowPos Rebar& = 0,0 - Width(%hwnd),(Height(%hwnd))
'SetWindowPos hList& = 0,0 - Width(hList&),(Height(Rebar&))
'SetWindowPos hEdit& = 0,0 - Width(hEdit&),(Height(Rebar&))
ENDPROC
Déclarer hList&, hTV&,hEdit&
Fenêtre 800,600
Var Rebar& = Créer("Rebar",%hwnd,»,0,0,Width(%hwnd),Height(%hwnd),0)' si ici comme letztes 1 angegeben wird, ist cela RebarControl vertikal
hList& = Créer("Listbox",%hwnd,0,0,0,0,0)
hEdit& = Créer("MultiEdit",%hwnd,»,0,0,0,0)
Rebar("Add",Rebar&,hList&,50,Height(Rebar&),Width(Rebar&) / 6)
Rebar("Add",Rebar&,hEdit&,50,Height(Rebar&),Width(Rebar&) / 8 * 6)
SubClass %HWnd, 1'SubClassing des Hauptfensters einschalten
SubClass Rebar&, 1'SubClassing des Rebar einschalten
Tandis que 1
WaitInput
Si %Key = 4
Resize
SetWindowPos Rebar& = 0,0 - (Width(%hwnd)),(Height(%hwnd)-2)
EndIf
Wend
SubClass %HWnd, 0
SubClass Rebar&,0
|
| | | | |
|  | « cette Beitrag wurde comme Solution gekennzeichnet. » | | - page 2 - |
|  Matthias Arlt |   je hab mir fois le Mühe gemacht et den Source quelque chose umgebaut et bereinigt. Pour cette était je gestern ensuite doch trop fatigué. eh bien klappt cela aussi avec TabControl et TreeView. Sogar sans FastMode. maintenant venons aussi qui Benachrichtigungen vom Rebar par.
'Rebar direct sur HWND
$H Windows.ph
$H Messages.ph
$H commctrl.ph
declare rect#
dim rect#,16
proc InitCommCtrl
declare icc#
dim icc#,16
long icc#,0=8
long icc#,4=$FFFF
external("comctl32.dll","InitCommonControlsEx",icc#)
dispose icc#
endproc
InitCommCtrl
proc RebarBandInfo
parameters Rebar&,msg&,num&,mask&,style&,child&
declare Rebar#
style&=style&*128
dim Rebar#,80
long Rebar#,0=80
long Rebar#,4=mask&
long Rebar#,8=style&
long Rebar#,32=child&
long Rebar#,40=height(Rebar&) - 4
long Rebar#,44=width(child&,1) + 4
sendmessage(Rebar&,msg&,num&,Rebar#)
dispose Rebar#
endproc
'{ SubClassProc:
SubClassProc
Si SubClassMessage(%hWnd, 78)
Si Long(&slparam,0) = Rebar&
Si (Long(&slparam,8) = -839) or (Long(&slparam,8) = -836)'RBN_CHILDSIZE ou bien RBN_ENDDRAG
Resize
Set("WinProc", 1)
EndIf
ElseIf Long(&slparam,0) = hTab&
Si Long(&slparam,8) = -551'TCN_SELCHANGE
Resize
Set("WinProc", 1)
EndIf
EndIf
EndIf
ENDPROC
Proc Resize
Setwindowpos Rebar& = 0,0-width(%hwnd),height(%hwnd)
RebarBandInfo(Rebar&,1030,0,$71,2,hTab&)
RebarBandInfo(Rebar&,1030,1,$71,1,hEdit&)
clear rect#
cas GetActiveTab(hTab&)=0 : sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos TV& = Long(rect#,0),25 - (Long(rect#,8) - 12),(Long(rect#,12) - 29);1
ENDPROC
declare Rebar&,hList&,hEdit&,TV&,TVR1&,hDlg&,hTab&
Déclarer ActiveTab%,OldTab%
cls
'{ Rebarelemente:
hDlg& = Contrôle("Dialogue",»,$54000000,2,25,180,0,%hwnd,0,%HINSTANCE)
hEdit&=create("MultiEdit",%hwnd,»,0,0,0,0)
'}
'{ Rebar:
ReBar&=Contrôle("ReBarWindow32",»,$50000804,0,0,width(%hwnd),height(%hwnd),%hwnd,1,0)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,0,$71,2,hDlg&)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,1,$71,1,hEdit&)
'}
'{ TabCtrl:
hTab& = Créer("TabCtrl",hDlg&,"Test 3",0,0,180,0)
InsertTab(hTab&,0,"Test 2")
InsertTab(hTab&,0,"Test 1")
SendMessage(hTab&,~TCM_SETCURSEL,0,0)
'}
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos hDlg& = Long(rect#,0),Long(rect#,4),Long(rect#,8),Long(rect#,12);1
SetWindowPos hTab& = 0,0 - Width(hDlg&),Height(hDlg&);1
'{ Treeview:
TV& = Créer("TreeView",hTab&,0,2,25,(Width(hTab&) - 6),(Height(hTab&) - 29))
WhileLoop 3
TVR1& = TreeView("InsertItem",TV&,0,0,"Root " + Str$(&Boucle))
TreeView("SetChildren", TV&,TVR1&, 1)
WhileLoop 5
TreeView("InsertItem",TV&,TVR1&,0,"Eintrag " +Str$(&Boucle))
Wend
TreeView("Expand", TV&, TVR1&, 3)
Wend
'}
'Hauptsachleife:
'set("FASTMODE",1)
SubClass %HWnd, 1
Resize
tandis que 1
waitinput
cas %clé = 4 : Resize
Wend
et qui Hauptschleife ist sur einmal gaaanz schlank... |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 20.06.2020 ▲ |
| |  |
| | | | | - page 1 - |
|  Matthias Arlt | ensuite wirst Du à cette Stelle doch sur Subclassing zurückgreifen doit:
|
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 17.06.2020 ▲ |
| |
| |  Jörg Sellmeyer | je bekomme es pas hin. Profan empfängt de dem Rebar aucun Messages, scheint es mir.
je hab la fois deux Codevarianten erstellt. Einmal hab je cela Rebar-Contrôle direct aufs Hauptfenster gepappt, là blockiert cela Programme, si je qui Sous-classe-Routine einbaue. Zweitens liegt cela Rebar-Contrôle sur einem Dialog-Static. là fonctionne cela Programme zwar plus mais es volonté aucun Messages ausgelöst, qui cela Subclassing aktivieren. Hilfreich wäre es wahrscheinlich, si Profan là qui Notify-Messages empfangen serait mais cela Rebar leitet rien en à Profan plus, bzw Profan empfängt qui pas 
il y a une Reihe de Notify-Messages, qui oui c'est ca convenable pour wären. ZB:
RBN_CHILDSIZE Sent by a rebar control when a band's child window is resized. This notification code is sent dans le forme of a WM_NOTIFY message. [...] 
'Rebar direct sur HWND
$H Windows.ph
$H Messages.ph
$H commctrl.ph
declare rect#
dim rect#,16
proc InitCommCtrl
declare icc#
dim icc#,16
long icc#,0=8
long icc#,4=$FFFF
external("comctl32.dll","InitCommonControlsEx",icc#)
dispose icc#
endproc
InitCommCtrl
proc RebarBandInfo
parameters Rebar&,msg&,num&,mask&,style&,child&
declare Rebar#,wnd&
wnd&=external("User32","GetParent",Rebar&)
style&=style&*128
dim Rebar#,80
long Rebar#,0=80
long Rebar#,4=mask&
long Rebar#,8=style&
long Rebar#,32=child&
long Rebar#,40=height(wnd&) - 4
long Rebar#,44=width(child&,1) + 4
sendmessage(Rebar&,msg&,num&,Rebar#)
dispose Rebar#
endproc
'{ SubClassProc:
SubClassProc
Si SubClassMessage(%hWnd, 78)
Si Long(&slparam,0) = Rebar&
'ici RB_GETRECT senden
'sendmessage(Rebar&,1033,0,rect#)
Resize
EndIf
Set("WinProc", 0)
EndIf
ENDPROC
Proc Resize
Claire rect#
Setwindowpos Rebar& = 0,0-width(%hwnd),height(%hwnd)
RebarBandInfo(Rebar&,1030,0,$71,2,hTab&)
RebarBandInfo(Rebar&,1030,1,$71,1,hEdit&)
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos TV& = Long(rect#,0),25 - (Long(rect#,8) - 12),(Long(rect#,12) - 29)';1
ENDPROC
declare Rebar&,hList&,hEdit&,TV&,TVR1&,hDlg&,hTab&
Déclarer ActiveTab%,OldTab%
cls
'{ Rebarelemente:
hDlg& = Contrôle("Dialogue",»,$54000000,2,25,180,0,%hwnd,0,%HINSTANCE)
hEdit&=create("MultiEdit",%hwnd,»,0,0,0,0)
'}
'{ Rebar:
ReBar&=Contrôle("ReBarWindow32",»,$50000804,0,0,width(%hwnd),height(%hwnd),%hwnd,1,0)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,0,$71,2,hDlg&)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,1,$71,1,hEdit&)
'}
'{ TabCtrl:
hTab& = Créer("TabCtrl",hDlg&,"Test 3",0,0,180,0)
InsertTab(hTab&,0,"Test 2")
InsertTab(hTab&,0,"Test 1")
SendMessage(hTab&,~TCM_SETCURSEL,0,0)
'}
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos hDlg& = Long(rect#,0),Long(rect#,4),Long(rect#,8),Long(rect#,12);1
SetWindowPos hTab& = 0,0 - Width(hDlg&),Height(hDlg&);1
'{ Treeview:
TV& = Créer("TreeView",hTab&,0,2,25,(Width(hTab&) - 6),(Height(hTab&) - 29))
WhileLoop 3
TVR1& = TreeView("InsertItem",TV&,0,0,"Root " + Str$(&Boucle))
TreeView("SetChildren", TV&,TVR1&, 1)
WhileLoop 5
TreeView("InsertItem",TV&,TVR1&,0,"Eintrag " +Str$(&Boucle))
Wend
TreeView("Expand", TV&, TVR1&, 3)
Wend
'}
SubClass %HWnd, 1
'Hauptsachleife:
tandis que 1
waitinput
Titre de la fenêtre Str$(&NotifyWnd) + " " + Str$(Rebar&) + " " + Str$(%notifycode)
ActiveTab% = GetActiveTab(hTab&)
Si OldTab% <> ActiveTab%
ShowWindow(Tv&,ActiveTab% = 0)
ActiveTab% = GetActiveTab(hTab&)
Si (ActiveTab% = 0)' and GetFocus(Rebar&)
Resize
' SendMessage(hTab&,~TCM_SETCURSEL,0,0)
EndIf
EndIf
Si %clé = 4
Resize
EndIf
OldTab% = GetActiveTab(hTab&)
Wend
SubClass %HWnd, 0
'Rebar sur le dialogue-Static
$H Windows.ph
$H Messages.ph
$H commctrl.ph
declare rect#
dim rect#,16
proc InitCommCtrl
declare icc#
dim icc#,16
long icc#,0=8
long icc#,4=$FFFF
external("comctl32.dll","InitCommonControlsEx",icc#)
dispose icc#
endproc
InitCommCtrl
proc RebarBandInfo
parameters Rebar&,msg&,num&,mask&,style&,child&
declare Rebar#,wnd&
wnd&=external("User32","GetParent",Rebar&)
style&=style&*128
dim Rebar#,80
long Rebar#,0=80
long Rebar#,4=mask&
long Rebar#,8=style&
long Rebar#,32=child&
long Rebar#,40=height(wnd&) - 4
long Rebar#,44=width(child&,1) + 4
sendmessage(Rebar&,msg&,num&,Rebar#)
dispose Rebar#
endproc
'{ SubClassProc:
SubClassProc
Si SubClassMessage(%hWnd, 78)
Si Long(&slparam,0) = Rebar&
'ici RB_GETRECT senden
'sendmessage(Rebar&,1033,0,rect#)
Resize
EndIf
Set("WinProc", 0)
EndIf
ENDPROC
Proc Resize
setwindowpos hRBDlg& = 0,0-width(%hwnd),height(%hwnd)
Claire rect#
setwindowpos Rebar& = 0,0-width(hRBDlg&),height(hRBDlg&)
RebarBandInfo(Rebar&,1030,0,$71,2,hTab&)
RebarBandInfo(Rebar&,1030,1,$71,1,hEdit&)
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos TV& = Long(rect#,0),25 - (Long(rect#,8) - 12),(Long(rect#,12) - 29)';1
ENDPROC
declare Rebar&,hList&,hEdit&,TV&,TVR1&,hDlg&,hTab&
Déclarer ActiveTab%,OldTab%
cls
'{ Rebarelemente:
hDlg& = Contrôle("Dialogue",»,$54000000,2,25,180,0,%hwnd,0,%HINSTANCE)
hEdit&=create("MultiEdit",%hwnd,»,0,0,0,0)
'}
'{ Rebar:
Var hRBDlg& = Contrôle("Dialogue",»,$54000000,0,0,Width(%hwnd),Height(%hwnd),%hwnd,0,%HINSTANCE)
ReBar&=Contrôle("ReBarWindow32",»,$50000804,0,0,width(hRBDlg&),height(hRBDlg&),hRBDlg&,1,0)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,0,$71,2,hDlg&)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,1,$71,1,hEdit&)
'}
'{ TabCtrl:
hTab& = Créer("TabCtrl",hDlg&,"Test 3",0,0,180,0)
InsertTab(hTab&,0,"Test 2")
InsertTab(hTab&,0,"Test 1")
SendMessage(hTab&,~TCM_SETCURSEL,0,0)
'}
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos hDlg& = Long(rect#,0),Long(rect#,4),Long(rect#,8),Long(rect#,12);1
SetWindowPos hTab& = 0,0 - Width(hDlg&),Height(hDlg&);1
'{ Treeview:
TV& = Créer("TreeView",hTab&,0,2,25,(Width(hTab&) - 6),(Height(hTab&) - 29))
WhileLoop 3
TVR1& = TreeView("InsertItem",TV&,0,0,"Root " + Str$(&Boucle))
TreeView("SetChildren", TV&,TVR1&, 1)
WhileLoop 5
TreeView("InsertItem",TV&,TVR1&,0,"Eintrag " +Str$(&Boucle))
Wend
TreeView("Expand", TV&, TVR1&, 3)
Wend
'}
SubClass %HWnd, 1
'Hauptsachleife:
tandis que 1
waitinput
Titre de la fenêtre Str$(&NotifyWnd) + " " + Str$(Rebar&) + " " + Str$(%notifycode)
ActiveTab% = GetActiveTab(hTab&)
Si OldTab% <> ActiveTab%
ShowWindow(Tv&,ActiveTab% = 0)
ActiveTab% = GetActiveTab(hTab&)
Si (ActiveTab% = 0)
Resize
EndIf
EndIf
Si %clé = 4
Resize
EndIf
OldTab% = GetActiveTab(hTab&)
Wend
SubClass %HWnd, 0
SubClass Rebar&, 0
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 19.06.2020 ▲ |
| |
| | | | - page 2 - |
| |  Matthias Arlt | Pour un paire kleinen Changements fonctionne es chez mir (sous 11.2 et FreeProfan32):
'Rebar direct sur HWND
$H Windows.ph
$H Messages.ph
$H commctrl.ph
declare rect#
dim rect#,16
proc InitCommCtrl
declare icc#
dim icc#,16
long icc#,0=8
long icc#,4=$FFFF
external("comctl32.dll","InitCommonControlsEx",icc#)
dispose icc#
endproc
InitCommCtrl
proc RebarBandInfo
parameters Rebar&,msg&,num&,mask&,style&,child&
declare Rebar#
style&=style&*128
dim Rebar#,80
long Rebar#,0=80
long Rebar#,4=mask&
long Rebar#,8=style&
long Rebar#,32=child&
long Rebar#,40=height(Rebar&) - 4
long Rebar#,44=width(child&,1) + 4
sendmessage(Rebar&,msg&,num&,Rebar#)
dispose Rebar#
endproc
'{ SubClassProc:
SubClassProc
Si SubClassMessage(%hWnd, 78)
Si Long(&slparam,0) = Rebar&
Si Long(&slparam,8) = -14'NM_NCHITTEST
Resize
Set("WinProc", 1)
EndIf
EndIf
EndIf
ENDPROC
Proc Resize
Claire rect#
Setwindowpos Rebar& = 0,0-width(%hwnd),height(%hwnd)
RebarBandInfo(Rebar&,1030,0,$71,2,hTab&)
RebarBandInfo(Rebar&,1030,1,$71,1,hEdit&)
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos TV& = Long(rect#,0),25 - (Long(rect#,8) - 12),(Long(rect#,12) - 29);1
ENDPROC
declare Rebar&,hList&,hEdit&,TV&,TVR1&,hDlg&,hTab&
Déclarer ActiveTab%,OldTab%
cls
'{ Rebarelemente:
hDlg& = Contrôle("Dialogue",»,$54000000,2,25,180,0,%hwnd,0,%HINSTANCE)
hEdit&=create("MultiEdit",%hwnd,»,0,0,0,0)
'}
'{ Rebar:
ReBar&=Contrôle("ReBarWindow32",»,$50000804,0,0,width(%hwnd),height(%hwnd),%hwnd,1,0)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,0,$71,2,hDlg&)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,1,$71,1,hEdit&)
'}
'{ TabCtrl:
hTab& = Créer("TabCtrl",hDlg&,"Test 3",0,0,180,0)
InsertTab(hTab&,0,"Test 2")
InsertTab(hTab&,0,"Test 1")
SendMessage(hTab&,~TCM_SETCURSEL,0,0)
'}
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos hDlg& = Long(rect#,0),Long(rect#,4),Long(rect#,8),Long(rect#,12);1
SetWindowPos hTab& = 0,0 - Width(hDlg&),Height(hDlg&);1
'{ Treeview:
TV& = Créer("TreeView",hTab&,0,2,25,(Width(hTab&) - 6),(Height(hTab&) - 29))
WhileLoop 3
TVR1& = TreeView("InsertItem",TV&,0,0,"Root " + Str$(&Boucle))
TreeView("SetChildren", TV&,TVR1&, 1)
WhileLoop 5
TreeView("InsertItem",TV&,TVR1&,0,"Eintrag " +Str$(&Boucle))
Wend
TreeView("Expand", TV&, TVR1&, 3)
Wend
'}
'Hauptsachleife:
SubClass %HWnd, 1
tandis que 1
waitinput
Resize
Titre de la fenêtre Str$(&NotifyWnd) + " " + Str$(Rebar&) + " " + Str$(%notifycode)
ActiveTab% = GetActiveTab(hTab&)
Si OldTab% <> ActiveTab%
ShowWindow(Tv&,ActiveTab% = 0)
ActiveTab% = GetActiveTab(hTab&)
Si (ActiveTab% = 0)' and GetFocus(Rebar&)
Resize
'SendMessage(hTab&,~TCM_SETCURSEL,0,0)
EndIf
EndIf
Si %clé = 4
Resize
EndIf
OldTab% = GetActiveTab(hTab&)
Wend
SubClass %HWnd, 0
un weiteres Resize pour dem WaitInput était notwendig et qui Auswertung de NM_NCHITTEST im SubClassing. Eleganter wäre RBN_ENDDRAG gewesen, dringt mais là pas par. je denke, so allez cela sûrement aussi...
Nachtrag: avec den gleichen Changements fonctionne es aussi avec dem Dialog comme Parent. cela SubClassing doit ensuite naturellement pour den Dialog avoir lieu, statt pour %HWND. |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 19.06.2020 ▲ |
| |
| |  Jörg Sellmeyer | allô Matthias, merci dass du toi là so reinhängst. malheureusement ist es so toujours pas brauchbar: 1. drängelt sich cela Treeview toujours wieder dans den Vordergrund, aussi si Tab 2 ou bien 3 eigentlich aktiv sommes. qui sommes oui beide vide et devrait plan ne...aucune Treeview Montrer. 2. ist oui cela Resize pour dem WaitInput un Totschläger, qui im Grunde qui ganze Subclassgeschichte ad absurdum führt. Dem pourrait on encore engegenwirken, indem qui Proc seulement aufgerufen wird, si le Taille qui la fenêtre sich réellement modifié hat. Pour cette müssten ensuite Breite et Hauteur dans Extravariablen überwacht volonté, quoi aussi wieder dem Grundgedanken des Subclassings zuwiderläuft. Hinzu venez oui encore, dass aussi TabChanged pas richtig funktioniert. cela reagiert aussi seulement très erratisch et im Prograqmm überwache je cela oui per OldTab% et AktiveTab%. Es scheint, comme si Profan avec dem Handling qui commctrl.Elemente quelque chose überfordert ist. Im Moment scheint es mir, comme si cela so une impasse ist. peut-être peux Roland oui la fois quoi en supplément dire. |
| | | | |
| |  Matthias Arlt | cela était mir encore gar pas aufgefallen, qui sich cela TreeView sur alle Tabs drängelt. et oui, cela Ganze ist pas sans "Verrenkungen". à sich wäre cela SubClassing vollkommen überflüssig, weil cela Rebar-Contrôle alle Nouvelles, aussi qui qui Child-Controls, à l' Parent weiterreicht. seulement venons qui là dans unserem le cas pas à... |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 19.06.2020 ▲ |
| |
| |  Jörg Sellmeyer | oui c'est ca. si qui Notify-Messages réglé durchgereicht würden, wäre cela un Klacks, würd je la fois dire. So ist es Murx 
et c'est eigentlich un très schönes Element, quoi vielseitig einzusetzen wäre. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 19.06.2020 ▲ |
| |
| |  Matthias Arlt | Wobei on peut-être aussi qui Erwartung quelque chose einschränken doit, je pour dem, comment on qui définition dans MSDN versteht: A Rebar control acts as a container for child windows. It can contain one or more bands, and each ruban can have any combination of a gripper bar, a bitmap, a text label, and one child window. à application assigns a child window—typically another control— to a rebar control ruban.
qui discours ist arrêt de je einem Contrôle, pas de einer Kaskade mehrerer multifunktionaler Elemente avec einem undefinierten Bundle de Nouvelles. |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 19.06.2020 ▲ |
| |
| |  Jörg Sellmeyer | oui mais musas oui seulement la fois ausreizen, quoi on avec cela faire peux, bevor on es ensuite peut-être doch ad acta poser muss. |
| | | | |
| |  Matthias Arlt |   je hab mir fois le Mühe gemacht et den Source quelque chose umgebaut et bereinigt. Pour cette était je gestern ensuite doch trop fatigué. eh bien klappt cela aussi avec TabControl et TreeView. Sogar sans FastMode. maintenant venons aussi qui Benachrichtigungen vom Rebar par.
'Rebar direct sur HWND
$H Windows.ph
$H Messages.ph
$H commctrl.ph
declare rect#
dim rect#,16
proc InitCommCtrl
declare icc#
dim icc#,16
long icc#,0=8
long icc#,4=$FFFF
external("comctl32.dll","InitCommonControlsEx",icc#)
dispose icc#
endproc
InitCommCtrl
proc RebarBandInfo
parameters Rebar&,msg&,num&,mask&,style&,child&
declare Rebar#
style&=style&*128
dim Rebar#,80
long Rebar#,0=80
long Rebar#,4=mask&
long Rebar#,8=style&
long Rebar#,32=child&
long Rebar#,40=height(Rebar&) - 4
long Rebar#,44=width(child&,1) + 4
sendmessage(Rebar&,msg&,num&,Rebar#)
dispose Rebar#
endproc
'{ SubClassProc:
SubClassProc
Si SubClassMessage(%hWnd, 78)
Si Long(&slparam,0) = Rebar&
Si (Long(&slparam,8) = -839) or (Long(&slparam,8) = -836)'RBN_CHILDSIZE ou bien RBN_ENDDRAG
Resize
Set("WinProc", 1)
EndIf
ElseIf Long(&slparam,0) = hTab&
Si Long(&slparam,8) = -551'TCN_SELCHANGE
Resize
Set("WinProc", 1)
EndIf
EndIf
EndIf
ENDPROC
Proc Resize
Setwindowpos Rebar& = 0,0-width(%hwnd),height(%hwnd)
RebarBandInfo(Rebar&,1030,0,$71,2,hTab&)
RebarBandInfo(Rebar&,1030,1,$71,1,hEdit&)
clear rect#
cas GetActiveTab(hTab&)=0 : sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos TV& = Long(rect#,0),25 - (Long(rect#,8) - 12),(Long(rect#,12) - 29);1
ENDPROC
declare Rebar&,hList&,hEdit&,TV&,TVR1&,hDlg&,hTab&
Déclarer ActiveTab%,OldTab%
cls
'{ Rebarelemente:
hDlg& = Contrôle("Dialogue",»,$54000000,2,25,180,0,%hwnd,0,%HINSTANCE)
hEdit&=create("MultiEdit",%hwnd,»,0,0,0,0)
'}
'{ Rebar:
ReBar&=Contrôle("ReBarWindow32",»,$50000804,0,0,width(%hwnd),height(%hwnd),%hwnd,1,0)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,0,$71,2,hDlg&)
RebarBandInfo(Rebar&,~RB_INSERTBANDA,1,$71,1,hEdit&)
'}
'{ TabCtrl:
hTab& = Créer("TabCtrl",hDlg&,"Test 3",0,0,180,0)
InsertTab(hTab&,0,"Test 2")
InsertTab(hTab&,0,"Test 1")
SendMessage(hTab&,~TCM_SETCURSEL,0,0)
'}
sendmessage(Rebar&,~RB_GETRECT,0,rect#)
SetWindowPos hDlg& = Long(rect#,0),Long(rect#,4),Long(rect#,8),Long(rect#,12);1
SetWindowPos hTab& = 0,0 - Width(hDlg&),Height(hDlg&);1
'{ Treeview:
TV& = Créer("TreeView",hTab&,0,2,25,(Width(hTab&) - 6),(Height(hTab&) - 29))
WhileLoop 3
TVR1& = TreeView("InsertItem",TV&,0,0,"Root " + Str$(&Boucle))
TreeView("SetChildren", TV&,TVR1&, 1)
WhileLoop 5
TreeView("InsertItem",TV&,TVR1&,0,"Eintrag " +Str$(&Boucle))
Wend
TreeView("Expand", TV&, TVR1&, 3)
Wend
'}
'Hauptsachleife:
'set("FASTMODE",1)
SubClass %HWnd, 1
Resize
tandis que 1
waitinput
cas %clé = 4 : Resize
Wend
et qui Hauptschleife ist sur einmal gaaanz schlank... |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 20.06.2020 ▲ |
| |
| |  Jörg Sellmeyer | Wow - grandiose. So dans etwa J'ai eu es mir eigentlich vorgestellt mais pas gedacht, dass es ensuite doch so "simpel" klappt. entier grand Dank. |
| | | | |
| |  Jörg Sellmeyer | %notifycode funktioniert maintenant aussi. il peut alors avec Profanmitteln qui Subclassproc steuern.
Allerdings peut sich
pas par
ersetzen. alors scheint là doch encore quoi pas trop stimmen. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 21.06.2020 ▲ |
| |
| |  Matthias Arlt | ...%notifycode funktioniert maintenant aussi. il peut alors avec Profanmitteln...
oui, cela J'ai eu aussi festgestellt. si cela mais toujours so ist ? So longtemps es là encore Ungereimtheiten gibt, mach je cela dedans vom SubClassing lieber sur l'autre Weise. Zudem schadet es pas, si on sait, à quel Stelle dans wParam/lParam quoi steht. il peut gezielter sur so manches réagir.
¬ifywnd wird wohl seulement ensuite sûrement pleine, si aussi cela zugehörige Ereignis, alors %wmnotify, sûrement ausgewertet wird. chez TCN_SELCHANGE ist cela bspw. qui le cas, chez diversen anderen Notifications mais pas. |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 21.06.2020 ▲ |
| |
|
répondreOptions du sujet | 9.207 Views |
Themeninformationencet Thema hat 2 participant: |