Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Rebar Band problem ...

[es] :: C/C++ programiranje :: Rebar Band problem ...

[ Pregleda: 2109 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
87.250.109.*



+1 Profil

icon Rebar Band problem ...27.09.2006. u 16:24 - pre 214 meseci
Pooz, ako neko zna da nadje problem u postavljenom kodu, zasto mi se samo prikaze kontrola koja se pozove kod zadnjeg "RB_SETREBARINFO", u ovom slucaju je to toolbar, dok se kombobox ne prikazuje. A ako zamijenim mjesta, tj. prvom pozivu stavim RBBI.hwndChild toolbar, a drugom combobox, oonda ce samo da iscrta combobox, dakle sto ne isrtava obje okontrole ?!

PS. Izbacen je neki kod, koji se tice ucitavanja slika za toolbar, kako bi bio pregledniji.

Code:
class REBARCLASS
{
public:
    REBARCLASS(){
    succ = true; 
    ToolbarID[0] = 2301;
    ToolbarID[1] = 2302;
    ToolbarID[2] = 2303;
    ToolbarID[3] = 2304;
    };
    ~REBARCLASS(){;};
    HWND hwndCB;
    HWND hwndTB;
    HWND hwndRB;
    REBARINFO RBI;
    REBARBANDINFO RBBI;
    TBBUTTON tb[4];
    HIMAGELIST hil;
    RECT RC;
    HBITMAP hToolbarImage;
    DWORD dwBtnSize;
    int itextToobar[4];
    int ToolbarID[4];
    bool succ;
    bool CreateReber(HWND&, REBARCLASS&, HINSTANCE&);
};

bool REBARCLASS::CreateReber(HWND& hwnd, REBARCLASS& rbc, HINSTANCE& hInst)
{

    rbc.hwndRB = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL, 
        WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN  
        | RBS_BANDBORDERS | CCS_NODIVIDER  | RBS_VARHEIGHT, 
        0, 0, 0, 0, hwnd, NULL, hInst, NULL);;
    
    if(!rbc.hwndRB)
    {
    errmsg(GetLastError(), "Create Window");
    return 0;
    }

    rbc.RBI.cbSize = sizeof(REBARINFO);
    rbc.RBI.fMask = 0;
    rbc.RBI.himl = (HIMAGELIST)NULL;
    
    if(!SendMessage(rbc.hwndRB, RB_SETBARINFO, 0, (LPARAM)&rbc.RBI))
    {
    errmsg(GetLastError(), "Set Control");
    return 0;
    }


    rbc.RBBI.cbSize = sizeof(REBARBANDINFO);
    rbc.RBBI.fMask = RBBIM_COLORS | RBBIM_TEXT | RBBIM_BACKGROUND | 
                   RBBIM_STYLE | RBBIM_CHILD  | RBBIM_CHILDSIZE | 
                   RBBIM_SIZE;
    rbc.RBBI.fStyle = RBBS_CHILDEDGE | RBBS_VARIABLEHEIGHT | RBBS_GRIPPERALWAYS;
    

    rbc.hwndCB = CreateWindowEx(NULL, "COMBOBOX", NULL, WS_CHILD | WS_VISIBLE  | CBS_SORT | CBS_DROPDOWN, 
        0, 10, 100, 26, rbc.hwndRB, NULL, hInst, NULL);
    SendMessage(rbc.hwndCB, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), NULL);

    GetWindowRect(rbc.hwndCB, &rbc.RC);

    rbc.tb[0].fsState = TBSTATE_ENABLED;
    rbc.tb[0].fsStyle = TBSTYLE_BUTTON;
    rbc.tb[0].iBitmap = 1;
    rbc.tb[0].idCommand = rbc.ToolbarID[0];
    rbc.tb[0].iString = rbc.itextToobar[0];

    rbc.tb[1].fsState = TBSTATE_ENABLED;
    rbc.tb[1].fsStyle = TBSTYLE_BUTTON;
    rbc.tb[1].iBitmap = 2;
    rbc.tb[1].idCommand = rbc.ToolbarID[1];
    rbc.tb[1].iString = rbc.itextToobar[1];

    rbc.tb[2].fsState = TBSTATE_ENABLED;
    rbc.tb[2].fsStyle = TBSTYLE_BUTTON;
    rbc.tb[2].iBitmap = 3;
    rbc.tb[2].idCommand = rbc.ToolbarID[2];
    rbc.tb[2].iString = rbc.itextToobar[2];

    rbc.tb[3].fsState = TBSTATE_ENABLED;
    rbc.tb[3].fsStyle = TBSTYLE_BUTTON;
    rbc.tb[3].iBitmap = 4;
    rbc.tb[3].idCommand = rbc.ToolbarID[3];
    rbc.tb[3].iString = rbc.itextToobar[3];


    if(!(rbc.hwndTB = CreateWindowEx(NULL, TOOLBARCLASSNAME, NULL, 
        WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | 
        TBSTYLE_TOOLTIPS | TBSTYLE_LIST | CCS_NORESIZE | CCS_NODIVIDER,
        0, 0, 0, 0, rbc.hwndRB, NULL, hInst, NULL)))
        errmsg(GetLastError(), "Create Toolbar");

    SendMessage(rbc.hwndTB, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), NULL);
    SendMessage(rbc.hwndTB, TB_SETIMAGELIST, 0, (LPARAM)rbc.hil);
    SendMessage(rbc.hwndTB, TB_ADDBUTTONS, (WPARAM) 4, (LPARAM) &rbc.tb);

    rbc.dwBtnSize = SendMessage(rbc.hwndTB, TB_GETBUTTONSIZE, 0, 0);
    

    SendMessage(rbc.hwndRB, RB_INSERTBAND, (WPARAM)NULL, (LPARAM)&rbc.RBBI);

    rbc.RBBI.lpText     = "Address";
    rbc.RBBI.hwndChild  = rbc.hwndCB;
    rbc.RBBI.cxMinChild = rbc.RC.bottom - rbc.RC.top;
    rbc.RBBI.cyMinChild = 32;
    rbc.RBBI.cx         = 10;
    
    SendMessage(rbc.hwndRB, RB_SETBANDINFO, NULL, (LPARAM)&rbc.RBBI);;
    

    SendMessage(rbc.hwndRB, RB_INSERTBAND, (WPARAM)NULL, (LPARAM)&rbc.RBBI);

    rbc.RBBI.lpText = "Tool bar";
    rbc.RBBI.hwndChild = rbc.hwndTB;
    rbc.RBBI.cxMinChild = HIWORD(rbc.dwBtnSize)*2;;
    rbc.RBBI.cyMinChild = 32;
    rbc.RBBI.cx = 0;

    SendMessage(rbc.hwndRB, RB_SETBANDINFO, NULL, (LPARAM)&rbc.RBBI);

    
    return rbc.succ;
};
 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
87.250.109.*



+1 Profil

icon Re: Rebar Band problem ...28.09.2006. u 00:02 - pre 214 meseci
i niko nezna ??!!
 
Odgovor na temu

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Re: Rebar Band problem ...28.09.2006. u 08:34 - pre 214 meseci
Nije da niko ne zna,al tesko da se nekome da sad od ove
hrpe koda trazit problem :|
 
Odgovor na temu

stargazer
bgd

Član broj: 85916
Poruke: 117
*.eunet.yu.



Profil

icon Re: Rebar Band problem ...28.09.2006. u 13:15 - pre 214 meseci
Code:

    rbc.RBBI.cbSize = sizeof(REBARBANDINFO);
    rbc.RBBI.fMask = RBBIM_COLORS | RBBIM_TEXT | RBBIM_BACKGROUND | 
                   RBBIM_STYLE | RBBIM_CHILD  | RBBIM_CHILDSIZE | 
                   RBBIM_SIZE;
    rbc.RBBI.fStyle = RBBS_CHILDEDGE | RBBS_VARIABLEHEIGHT | RBBS_GRIPPERALWAYS;
    // ....
    SendMessage(rbc.hwndRB, RB_INSERTBAND, (WPARAM)NULL, (LPARAM)&rbc.RBBI);

Ovde zadaješ flagove u fMask član, a nigde ih ne ispunjavaš ( osim fStyle ) pre poziva RB_INSERTBAND. Ko zna kakvo se ponašanje javlja u takvoj situaciji. Takođe, ni pri kasnijoj upotrebi te strukture u pozivu RB_SETBANDINFO, opet ne ispunjavaš hbmBack ( RBBIM_BACKGROUND ) i clrFore & clrBack ( RBBIM_COLORS ) članove.
Preporučio bih ispunjavanje REBARBANDINFO strukture sa odgovarajućim vrednostima pre slanja RB_INSERTBAND poruke, kao i njeno slanje sa (WPARAM)-1 vrednošću parametra wParam.

Pretpostavka :
Prilikom slanja RB_INSERTBAND poruke drugi put, REBARBANDINFO struktura ti je tada već ispunjena, tj. posle tog slanja imaš 2 banda od kojih bi oba trebalo sadrže combobox. Pitanje je kakvo je ponašanje rebar kontrole u toj situaciji. Moguće je da posle tog drugog slanja, band koji biva ubačen sadrži combobox, a prvi band ga više ne sadrži i kada pozoveš RB_SETBANDINFO drugi put, toolbar zamenjuje combobox i javlja se situacija koju imaš.

Nadam se da je pomoglo...
With no lovin' in our souls and no money in our coats you can't say we're satisfied
 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
87.250.109.*



+1 Profil

icon Re: Rebar Band problem ...28.09.2006. u 15:13 - pre 214 meseci
Sredio sam stvar, zahtjevao je poziv oba RB_INSERTBAND prije slanja oba RB_SETBANDINFO.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Rebar Band problem ...

[ Pregleda: 2109 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.