[ sucur @ 27.09.2006. 16:24 ] @
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; }; |