Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2023, 21:33   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию Диалоговое окно. Координаты.

Здравствуйте! Тема вопроса такова, координаты места вывода в диалоговом окне, когда я создаю шаблон диалогового окна, координаты одни, если мне нужно вывести график в этом окне, и я вызываю функцию для построения графика из функции окна диалога, то в функции построения графика координаты для окна диалога совершенно другие. Я так понимаю, это координаты экрана, а не окна, правильно? Если при создании шаблона диалогового окна сохранить координаты места, куда я бы хотел вывести некий график, то, как ясно из сути вопроса, график рисуется совершенно не там, где нужно. Как с этим бороться?
apofioz вне форума Ответить с цитированием
Старый 13.02.2023, 22:03   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Если вы после создания окна диалога получаете hDC связанный с этим окном, тогда координаты для рисования будут связаны с клиентской областью этого окна. Отсчитываться от левого верхнего угла этой области и оси будут направлены вправо (ось X) и вниз (ось Y).
Если для рисования вы получаете hDC от 0 дескриптора (экран), тогда координаты в функциях рисования будут связаны с экраном.
macomics вне форума Ответить с цитированием
Старый 13.02.2023, 22:33   #3
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Если вы после создания окна диалога получаете hDC связанный с этим окном, тогда координаты для рисования будут связаны с клиентской областью этого окна.
Так и делаю. Из функции диалога вызываю функцию для построения графика, в эту функцию передаю дескриптор окна диалога и дескриптор контекста устройства, которое создал в функции диалогового окна. Но получается какая-то лажа, вроде бы координаты одни и те же, но вывод, выводимая информация оказывается не там, где нужно.
apofioz вне форума Ответить с цитированием
Старый 13.02.2023, 22:39   #4
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Я в функции CreateDlg сохраняю координаты той области, куда я хочу выводить график в структуре RECT, которая объявлена глобально так что в принципе дескриптор контекста можно и не передавать. Не понимаю, почему фигура не попадает в ту область, координаты которой указаны.
apofioz вне форума Ответить с цитированием
Старый 13.02.2023, 22:48   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Потому что координаты надо перевести в пиксели через MapDialogRect
macomics вне форума Ответить с цитированием
Старый 13.02.2023, 22:54   #6
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Потому что координаты надо перевести в пиксели через MapDialogRect
Это нужно делать в функции вывода графика?
apofioz вне форума Ответить с цитированием
Старый 13.02.2023, 22:55   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Это достаточно сделать один раз при получении координат в RECT. Потом координаты будут переведены в ней в пиксели и будут соответствовать выводу на экран.
macomics вне форума Ответить с цитированием
Старый 13.02.2023, 23:04   #8
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Это достаточно сделать один раз при получении координат в RECT.
Тогда в функции CreateDlg() именно там я пытаюсь вычислить координаты, куда будет выведен график.
apofioz вне форума Ответить с цитированием
Старый 14.02.2023, 17:04   #9
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Ещё проблемка нарисовалась, когда я вывожу график в диалоговом окне, то, когда я выбираю данные для первого отображения, то всё работает удовлетворительно, как только я выбираю другие данные график не перерисовывается, а исчезает. Так как в данном случае график - это цилиндр и, по условию, в верху и в низу цилиндра должны быть идентификационное данные(я их пытаюсь вывести в объекты "static") , то график исчезает и одна идентификационная строка над
графиком, дело в том, что я пытаюсь сделать так чтобы с движением графика строка была строго над ним на расстоянии, скажем, высоты символа. Что это за косяк такой?
apofioz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалоговое окно и временное окно apofioz Win Api 2 22.01.2023 03:48
Диалоговое окно на js maksim_serg JavaScript, Ajax 12 19.05.2015 16:29
Диалоговое окно Antoshkaswimm Microsoft Office Excel 3 23.12.2012 23:01
Диалоговое окно Михаил Юрьевич Общие вопросы Delphi 11 01.06.2009 20:31
Диалоговое окно Beggins Общие вопросы C/C++ 3 09.05.2008 05:03