Вписать окно в монитор
От: пффф  
Дата: 13.01.23 21:32
Оценка:
Привет!

Мне надо, чтобы софтина запускалась примерно во весь экран. Почему примерно — потому, что окно не будет максимизировано, и я хочу оставить пользователю доступ к рабочему столу, к иконкам у краев (есть идея, что по краям — наиболее важные ярлыки, и я не хочу их закрывать, чтобы не вызывать у пользователя клаустрофобию).

Для режима одного дисплея — как узнать, какого размера таскбар, и с какой стороны он находится? Всплывающий, или нет?

Двигать окно нельзя, ну, или, после перемещения, я всё равно буду восстанавливать ту конфигурацию, которая мне нужна — почти во весь экран, оставив по периметру вид на рабочий стол. Как это отслеживать?
Текущий дисплей определяется по left-top позиции окна?

И ещё вопрос — по супер широким мониторам (в тч по изогнутым) — у них, наверное, какое-то запредельное отношение сторон, не 16:9/10, а 48:9/10, или как-то так? На таком мониторе я хотел бы занять часть центрального монитора (если представить супер широкий моник как три обычных соседних) — совсем на весь этот супер-широкий моник растягиваться это было бы перебором, да и в моей программе это совсем не нужно и даже будет неудобно. Есть какие-то практики на эту тему?

Погуглил на тему супер-широких моников.
30" Монитор Xiaomi Redmi Curved Display черный [2560x1080] — 2.37
34" Монитор AOC U34E2M черный [3440x1440] — 2.38

Обычный моник — 16/9 — 1.78

Старый нетбук — Acer Aspire One HAPPY2 N578Qoo — 1024x600 — 1.7. Хм... Что-то казалось, что он довольно широкий, а не просто мелкий. Хотя, может, это просто тогда сказывалась травма от 800x600/1024x768 (1.33)

Как найти в этом мире своё место на мониторе пользователя?
Re: Вписать окно в монитор
От: kov_serg Россия  
Дата: 13.01.23 22:01
Оценка:
Здравствуйте, пффф, Вы писали:

П>Мне надо, чтобы софтина запускалась примерно во весь экран. Почему примерно — потому, что окно не будет максимизировано, и я хочу оставить пользователю доступ к рабочему столу, к иконкам у краев (есть идея, что по краям — наиболее важные ярлыки, и я не хочу их закрывать, чтобы не вызывать у пользователя клаустрофобию).


П>Для режима одного дисплея — как узнать, какого размера таскбар, и с какой стороны он находится? Всплывающий, или нет?


Копайте тут:
https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shappbarmessage
https://learn.microsoft.com/en-us/windows/win32/gdi/multiple-display-monitors-functions
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics
SM_CMONITORS
SM_XVIRTUALSCREEN
SM_YVIRTUALSCREEN
SM_CXVIRTUALSCREEN
SM_CYVIRTUALSCREEN


П>И ещё вопрос — по супер широким мониторам (в тч по изогнутым) — у них, наверное, какое-то запредельное отношение сторон, не 16:9/10, а 48:9/10, или как-то так? На таком мониторе я хотел бы занять часть центрального монитора (если представить супер широкий моник как три обычных соседних) — совсем на весь этот супер-широкий моник растягиваться это было бы перебором, да и в моей программе это совсем не нужно и даже будет неудобно. Есть какие-то практики на эту тему?


П>Погуглил на тему супер-широких моников.

П>30" Монитор Xiaomi Redmi Curved Display черный [2560x1080] — 2.37
П>34" Монитор AOC U34E2M черный [3440x1440] — 2.38

https://www.dns-shop.ru/product/d301893c5995ed20/487-monitor-samsung-odyssey-neo-g9-s49ag950ni-belyj/ — 3.55

П>Как найти в этом мире своё место на мониторе пользователя?

Задать в конфиге
Re[2]: Вписать окно в монитор
От: пффф  
Дата: 13.01.23 23:35
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Копайте тут:

_>https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shappbarmessage
_>https://learn.microsoft.com/en-us/windows/win32/gdi/multiple-display-monitors-functions
_>https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics

Спс, гляну


П>>Как найти в этом мире своё место на мониторе пользователя?

_>Задать в конфиге

Не вариант, надо на автомате. Конфиг — только если всё совсем обосралось
Re: Вписать окно в монитор
От: Doom100500 Израиль  
Дата: 16.01.23 08:03
Оценка: +1
Здравствуйте, пффф, Вы писали:

П>Двигать окно нельзя, ну, или, после перемещения, я всё равно буду восстанавливать ту конфигурацию, которая мне нужна — почти во весь экран, оставив по периметру вид на рабочий стол. Как это отслеживать?

П>Текущий дисплей определяется по left-top позиции окна?

Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.
Спасибо за внимание
Re[2]: Вписать окно в монитор
От: rudzuk  
Дата: 16.01.23 09:23
Оценка:
Здравствуйте, Doom100500, Вы писали:

D> П>Двигать окно нельзя, ну, или, после перемещения, я всё равно буду восстанавливать ту конфигурацию, которая мне нужна — почти во весь экран, оставив по периметру вид на рабочий стол. Как это отслеживать?

D> П>Текущий дисплей определяется по left-top позиции окна?

D> Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.


Локер тебя спрашивать не будет, хочешь ты им пользоваться или нет
avalon/3.0.2
Re[3]: Вписать окно в монитор
От: Doom100500 Израиль  
Дата: 16.01.23 10:24
Оценка: :)))
Здравствуйте, rudzuk, Вы писали:

D>> Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.


R>Локер тебя спрашивать не будет, хочешь ты им пользоваться или нет


В таком случае вопрос у ТС не полный.
Надо добавить несколько пунктов:

Спасибо за внимание
Re[4]: Вписать окно в монитор
От: RonWilson Россия  
Дата: 16.01.23 10:36
Оценка: :))
Здравствуйте, Doom100500, Вы писали:

D>Надо добавить несколько пунктов:


зря написали, он сейчас эти вопросы chatgpt задаст
Re: Вписать окно в монитор
От: wildwind Россия  
Дата: 16.01.23 12:40
Оценка: 9 (1)
Здравствуйте, пффф, Вы писали:

Offtopic: Не стоит навязывать пользователю свои предпочтения.
Re[2]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 12:51
Оценка:
Здравствуйте, wildwind, Вы писали:

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


W>Offtopic: Не стоит навязывать пользователю свои предпочтения.


В некоторых случаях — можно
Re[2]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 12:52
Оценка:
Здравствуйте, Doom100500, Вы писали:

П>>Двигать окно нельзя, ну, или, после перемещения, я всё равно буду восстанавливать ту конфигурацию, которая мне нужна — почти во весь экран, оставив по периметру вид на рабочий стол. Как это отслеживать?

П>>Текущий дисплей определяется по left-top позиции окна?

D>Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.


Есть довольно большая вероятность того, что ты пользовался такой программой и был вполне доволен
Re[3]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 12:53
Оценка:
Здравствуйте, rudzuk, Вы писали:

D>> Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.


R>Локер тебя спрашивать не будет, хочешь ты им пользоваться или нет


Локер позволяет перемещать своё окно? Локер оставляет доступ к панели задач и рабочему столу? Локер работает только на одном мониторе?
Re[4]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 12:54
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>В таком случае вопрос у ТС не полный.

D>Надо добавить несколько пунктов:

D>


Спасибо за список, конечно, но на эти вопросы ответы я давно знаю
Re: Вписать окно в монитор
От: alpha21264 СССР  
Дата: 16.01.23 12:56
Оценка:
Здравствуйте, пффф, Вы писали:

П>Привет!


П>Мне надо, чтобы софтина запускалась примерно во весь экран...

Skip
П>Как найти в этом мире своё место на мониторе пользователя?

Просто запоминай размер окна, который был у пользователя в прошлой сессии.
Пусть он расположит окно как ему удобно.
А ты просто запомни его предпочтения.
Да, ответ из области психологии, а не из области программирования.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 13:00
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Просто запоминай размер окна, который был у пользователя в прошлой сессии.

A>Пусть он расположит окно как ему удобно.
A>А ты просто запомни его предпочтения.
A>Да, ответ из области психологии, а не из области программирования.

Есть некоторый класс приложений, для которых это не самая хорошая идея. О том, что ты написал, я прекрасно знаю, но в данном случае я решил, что это будет хуже
Re[4]: Вписать окно в монитор
От: rudzuk  
Дата: 16.01.23 13:28
Оценка:
Здравствуйте, пффф, Вы писали:

п> D>> Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.


п> R>Локер тебя спрашивать не будет, хочешь ты им пользоваться или нет


п> Локер позволяет перемещать своё окно? Локер оставляет доступ к панели задач и рабочему столу? Локер работает только на одном мониторе?


Улыбайтесь, господа. Улыбайтесь! (c)
avalon/3.0.2
Re[3]: Вписать окно в монитор
От: Doom100500 Израиль  
Дата: 16.01.23 13:38
Оценка:
Здравствуйте, пффф, Вы писали:

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


П>>>Двигать окно нельзя, ну, или, после перемещения, я всё равно буду восстанавливать ту конфигурацию, которая мне нужна — почти во весь экран, оставив по периметру вид на рабочий стол. Как это отслеживать?

П>>>Текущий дисплей определяется по left-top позиции окна?

D>>Упаси меня Зевс хоть когда-нибудь пользоваться программой, которая такое вытворяет.


П>Есть довольно большая вероятность того, что ты пользовался такой программой и был вполне доволен


Можно пример, пожалуйста?
Спасибо за внимание
Re[4]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 13:41
Оценка:
Здравствуйте, Doom100500, Вы писали:


П>>Есть довольно большая вероятность того, что ты пользовался такой программой и был вполне доволен


D>Можно пример, пожалуйста?


Нельзя
Re: Вписать окно в монитор
От: bnk СССР http://unmanagedvisio.com/
Дата: 16.01.23 23:45
Оценка:
Здравствуйте, пффф, Вы писали:

П>Как найти в этом мире своё место на мониторе пользователя?


В Windows 11 из коробки идет оконный менеджер (для широких мониторов в частности)
Он наплюет на все твои поползновения и поставит окно туда и в таком виде, как сказал пользователь.

Я вот про эту кнопку



В общем Кац предлагает сдаться
Отредактировано 16.01.2023 23:48 bnk . Предыдущая версия .
Re[2]: Вписать окно в монитор
От: пффф  
Дата: 16.01.23 23:47
Оценка:
Здравствуйте, bnk, Вы писали:

П>>Как найти в этом мире своё место на мониторе пользователя?


bnk>В Windows 11 из коробки идет оконный менеджер (для широких мониторов в частности)


А для XP есть рецепт? Или, хотя бы для висты или семёрки?
Re[3]: Вписать окно в монитор
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.01.23 00:01
Оценка:
Здравствуйте, пффф, Вы писали:

bnk>>В Windows 11 из коробки идет оконный менеджер (для широких мониторов в частности)


П>А для XP есть рецепт? Или, хотя бы для висты или семёрки?


Я сам это не делал (или уже забыл, если даже делал), сорри не помогу.
Но то что эта фигня в 11 переписывает координаты — определенно (и для меня как пользователя это кстати хорошо)

Если проблема в том что оно само на себя действует, можно попробовать сделать через какой-нибудь PostMessage например,
чтобы оно не прямо из обработчика перемещения вызывалось, когда еще все в процессе, а типа с задержкой.

Еще возможно тебе нужно учитывать потенциально разный DPI на разных мониторах.
Обрабатывает ли это приложение прописывается в его манифесте,
возможно система тебе просто информации не дает нормальной про координаты,
поэтому ты получаешь странные цифры.

Но это чисто мысли, код не напишу, ну или так же гуглить буду

Да, про широкий монитор — у меня например 32:9 (3.5)
Отредактировано 17.01.2023 0:06 bnk . Предыдущая версия . Еще …
Отредактировано 17.01.2023 0:05 bnk . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.