Помощь с панелью инструментов WinAPI - PullRequest
2 голосов
/ 21 июня 2010

Я пытаюсь создать панель инструментов, где мои растровые изображения будут 40x40, и я пытаюсь сделать панель инструментов 40 пикселей в ширину. Я хочу, чтобы это был вертикальный тобар. Я получаю только горизонтальные результаты из этого кода:

HWND OGLTOOLBAR::create(HWND parent,HINSTANCE hInst,WNDPROC prc, int *toolWidthPtr)
{
    if (toolhWnd != NULL)
    {
        return toolhWnd;
    }
    int iCBHeight;              // Height of the command bar 
    DWORD dwStyle;              // Style of the toolbar
    HWND hwndTB = NULL;         // Handle to the command bar control 
    RECT rect,                  // Contains the coordinates of the main 
        // window client area         
        rectTB;                // Contains the dimensions of the bounding
    // rectangle of the toolbar control
    INITCOMMONCONTROLSEX iccex; // The INITCOMMONCONTROLSEX structure
TBBUTTON tbButton[8];
wchar_t *txt = L"wii";
for(int i = 0; i < 8; i += 2)
{
    tbButton[i].iBitmap = 0;
    tbButton[i].fsStyle = BTNS_BUTTON;
    tbButton[i].fsState = TBSTATE_ENABLED;
    tbButton[i].iString = (INT_PTR)txt;
    tbButton->idCommand = 0;

}

for(int i = 1; i < 8; i += 2)
{
    tbButton[i].iBitmap = 0;
    tbButton[i].fsStyle = BTNS_BUTTON;
    //tbButton[i].fsState = TBSTATE_ENABLED;
    tbButton[i].iString = (INT_PTR)txt;\
    tbButton->idCommand = 0;

}

    iccex.dwSize = sizeof (INITCOMMONCONTROLSEX);
    iccex.dwICC = ICC_BAR_CLASSES;

    // Register toolbar control classes from the DLL for the common 
    // control.
    InitCommonControlsEx (&iccex);

    // Create the toolbar control.
    dwStyle = WS_VISIBLE | WS_CHILD | TBSTYLE_TOOLTIPS | TBSTYLE_WRAPABLE |   TBSTYLE_TRANSPARENT | CCS_VERT 
        ;

    if (!(hwndTB = CreateToolbarEx (
        parent,               // Parent window handle
        dwStyle,            // Toolbar window styles
        (UINT) 666,  // Toolbar control identifier
        8,          // Number of button images
        hInst,              // Module instance 
        (UINT)LoadImage(hInst,MAKEINTRESOURCE(IDB_BRUSH),0,0,0,LR_VGACOLOR),        // Bitmap resource identifier
        tbButton,           // Array of TBBUTTON structure 
        // contains button data
        sizeof(tbButton) / sizeof(TBBUTTON),
        // Number of buttons in toolbar
        40,        // Width of the button in pixels
        40,       // Height of the button in pixels
        40,         // Button image width in pixels
        40,        // Button image height in pixels
        sizeof (TBBUTTON))))// Size of a TBBUTTON structure
    {
        return NULL;
    }

    // Add ToolTips to the toolbar.
    SendMessage (hwndTB, TB_SETTOOLTIPS, (WPARAM) NUM_TOOLS, 
        (LPARAM) 8);

    // Reposition the toolbar.
    GetClientRect (parent, &rect);
    GetWindowRect (hwndTB, &rectTB);
    iCBHeight = 40;


    mainWindow = parent;
    toolhWnd = hwndTB;
    return hwndTB;

}

Я был уверен, что CCS_VERT должен был сделать его вертикальным. Как я могу сделать этот тобар шириной ~ 40 пикселей и иметь 8 квадратов, идущих вниз вместо горизонтали. Спасибо

Мне не нужны разделители, я просто подумал, что это поможет, но это не ...

1 Ответ

2 голосов
/ 21 июня 2010

Из документов SDK :

Создание вертикальной панели инструментов

Ключом к созданию вертикальной панели инструментов является включение CCS_VERT в стиль окна и для установки стиля TBSTATE_WRAP для каждой кнопки

Добавлено выделение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...