ToolBar, hlp plz...
От: swap Россия  
Дата: 24.03.02 11:26
Оценка:
Задача такая: Есть клас (CPatternEdit), производный от CWnd, который описывает окно, в котором должен быть тулбар.
Ксть такая ф-ия:


BOOL CPatternEdit::Create(CWnd *pParentWnd,int x,int y)
{
...
...

CBrush* pBrush;
BOOL res;
pBrush=new CBrush();
pBrush->CreateSolidBrush(RGB(255,255,255));
HCURSOR hCursor = LoadCursor(NULL,IDC_ARROW);
LPCSTR ClassStr=AfxRegisterWndClass( CS_HREDRAW | CS_VREDRAW , hCursor , (HBRUSH)pBrush->m_hObject, 0 ); 

CreateEx(0  , ClassStr,NULL,/*WS_CHILD|*/WS_VISIBLE|WS_OVERLAPPEDWINDOW/*|WS_CLIPSIBLINGS*/, x,y,600,350,pParentWnd->m_hWnd,NULL);

m_ToolMain.Create(this,WS_CHILD | WS_VISIBLE | CBRS_TOP,/*AFX_IDW_TOOLBAR*/IDR_MAINFRAME);
m_ToolMain.LoadToolBar(IDR_PATTERNTOOLS);
m_ToolMain.EnableDocking(CBRS_ALIGN_TOP);

...
...
}


m_ToolMain объявлена как CToolBar...
В результате окно создается а тулбар нет...
Подскажите плз.
Re: ToolBar, hlp plz...
От: Sasparella США  
Дата: 24.03.02 13:45
Оценка:
Посде создания тулбара пропишите ка вот это


    m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP| CBRS_TOP| CBRS_TOOLTIPS);
    m_wndToolBar.LoadToolBar(IDR_POLY_EDIT_TOOLBAR); 
    CRect rcClientStart;
    CRect rcClientNow;
    GetClientRect(rcClientStart);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 
                   0, reposQuery, rcClientNow);

    CPoint ptOffset(rcClientNow.left - rcClientStart.left,
                    rcClientNow.top - rcClientStart.top); 

    CRect  rcChild;                    
    CWnd* pwndChild = GetWindow(GW_CHILD);
    while (pwndChild)
    {                               
        pwndChild->GetWindowRect(rcChild);
        ScreenToClient(rcChild);
        rcChild.OffsetRect(ptOffset);
        pwndChild->MoveWindow(rcChild, FALSE);
        pwndChild = pwndChild->GetNextWindow();
    }

    
    // And position the control bars
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);


(с)MSDN

Усё будет

Саша.
Re[2]: ToolBar, hlp plz...
От: Sasparella США  
Дата: 24.03.02 13:47
Оценка:
то есть не после а вместо....


Саша.
Re: ToolBar, hlp plz...
От: Torus  
Дата: 24.03.02 15:58
Оценка:
Здравствуйте swap, Вы писали:

...
S>m_ToolMain.Create(this,WS_CHILD | WS_VISIBLE | CBRS_TOP,/*AFX_IDW_TOOLBAR*/IDR_MAINFRAME);
S>m_ToolMain.LoadToolBar(IDR_PATTERNTOOLS);
S>m_ToolMain.EnableDocking(CBRS_ALIGN_TOP);
...

Привет!

Допиши снизу 2 строчки:

EnableDocking(CBRS_ALIGN_TOP);
DockControlBar(&m_ToolMain);

Ну и все работает...
Пока!
Re[2]: ToolBar, hlp plz...
От: Аноним  
Дата: 24.03.02 21:19
Оценка:
Здравствуйте Torus, Вы писали:

T>Здравствуйте swap, Вы писали:


T>...

S>>m_ToolMain.Create(this,WS_CHILD | WS_VISIBLE | CBRS_TOP,/*AFX_IDW_TOOLBAR*/IDR_MAINFRAME);
S>>m_ToolMain.LoadToolBar(IDR_PATTERNTOOLS);
S>>m_ToolMain.EnableDocking(CBRS_ALIGN_TOP);
T>...

T>Привет!


T>Допиши снизу 2 строчки:


T>EnableDocking(CBRS_ALIGN_TOP);

T>DockControlBar(&m_ToolMain);

T>Ну и все работает...


Не у меня не работает... эти две функции не являются членами класса CWnd (мой класс от него производный), поэтому программа не компилиться...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.