Deutsch
Forum

Das Rebar-Control

 

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.
 
28.10.2006  
 




Detlef
Jagolski
Hallo

habe auch mal Angefangen, ist aber nicht fertig.
KompilierenMarkierenSeparieren
Declare 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
 
29.10.2006  
 




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
 
29.10.2006  
 




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
 
30.10.2006  
 




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
 
31.10.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

22.976 Betrachtungen

Unbenanntvor 0 min.
Stringray05.01.2022
Michael W.31.10.2020
Rolf Koch06.09.2020
Jörg Sellmeyer16.06.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie