На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА 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
  
> Как запретить изменять размер окна
    Доброго времени суток!

    В VS2010 столкнулся с проблемой, которая раньше вообще не была проблемой. Суть: необходимо запретить пользователю изменять размер окна.

    Пробовал двумя способами:

    1)
    ExpandedWrap disabled
      SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0, SWP_NOSIZE);

    не работает, даже если нолики заменить реальными координатами.

    2) это в событиях (Events) закомментировать строки изменения, типа:

    ExpandedWrap disabled
      CDialogEx::OnSizing(fwSide, pRect);

    и
    ExpandedWrap disabled
      CDialogEx::OnSize(nType, cx, cy);


    Как мне это сделать, как запретить изменение размера окна? Это я туплю или VS2010 издевается? ))
      Ты тупишь. OnGetMinMaxInfo
        OnGetMinMaxInfo только возвращает информацию о положении и размере окна, а не изменяет ее. То есть не подходит )
          Цитата Silver Soft @
          только возвращает информацию


          Цитата MSDN
          Windows fills in an array of points specifying default values for the various positions and dimensions. The application may change these values in OnGetMinMaxInfo

          если че
            Однако криво читал MSDN)) Всем огромное спасибо! )

            Добавлено
            Еще просьба!
            По этой функции есть вопросы:

            ExpandedWrap disabled
              lpMMI->ptMaxTrackSize.x = 250;
              lpMMI->ptMaxTrackSize.y = 400;
                  
              CDialogEx::OnGetMinMaxInfo(lpMMI);


            все работает, указываю теперь минимальный размер:

            ExpandedWrap disabled
              lpMMI->ptMinTrackSize.x = 250;
              lpMMI->ptMinTrackSize.y = 400;
              lpMMI->ptMaxTrackSize.x = 250;
              lpMMI->ptMaxTrackSize.y = 400;
               
              CDialogEx::OnGetMinMaxInfo(lpMMI);


            почему при этом размер окна в y-координате существенно увеличивается? цифры же одинаковые...
              может до этого размер окна по вертикали меньше 400?
                да, там 300, но если я в макс указываю 291, то слишком маленькое получается..
                а почему она меняет то? я же ведь указываю новые значения, а не прошу их сложить?!
                  Ну ты указываешь минимальный размер 400, логично, что если текущий размер меньше указанного тобой минимального, то окно должно увеличиться?
                    Логично.. тогда я не понимаю, почему координата x не глючит?
                    сейчас задал у "x" заведомо увеличенное значение, координата увеличилась ровно на то значение..
                    а тут вообще чушь какая-то..

                    я с помощью GetClientRect узнал высоту окна, ее устанавливаю в min и max, но окошко укрощается, что даже кнопки все невидно, то есть высоту выдает неправильную, а ширину правильную...

                    Мысль пошла в сторону, что заголовок не учитывается, но укрощается окошко на много больше, чем высота заголовка....
                    В общем, я вообще ничего не понял )) почему "y" так себя ведет!
                      Ты не учитываешь не только высоту заголовка, а вообще всю неклиентскую область, в которую входит и меню. Размеры окна, вместе с неклиентской частью возвращает GetWindowRect
                        B.V., действительно )) Сразу все встало на свои места! теперь все работает отлично ))

                        Огромное спасибо B.V. и Uncle_Bob!!!
                          Цитата
                          SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0, SWP_NOSIZE)

                          малость не додумали: WM_WINDOWPOSCHANGING --> lParam --> WINDOWPOS.flags|SWP_NOSIZE
                          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0340 ]   [ 15 queries used ]   [ Generated: 14.12.25, 02:52 GMT ]