Winapi Controls Rebar

Тема в разделе "Общие вопросы по С и С++", создана пользователем alekssgor, 31 янв 2012.

  1. alekssgor

    alekssgor Well-Known Member

    Регистрация:
    26 май 2008
    Сообщения:
    118
    Симпатии:
    0
    Как поместить в перестраиваемую панель Toolbar(у меня Toolbar размещаетя во всю ширину окна и перекрывает Rebar полностью
    Если размещаю на Rebare два Comboboksa всё работает. Подскажите где ошибка.
    Код (Text):
    //Создание панели инструментов
    HWND CreateToolBar(HWND hwnd, DWORD dwStyle, UINT uCom)
    {
    static TBBUTTON but[4];
    but[0].fsStyle = TBSTYLE_SEP;
    but[1].iBitmap = STD_FILENEW;
    but[1].idCommand = FILE_NEW;
    but[1].fsState = TBSTATE_ENABLED;
    but[1].fsStyle = TBSTYLE_BUTTON;
    but[2].iBitmap = STD_FILEOPEN;
    but[2].idCommand = FILE_OPENS;
    but[2].fsState = TBSTATE_ENABLED;
    but[2].fsStyle = TBSTYLE_BUTTON;
    but[3].iBitmap = STD_FILESAVE;
    but[3].idCommand = FILE_SAVE;
    but[3].fsState = TBSTATE_ENABLED;
    but[3].fsStyle = TBSTYLE_BUTTON;
    return CreateToolbarEx(hwnd, dwStyle, uCom, 0, HINST_COMMCTRL, IDB_VIEW_LARGE_COLOR, but, 4, 0, 0, 0, 0, sizeof(TBBUTTON));
    }
    //Создание Rebar
    HWND CreateRebar(HWND hwndOwner, HWND hwndToolbar, HWND hwndCombo)
    {
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC  = ICC_COOL_CLASSES | ICC_BAR_CLASSES;
    InitCommonControlsEx(&icex);


    HWND hwndRebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL,
    WS_CHILD | WS_VISIBLE| WS_CLIPSIBLINGS | WS_CLIPCHILDREN | RBS_VARHEIGHT | CCS_NODIVIDER | RBS_BANDBORDERS ,
    0,0,0,0,hwndOwner,NULL,hinstance, NULL);

    if(!hwndRebar)
    {
    return NULL;
    }

    REBARBANDINFO rbBand = { sizeof(REBARBANDINFO) };
    rbBand.fMask = RBBIM_STYLE | RBBIM_TEXT | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE;
    rbBand.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;

    DWORD dwBtnSize = (DWORD)SendMessage(hwndToolbar, TB_GETBUTTONSIZE, 0,0);
    rbBand.lpText = TEXT("");
    rbBand.hwndChild = hwndToolbar;
    rbBand.cyChild = LOWORD(dwBtnSize);
    rbBand.cxMinChild = NUMBUTTONS * HIWORD(dwBtnSize);
    rbBand.cyMinChild = LOWORD(dwBtnSize);
    rbBand.cx = 0;

    SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);

    RECT rc;
    GetWindowRect(hwndCombo, &rc);
    rbBand.lpText = TEXT("Шрифт");
    rbBand.hwndChild = hwndCombo;
    rbBand.cxMinChild = 0;
    rbBand.cyMinChild = rc.bottom - rc.top;
    // The default width should be set to some value wider than the text. The combo
    // box itself will expand to fill the band.
    rbBand.cx = 100;

    // Add the band that has the combo box.
    SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
    return (hwndRebar);
    }

    //Создаём Toolbar
    DWORD dwStyle = WS_CHILD | TBSTYLE_TOOLTIPS | WS_DLGFRAME | WS_VISIBLE;
    hToolbar = CreateToolBar(hwnd, dwStyle, ID_TOOLBAR);
    //Создаём ComboBox
    hCombo = CreateWindow("COMBOBOX", NULL, WS_CHILD | CBS_DROPDOWNLIST,
    0, 0, 200, 25, hwnd, (HMENU)ID_COMBOBOX, hinstance, NULL);
    //Создаём Rebar
    hRebar = CreateRebar(hwnd, hToolbar,hCombo);//Rebar не виден?????
    //hRebar = CreateRebar(hwnd, hCombo, hCombo2);//Здесь всё работает
     
  2. alekssgor

    alekssgor Well-Known Member

    Регистрация:
    26 май 2008
    Сообщения:
    118
    Симпатии:
    0
    Проблема в стиле toolbara. Должен быть установлен стиль CCS_NOPARENTALIGN
     
Загрузка...
Похожие Темы - Winapi Controls Rebar
  1. alekssgor
    Ответов:
    1
    Просмотров:
    2.322
  2. bestguru
    Ответов:
    0
    Просмотров:
    916
  3. DreamForse
    Ответов:
    0
    Просмотров:
    2.223
  4. Vadik(R)
    Ответов:
    1
    Просмотров:
    1.450
  5. Vadik(R)
    Ответов:
    1
    Просмотров:
    1.417

Поделиться этой страницей