Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > ScrollBar убрать в SDI приложении


Автор: kurlyak 5.3.2013, 10:56
Вобщим пишу программу MFC, SDI на базе CFormView. Мне нужно что бы в окне после запуска не отображались скроллбары, и полоски после них. Как реализовать. Пробывал 

ShowScrollBar(SB_BOTH, FALSE);

и пробовал

ModifyStyle(WS_HSCROLL|WS_VSCROLL, 0, 0);

Только вот что- то у меня это не работает. Куда их вставлять, в какую функцию какого класса CMainFrame или CMyProgView?

Автор: Earnest 5.3.2013, 13:56
Убирать надо у того, у кого стиль WS_HSCROLL. Это можно посмотреть Спаем.
Кроме того, при удалении\добавлении таких стилей нужно обязательно передавать флаг swp_framechanged последним параметром.
А еще возникает вопрос - зачем убирать, когда можно создавать без оных сразу. Просто стиль соответствующий поставь, и у фрейма и у вида.

Автор: kurlyak 5.3.2013, 16:52
Спасибо за ответ, я ограничился таким кодом:

void CMyView::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
    // TODO: Add your message handler code here and/or call default
    ModifyStyle(ES_AUTOHSCROLL|WS_HSCROLL|WS_VSCROLL,0,0);

    CFormView::OnNcCalcSize(bCalcValidRects, lpncsp);
}

Автор: Earnest 5.3.2013, 16:58
Лучше все-таки ModifyStyle (... SWP_FRAMECHANGED) и не вызывать OnNcCalcSize руками, это некошерно

Автор: YDean 8.3.2013, 10:32
проще всего
Код

void CMyFormView::OnSize(UINT nType, int cx, int cy) 
{
   CView::OnSize(nType, cx, cy);    
   // было CFormView::OnSize(nType, cx, cy);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)