Forum | | | | Jac de Lad | Hat schon jemand Erfahrung mit Rebar-Controls? Ich hab das Windows-SDK, aber irgendwie fehlt mir da der Anfang...und Hintergrundwissen. |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.10.2006 ▲ |
| |
| | | Ich glaube Uwe hat die meisten Erfahrungen mit Rebars. |
| | | | |
| | Detlef Jagolski | Hallo
habe auch mal Angefangen, ist aber nicht fertig. KompilierenMarkierenSeparierenDeclare InitCommonControls#
Declare RebarInfo#
Declare RebarBandInfo#
Struct INITCOMMONCONTROLS = dwSize&, dwICC&
Struct REBARINFO = cbSize&, fMask&, himl&
Struct REBARBANDINFO = cbSize&, fMask&, fStyle&, clrFore&, clrBack&, lpText&, cch&, iImage&, hwndChild&, cxMinChild&, cyMinChild&, cx&, hbmBack&, wID&, cyChild&, cyMaxChild&, cyIntegral&, cxIdeal&, lParam&, cxHeader&
Dim RebarBandInfo#, REBARBANDINFO
Dim RebarInfo#, REBARINFO
InitControls
Class CoolBar = Handle&,
RBStyle&,
RBBtnSize&,
hImagelist&,
CoolBar@,
RBGetHandle@,
RBClear@,
RBSetfMask@,
RBSetfStyle@,
RBSetclrFore@,
RBSetclrBack@,
RBSetlpText@,
RBSetcch@,
RBSetiImage@,
RBSethwndChild@,
RBSetcxMinChild@,
RBSetcyMinChild@,
RBSetcx@,
RBSethbmBack@,
RBSetwID@,
RBSetcyChild@,
RBSetcyMaxChild@,
RBSetcyIntegral@,
RBSetcxIdeal@,
RBSetlParam@,
RBSetcxHeader@,
RBSetBarInfo@,
RBInsert@,
RBFont@,
RBSetStyle@,
RBGetStyle@,
RBGetButtonSize@,
RBDispose@
Proc CoolBar.CoolBar
Parameters ParentHandle&, x%, y%, dx%, dy%, ControlNo&
Declare Style&
Declare ExtStyle&
NumWidth 12
Style& = ~WS_CHILD | ~WS_VISIBLE | ~WS_CLIPSIBLINGS | ~WS_CLIPCHILDREN | ~RBS_VARHEIGHT | ~CCS_NODIVIDER
ExtStyle& = ~WS_EX_TOOLWINDOW
.Handle& = ~CreateWindowEx(ExtStyle&, "ReBarWindow32", "", Style&, x%, y%, dx%, dy%, ParentHandle&, ControlNo&, %Hinstance, $0)
Return .Handle&
EndProc
Proc CoolBar.RBGetHandle
Return .Handle&
EndProc
Proc CoolBar.RBClear
Clear RebarBandInfo#
RebarBandInfo#.cbSize& = SizeOf(RebarBandInfo#)
EndProc
Proc CoolBar.RBSetfMask
Parameters fMask&
RebarBandInfo#.fMask& = fMask&
EndProc
Proc CoolBar.RBSetfStyle
Parameters fStyle&
RebarBandInfo#.fStyle& = fStyle&
EndProc
Proc CoolBar.RBSetclrFore
Parameters clrFore&
RebarBandInfo#.clrFore& = clrFore&
EndProc
Proc CoolBar.RBSetclrBack
Parameters clrBack&
RebarBandInfo#.clrBack& = clrBack&
EndProc
Proc CoolBar.RBSetlpText
Parameters lpText$
RebarBandInfo#.lpText& = Addr(lpText$)
EndProc
Proc CoolBar.RBSetcch
Parameters cch&
RebarBandInfo#.cch& = cch&
EndProc
Proc CoolBar.RBSetiImage
Parameters iImage&
RebarBandInfo#.iImage& = iImage&
EndProc
Proc CoolBar.RBSethwndChild
Parameters hwndChild&
RebarBandInfo#.hwndChild& = hwndChild&
EndProc
Proc CoolBar.RBSetcxMinChild
Parameters cxMinChild&
RebarBandInfo#.cxMinChild& = cxMinChild&
EndProc
Proc CoolBar.RBSetcyMinChild
Parameters cyMinChild&
RebarBandInfo#.cyMinChild& = cyMinChild&
EndProc
Proc CoolBar.RBSetcx
Parameters cx&
RebarBandInfo#.cx& = cx&
EndProc
Proc CoolBar.RBSethbmBack
Parameters Typ%, hbmBack$
RebarBandInfo#.hbmBack& = Create("hPic",Typ%,hbmBack$)
EndProc
Proc CoolBar.RBSetwID
Parameters wID&
RebarBandInfo#.wID& = wID&
EndProc
Proc CoolBar.RBSetcyChild
Parameters cyChild&
RebarBandInfo#.cyChild& = cyChild&
EndProc
Proc CoolBar.RBSetcyMaxChild
Parameters cyMaxChild&
RebarBandInfo#.cyMaxChild& = cyMaxChild&
EndProc
Proc CoolBar.RBSetcyIntegral
Parameters cyIntegral&
RebarBandInfo#.cyIntegral& = cyIntegral&
EndProc
Proc CoolBar.RBSetcxIdeal
Parameters cxIdeal&
RebarBandInfo#.cxIdeal& = cxIdeal&
EndProc
Proc CoolBar.RBSetlParam
Parameters lParam&
RebarBandInfo#.lParam& = lParam&
EndProc
Proc CoolBar.RBSetcxHeader
Parameters cxHeader&
RebarBandInfo#.cxHeader& = cxHeader&
EndProc
Proc CoolBar.RBSetBarInfo
Parameters IconFile$
Declare Iccnt%
Declare Iczz%
Declare hIcon&
Iccnt% = IconCount(IconFile$)
.hImagelist& = ~ImageList_Create(16,16,~ILC_COLOR32 | ~ILC_MASK,500,500)
Clear Iczz%
WhileNot Iczz% = Iccnt%
hIcon& = Create("hIcon",IconFile$,Iczz%)
~ImageList_AddIcon(.hImagelist&,hIcon&)
Inc Iczz%
Wend
with RebarInfo#
.cbSize& = SizeOf(RebarInfo#)
.fMask& = ~RBIM_IMAGELIST
.himl& = .hImagelist&
endwith
SendMessage(.Handle&,~RB_SETBARINFO,0,RebarInfo#)
EndProc
Proc CoolBar.RBInsert
SendMessage(.Handle&,(~RB_INSERTBANDA),-1,RebarBandInfo#)
EndProc
Proc CoolBar.RBFont
Parameters Font&
SendMessage(.Handle&,~WM_SETFONT,Font&,0)
EndProc
Proc CoolBar.RBSetStyle
Parameters Style&
.RBStyle& = ~SetWindowLong(.Handle&,~GWL_STYLE,Style&)
Return .RBStyle&
EndProc
Proc CoolBar.RBGetStyle
.RBStyle& = ~GetWindowLong(.Handle&,~GWL_STYLE)
Return .RBStyle&
EndProc
Proc CoolBar.RBGetButtonSize
Parameters hButton&
.RBBtnSize& = SendMessage(hButton&,~TB_GETBUTTONSIZE,0,0)
Return .RBBtnSize&
EndProc
Proc CoolBar.RBDispose
Dispose RebarBandInfo#
Dispose RebarInfo#
~ImageList_Destroy(.hImagelist&)
EndProc
Proc InitControls
Dim InitCommonControls#, INITCOMMONCONTROLS
With InitCommonControls#
.dwSize& = SizeOf(InitCommonControls#)
.dwICC& = ~ICC_ANIMATE_CLASS |
~ICC_BAR_CLASSES |
~ICC_COOL_CLASSES |
~ICC_DATE_CLASSES |
~ICC_HOTKEY_CLASS |
~ICC_LISTVIEW_CLASSES |
~ICC_PROGRESS_CLASS |
~ICC_TAB_CLASSES |
~ICC_TREEVIEW_CLASSES |
~ICC_UPDOWN_CLASS |
~ICC_USEREX_CLASSES |
~ICC_WIN95_CLASSES
EndWith
~InitCommonControlsEx(InitCommonControls#)
Dispose InitCommonControls#
EndProc
|
| | | XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 28.10.2006 ▲ |
| |
| | Jac de Lad | Oh, danke. Das ist schon nicht schlecht, ich probiers gleich mal aus! Vielleicht kannst du oder die Community in Zusammenarbeit eine Unit/Inc/DLL erstellen, das wär klasse!
Jac |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 29.10.2006 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | Hallo Jac!
Schon hier reingeschaut: [...] ?
@ iF: Danke für die Blumen!
SeeYou Pascal |
| | | | |
| | Jac de Lad | Ist mir bekannt, aber was hat das mit Rebar zu tun? |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 29.10.2006 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | Hallo Jac!
Ist mir bekannt, aber was hat das mit Rebar zu tun?
Vielleicht das? : ... ReBar&=Control(ReBarWindow32,,$50000804 ,10,10,600,400,%hwnd,1,0) struct ReBar=Size&,Mask&,Style&,clrFore&,clrBack&,lpText&,cch&,iImage&,hwndChild&, cxMinChild&,cyMinChild&,cx&,hbmBack&,wID&,cyChild&,cyMaxChild&,cyIntegral&, cxIdeal&,lParam&,cxHeader& dim ReBar#,ReBar--REBARBANDINFO ...
Ich hab das Windows-SDK, aber irgendwie fehlt mir da der Anfang...und Hintergrundwissen. Wenn du immer nur nach Fertiglösungen sucht, ist das nicht verwunderlich...
SeeYou Pascal |
| | | | |
| | Jac de Lad | Ich suche keine Fertiglösung, aber ich komme mit dne Strukturen und so nicht klar. Ich versuche mal was zu basteln... |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 30.10.2006 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | Hallo Jac!
Ich versuche mal was zu basteln...
Genau so hab ich es auch hingekriegt Obwohl ich zugebe, das Rebars in dem Punkt schon etwas heftig sind... Bei konkreten Fragen stehe ich gern zur Verfügung!
SeeYou Pascal |
| | | | |
| | Jac de Lad | Öhm, ja, ich melde mich mit Source, wenn ich was Brauchbares habe. Das von D. Jagolsky sieht schon gut aus. |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 31.10.2006 ▲ |
| |
| | Jac de Lad | Also ich habe beide Sources probiert aber kein richtiges Rebar hingekriegt. Das erste funzt bei mir gar nicht, beim zweiten wird nur ein blauer Strich erstellt, aber alle Versuche das Controls reinzufüllen mittels sendmessage und als Message RBM_InsertItem schlugen bei mir fehl...ich forsche also noch... |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 31.10.2006 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | Hallo Jac!
Zunächst mal: auf welche Quelltexte beziehst du dich genau? Meine Demo zum Thema DocSplitter sollte - so wie sie ist - eigendlich laufen.
Hier eine leicht vereinfachte Version (lauffähig ab XProfan 8 / Win 95): KompilierenMarkierenSeparieren!
window 50,50-700,500
$H Messages.ph
$H commctrl.ph
declare ReBar&,ReBar#,Lb1&,Lb2&,a#
dim a#,16
Lb1&=create("listbox",%hwnd,"",0,0,0,0)
addstring(Lb1&,"Ich bin ListBox 1")
Lb2&=create("listbox",%hwnd,"",0,0,0,0)
addstring(Lb2&,"Ich bin ListBox 2")
clear a#
long a#,0=8
long a#,4=$FFFF---Alles initialisieren
external("comctl32.dll","InitCommonControlsEx",a#)
--Stil: $50000000 | ~CCS_NORESIZE | ~RBS_FIXEDORDER
ReBar&=Control("ReBarWindow32","",$50000804 ,10,10,600,400,%hwnd,1,0)
struct ReBar=Size&,Mask&,Style&,clrFore&,clrBack&,lpText&,cch&,iImage&,hwndChild&,
cxMinChild&,cyMinChild&,cx&,hbmBack&,wID&,cyChild&,cyMaxChild&,cyIntegral&,
cxIdeal&,lParam&,cxHeader&
dim ReBar#,ReBar--REBARBANDINFO
clear ReBar#
with ReBar#
.Size&=80-------Grösse von ReBar#
.Mask&=~RBBIM_STYLE | ~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE
.cyMaxChild&=1--Darf nicht Null sein
.Style& = ~RBBS_NOGRIPPER------1. Band ohne Griff
.cxMinChild& = 5--------------------Minimum Breite
.cyMinChild& = height(ReBar&)-------Höhe des Bandes
.cx& = 100------------------Vorgabe Breite
.hwndChild& = Lb1&-----------------Band 1
sendmessage(ReBar&,~RB_INSERTBAND,0,ReBar#)
.Style& = ~RBBS_GRIPPERALWAYS--2. Band mit Griff
.cxMinChild& = 50-------------------Minimum Breite
.cyMinChild& = 200------------------Höhe des Bandes
.cx& = 300------------------Vorgabe Breite
.hwndChild& = Lb2&-----------------Band 2
sendmessage(ReBar&,~RB_INSERTBAND,1,ReBar#)
endwith
while 1
waitinput
if sendmessage(ReBar&,~RB_GETBARHEIGHT,0,0) > height(ReBar&)
clear a#--"Umklappen" rückgängig, falls Gripper nach unten gezogen wurde
sendmessage(ReBar&,~RB_SIZETORECT,0,a#)
endif
endwhile
BTW: Du hast erwähnt, dass du die Microsoft-SDK hast - wie gut sind deine Englischkenntnisse?
HTH Pascal |
| | | | |
|
AntwortenThemenoptionen | 23.107 Betrachtungen |
ThemeninformationenDieses Thema hat 6 Teilnehmer: |