На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> Как бороться за четкость контроллов , Ноутбук, разрешение 1920 x 1080, масштабирование 125%
    В современных ноутбуках делают большое разрешение 1920 x 1080, что заставляет использовать масштабирование 125%, это делает размытые изображения и надписи в программах, которые были написаны ранее под предыдущие версии. Но современные версии программ идут без этих недостатков, все более менее читается и изображения на кнопках нормальные.

    У меня проект написан на C, полностью на WinAPI без сторонних библиотек. При масштабе 100% все четко отображается так, как и задумано, на любом комьютере, однако если поставить на ноутбуке масштаб 100% то все настолько мелкое что работать не возможно. Придется вносить изменения в программу для масштаба 125%.

    Что сделано:
    Во первых как я это себе представляю нужно программе узнать а какой вообще масштаб, и если не 100% то корректировать пиктограммы, шрифты. Для этого я так понимаю есть DPI.
    ExpandedWrap disabled
      #define INITIALX_96DPI 50
      #define INITIALY_96DPI 50
      #define INITIALWIDTH_96DPI 100
      #define INITIALHEIGHT_96DPI 50
       
      // DPI scale the position and size of the button control
      void UpdateButtonLayoutForDpi(HWND hWnd)
      {
          int iDpi = GetDpiForWindow(hWnd);
          int dpiScaledX = MulDiv(INITIALX_96DPI, iDpi, USER_DEFAULT_SCREEN_DPI);
          int dpiScaledY = MulDiv(INITIALY_96DPI, iDpi, USER_DEFAULT_SCREEN_DPI);
          int dpiScaledWidth = MulDiv(INITIALWIDTH_96DPI, iDpi, USER_DEFAULT_SCREEN_DPI);
          int dpiScaledHeight = MulDiv(INITIALHEIGHT_96DPI, iDpi, USER_DEFAULT_SCREEN_DPI);
          SetWindowPos(hWnd, hWnd, dpiScaledX, dpiScaledY, dpiScaledWidth, dpiScaledHeight, SWP_NOZORDER | SWP_NOACTIVATE);
      }
       
      ...
       
      case WM_CREATE:
      {
          // Add a button
          HWND hWndChild = CreateWindow(L"BUTTON", L"Click Me",  
              WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
              0,
              0,
              0,
              0,
              hWnd, (HMENU)NULL, NULL, NULL);
          if (hWndChild != NULL)
          {
              UpdateButtonLayoutForDpi(hWndChild);
          }
      }
      break;
       
      case WM_DPICHANGED:
      {
          // Find the button and resize it
          HWND hWndButton = FindWindowEx(hWnd, NULL, NULL, NULL);
          if (hWndButton != NULL)
          {
              UpdateButtonLayoutForDpi(hWndButton);
          }
      }
      break;

    Вопрос какие способы, или технологии есть чтобы сделать проект более "адаптивным" ?
      Цитата H g @
      Вопрос какие способы, или технологии есть чтобы сделать проект более "адаптивным" ?

      SetProcessDpiAwareness и обработка WM_DPICHANGED, и да, ручное масштабирование через пересчёт MulDiv
        B.V.За совет спасибо
        Пока в качестве временной меры нашел способ как запускать приложение в масштабе 100% (На рисунке как запускать Paint из windows xp так чтобы его не размазывало) при том что остальное все в масштабе 125%. Получается одно приложение мелкое но четкое, но если это будет мое приложение, значит я могу просто увеличить размеры контролов, сделать например в натройках (маленькие/большие кнопки и шрифты)
        Прикреплённая картинка
        Прикреплённая картинка

        Но поищу еще способы.
        Сообщение отредактировано: H g -
          Цитата H g @
          Вопрос какие способы, или технологии есть чтобы сделать проект более "адаптивным" ?

          Если изображения получились слишком мелкими, значит их надо увеличить.
          Однако, оценки "большой-маленький" весьма субъективны.
          Поэтому можно попробовать дать возможность юзеру самому определять
          размеры.
          ---
          Предположим, имеется некий диалог (с контролами) некого формата.
          Предоставим возможность увеличения/уменьшения окна диалога
          с сохранением формата и всех пропорций обычным образом - "потянув за край окошка мышью".
          Значит, надо изготовить такие контролы ,
          включая панель на которой они расположены, которые пропорционально меняют размеры,
          шрифты, иконки, рисунки, и расположение дочерних контролов (у кого имеются).
          Если всё получится удачно, смастерим из них библиотеку.
          как-то так.
          ---
          Вариант по-проще. Не даём юзеру менять размеры окна. Делаем это сами.
          Программа при старте узнаёт параметры скрина, и увеличивает свой диалог
          по вертикали до, например, 75% вертикального размера экрана. По горизонтали - пропорционально.
          итд итп.
          ---
          Скорее всего, самой большой проблемой будет реализация именно на С.
          На С++ вероятность успеха резко повышается.
          Кроме того, у реализации С имеются самые широкие возможности по утечке ресурсов.
          Сообщение отредактировано: ЫукпШ -
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0256 ]   [ 17 queries used ]   [ Generated: 3.07.25, 18:13 GMT ]