|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 8
|
||||||
Классы03.11.2012, 02:46. Показов 935. Ответов 12
Метки нет (Все метки)
Доброго времени суток! Реализую систему окон и контролов.
Вот пример:
А именно x и y, что бы отобразить контрол относительно их на окне. Подскажите пожалуйста, как лучше всего реализовать такую систему? В конструкторе класса Control передавать на них указатели? Может быть возможно лучше спроектировать данную задумку?
0
|
||||||
| 03.11.2012, 02:46 | |
|
Ответы с готовыми решениями:
12
Непонятна тема (Классы содержащие другие классы, как данные члены )
|
|
Неэпический
|
||||||
| 03.11.2012, 02:55 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 8
|
|
| 03.11.2012, 02:59 [ТС] | |
|
Спасибо, но такое не подойдет.
Окон будет много. И класс таких окон будет называться всегда по разному. Необходимо спроектировать такую структуру кода, что бы максимально удобно собирать окна с разными наборами контролов.
0
|
|
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
| 03.11.2012, 03:09 | |
|
Ritert, а в какой момент времени вам будут нужны х и у? я имею в виду, если, допустим, координаты нужны только в методе show, то и передавать их только туда
1
|
|
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 8
|
|||
| 04.11.2012, 00:33 [ТС] | |||
|
Но этот способ адекватный при условии, что нам понадобится доступ к не большому количеству переменных из класса Window в классе Control. Каким образом стоит проектировать код в таких ситуациях?
0
|
|||
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
| 04.11.2012, 01:57 | |
|
эти координаты константны или меняются? нужно ли каждый раз при изменении координат дергать методы у контролов? или они вызываются при других условиях? как часто вызываются эти методы?
короче, подробностей бы. Сейчас могу посоветовать обернуть координаты в отдельную структуру и работать далее с ней
1
|
|
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 8
|
||
| 04.11.2012, 02:20 [ТС] | ||
|
Это переменные, которые хранят положение верхнего левого угла окна относительно экрана.
Контролы должны так же менять свое положение при перемещении окна в другое место. При такой ситуации Вы подсказали оптимальное решение. Передавать переменные через параметры в функцию Control::draw.
0
|
||
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|||||||
| 04.11.2012, 02:46 | |||||||
|
Ritert, нет. Я про
Если потом параметров станет больше и эти параметры можно будет логически объединить в одну структуру, то это станет решениям для:
1
|
|||||||
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 8
|
|
| 04.11.2012, 03:08 [ТС] | |
|
Спасибо большое. Действительно хороший вариант
![]() Если я передам структуру по ссылке или указателю, я смогу получить доступ к данным в функции Control::draw? Control::draw(Coordinates * corner); Control::draw(Coordinates & corner); Или необходимо передавать структуру только по значению? Control::draw(Coordinates corner);
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||
| 04.11.2012, 03:50 | |||||||
|
Вы когда в машине едите , разве отталкиваетесь от земли ногами ? Вашему телу нужно знать где находится сиденье . Всего-то . Окну нужно знать координаты относительно экрана . Контролу нужно знать свое положение относительно окна
контрол будет располагаться в левом углу окна. Зададите отрицательные координаты : X = -control.Width . Y = -control.Heigth , контрола не будет видно . Но он все равно будет принадлежать окну . При перемещении окна контрол перемещается вместе с ним .
0
|
|||||||
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 8
|
|||
| 04.11.2012, 04:35 [ТС] | |||
|
Так вот и мне нужно в объектах контролов получать доступ к начальным координатам окна что бы перемещать контролы за окном. И что бы нарисовать контрол в нужном месте мне необходимо: x окна + смещение control_x относительно оконного x y окна + смещение control_y относительно оконного y А x окна и y окна находится не в объекте контрола.
0
|
|||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||||||
| 04.11.2012, 06:49 | ||||||||||||
0
|
||||||||||||
| 04.11.2012, 06:49 | |
|
Помогаю со студенческими работами здесь
13
Наследование, базовые классы и производные классы
Классы, включающие другие классы Классы возможностей(Mixin классы) классы/дочерние классы/методы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|