На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> MFC и Полосы прокрутки, Как обновить
    Приложение с окнами в стиле Outlook
    Центральной окно CWnd, хочу в нем переключать два вида
    Одно на базе CListCtrl->CWnd
    Второе на CScrollView->CView
    Добавил их оба, одно скрыто.
    Переключаю так:
    ExpandedWrap disabled
          switch (m_CurView)
          {
              case 0:
                  m_ptrScroll->ModifyStyle(WS_VISIBLE, SWP_NOACTIVATE);
                  //m_ptrScroll->EnableWindow(FALSE);
                  m_wndMainList.ModifyStyle(0, WS_VISIBLE, SWP_NOSIZE);
                  //m_wndMainList.SetActiveWindow();
                  //ShowWindow(ID_VIEW_MAIN_LIST);
                  //m_wndMainList.EnableWindow(TRUE);
                  m_wndMainList.Invalidate();
                  m_wndMainList.RedrawWindow();
                  m_wndMainList.ShowScrollBar(SB_BOTH, TRUE);
                  break;
              case 1:
                  m_wndMainList.ModifyStyle(WS_VISIBLE, 0, SWP_NOACTIVATE);
                  //m_wndMainList.EnableWindow(FALSE);
                  m_ptrScroll->ModifyStyle(0, WS_VISIBLE, SWP_NOSIZE);
                  //ShowWindow(ID_VIEW_MAIN_GRAPH);
                  //m_ptrScroll->EnableWindow(TRUE);
                  m_ptrScroll->Invalidate();
                  m_ptrScroll->RedrawWindow();
                  m_ptrScroll->ShowScrollBar(SB_BOTH, TRUE);
                  //m_ptrScroll->UpdateWindow();
                  //m_ptrScroll->RedrawWindow();
                  //m_ptrScroll->SetActiveWindow();
                  break;
          } // switch
          Invalidate();
          UpdateWindow();
          RedrawWindow();

    Проблема в том, что пока что-то с окном не сделаешь, полосы прокрутки не обновляются и на них остается изображение от предыдущего отображение. Само содержимое обновляется корректно.
    Как видно, переберал все что можно. Не обновляется вся область, а только область для информации без полос прокртутки.
    MS Visual Studio 2019 (C++)
      Цитата Black_Dragon @
      Как видно, переберал все что можно.

      SetWindowPos пробовал?
      const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
      for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

      Чат Исходников в SkypeЧат Исходников в DiscordЧат Исходников в Telegram
        B.V.
        Делал так
        ExpandedWrap disabled
          RECT rc;
          GetClientRect(&rc);
          m_wndMainList.MoveWindow(0, 0, rc.right, rc.bottom);
        MS Visual Studio 2019 (C++)
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script Execution time: 0,0658 ]   [ 15 queries used ]   [ Generated: 3.07.20, 23:26 GMT ]