Проблема размещения тулбара
От: 8x  
Дата: 17.01.08 19:42
Оценка:
Суть проблемы: при создании тулбара, как дочернего окна чужого окошка возникает проблема с тем, что он затирает уже существующие тулбары. Вот функции по созданию и добавлению тулбара в ребар. Что не так?
 HWND CreateSimpleToolbar(HWND hWndParent, int Tbar)
{
    if (hWndParent == NULL) return NULL;
    HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, 
        WS_CHILD | TBSTYLE_WRAPABLE,
        0, 50, 0, 0,
        hWndParent, NULL, NULL, NULL);
    if (hWndToolbar == NULL)
    {
        return NULL;
    }
    else 
    {
        SetWindowPos(hWndToolbar, HWND_BOTTOM, 0,0,0,0, SWP_NOOWNERZORDER);
        SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0);
        Tbar = 1;
    return hWndToolbar;
    }
}

 //-------------------------------------

 BOOL InsertToolbar(HWND hwndParent, HWND hwndToolbar)
 {
     if ((hwndParent == NULL) || (hwndToolbar == NULL))
         return FALSE;

        REBARBANDINFO rbBand = { sizeof(REBARBANDINFO) };
        rbBand.fMask  = 
              RBBIM_STYLE       // fStyle is valid.
            | RBBIM_TEXT        // lpText is valid.
            | RBBIM_CHILD       // hwndChild is valid.
            | RBBIM_CHILDSIZE   // child size members are valid.
            | RBBIM_SIZE;       // cx is valid
        rbBand.fStyle = RBBS_GRIPPERALWAYS | RBBS_BREAK;  // RBBS_CHILDEDGE
        DWORD dwBtnSize = SendMessage(hwndToolbar, TB_GETBUTTONSIZE, 0, 0);
        rbBand.lpText = TEXT("Tool");
        rbBand.hwndChild = hwndToolbar;
        rbBand.cyChild = LOWORD(dwBtnSize);
        rbBand.cxMinChild = 3 * HIWORD(dwBtnSize);
        rbBand.cyMinChild = LOWORD(dwBtnSize);
        rbBand.cx = 40;
    
        ATOM a = 0;
        if (!CHECK)
        {
            a = SendMessage(hwndParent, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
            if (a != 0)
            {
                CHECK = TRUE;
                ShowWindow(hwndToolbar, TRUE);
            }
        }
    if (a == 0) return FALSE;

    return TRUE;
 }
...
if (TBar == 0 ) hwndTb = CreateSimpleToolbar(hRBW, TBar);
            InsertToolbar(hRBW, hwndTb);
            SendMessage(hRBW, WM_PAINT, 0, 0);
                        ShowWindow(hwndTb, TRUE);


/error processing/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.