Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2 3 4

Как принять сообщения в класс без окна?


dmk ©   (03.04.17 11:05[60]

>было бы чтоб работало и на 32 тоже
Писать под win32 сей проект неудобно. Там ограничение 4 гб. Делать смешанную адресацию неудобно и получаются медленные процедуры. 32 уже потихоньку уходит в прошлое, хотя и не так быстро как 16 бит.


D7   (03.04.17 11:09[61]

И вы реально можете занять все 4ГБ? У меня вот ни одна программа, даже мощные CAD-системы и крутые игры - не достигают 4ГБ. %))


dmk ©   (03.04.17 11:12[62]

>Непонятно тока что за "трансляция".
Windows не дает без окна доступ к очереди сообщений, поэтому приходится делать привязку к оконной процедуре. Типа врезки трубы в магистраль. Хотя можно изобрести что-то вроде своего контроллера. Если мышь в области, то запускать таймер и делать выборку позиции через winapi.GetCursorPos и клавиши через GetAsyncKeyState. Тогда вообще трансляция не нужна.

А под 32 не переделаю. Смысла нет, да и наоборот я ее переделывал с 32 на 64.


dmk ©   (03.04.17 11:17[63]

>И вы реально можете занять все 4ГБ?
У меня Photoshop64, 3ds max64, Illustrator64 и т.д все используют намного больше 4 гб.
У меня 32 стоит. Фотошо например 20 Гб легко съедает.


D7   (03.04.17 12:02[64]

Не пользую фотошопы - рисовать не умею. Для элементарных обработок вполне хватает XnView/Gimp.
Что ж вы с ними делаете такое?)) У меня модель летательного аппарата со всеми мельчайшими деталями и сложной кинематикой стока не жрёт))
Хотя не тестил скока будет жрать если поставить x64 ОС и такую же версию CAD-системы... Может с этой же моделью сразу же в три раза больше памяти хапнет просто так?

ох... Короче так.
* Делаем класс DMKApplication, который: хранит список "окон" верхнего уровня программы, умеет запускать очередь сообщений, при закрытии всех окон выходит из программы (закрывает).
* Делаем класс DMKWindow, который: является обёрткой над окнами верхнего уровня Windows, умеет создавать и уничтожать окна, получает управление от мыши и клавиатуры, отслеживает изменение своего состояния (позиция, размеры, итп), хранит и обрабатывает список "слоёв", выводит на себя итоговую буфер-картинку.
* Делаем класс DMKLayer, который: является логической единицей выводящей что-либо на битмап, имеет классические методы и события. Возможно абстрактный, с какими-то потомками типа "кнопка", "текст", "чекбокс", etc.
В простейшем случае имеем: один объект DMKApplication, один объект DMKWindow, некоторое количество объектов DMKLayer. Итого в программой будет создано один HWND и при перерисовке будет браться один HDC за раз и тут же освобождаться.
Минимальная привязка к ОС, минимальное потребление системных как их там, максимальная скорость работы, переносимость программы на любую платформу через просто замену реализации нескольких методов DMKApplication и DMKWindow, и всё своё.


Игорь Шевченко ©   (03.04.17 12:13[65]

D7   (03.04.17 11:09) [61]


> И вы реально можете занять все 4ГБ? У меня вот ни одна программа,
>  даже мощные CAD-системы и крутые игры - не достигают 4ГБ.
>  %))


Это говорит о том, что с программами, занимающими больше 4-х Гб ты не знаком. Ну и что ? Займись фотографией, сразу познакомишься :)

dmk ©   (03.04.17 11:05) [60]


> 32 уже потихоньку уходит в прошлое


Бред какой. Программ, которым реально нужен большой объем памяти, максимум 1 процент от всего.


dmk ©   (03.04.17 12:14[66]

>будет браться один HDC за раз и тут же освобождаться.
DC - контекст - это просто битмап. Его не надо постоянно освобождать. Взял DC и пользуй его. Надоело - ReleaseDC. Это просто ссылка. Это нужно было в windows 3.11-95, а после win2000 уже не нужно.
На самом деле все уже работает. Если запустите примеры, то увидите. Только win64 надо.


D7   (03.04.17 12:37[67]

Хех, "занимающими" или "жрущими"?)) Вся папка CAD-программы занимает на диске около 23ГБ.
Фотографией? У вас есть фотка весящая 4ГБ в распакованном виде?)

MSDN указывает делать BeginPaint/EndPaint. Я слушаюсь MSDN, во избежание, как говорится, это их система.
HDC это не битмап, в него может быть выбран битмап, а может и не быть выбран. Как и остальные HGDI объекты.

ну... Я предлагал помочь. Как хотите. Но покачто у вас что-то делается не совсем так. В плане WinAPI.


Игорь Шевченко ©   (03.04.17 14:06[68]

D7   (03.04.17 12:37) [67]


> У вас есть фотка весящая 4ГБ в распакованном виде


Конечно. И не одна. Кроме фоток еще есть базы данных. И не одна. Но это уже оффтопик. Я просто прошу поверить, что нужных 64-х разрядных программ достаточно.


dmk ©   (03.04.17 14:08[69]

>не совсем так. В плане WinAPI.
У меня все в памяти делается, а не в винапи.
Мне от WInApi только несколько сообщений надо.

А за помощь спасибо! Все будет учтено.


dmk ©   (03.04.17 14:12[70]

>У вас есть фотка весящая 4ГБ в распакованном виде?)
Вы просто не сталкивались видимо с такими задачами: БД, Видео, Фото, Полиграфия, Архивы и т.п. У меня архивы несколько сот гигабайт в упакованном виде. Работаю дизайнером. Есть файлы более 4-х Гб. Немного, но есть.


Eraser ©   (03.04.17 19:24[71]


> dmk ©  

прочитал ветку, так и не понял - зачем?
без окна в современной винде все равно отображать ничего не выйдет, для отображения в Windows нужно окно (Window), для него и нужно написать платформенно-зависимую прослойку, которая будет отображать и принимать ввод. к чему велосипеды - не понятно.


dmk ©   (03.04.17 23:41[72]

>без окна в современной винде все равно отображать ничего не выйдет
Там в [57] уже все вышло :) Конечно же все отображается в окне.


Eraser ©   (04.04.17 10:41[73]


> dmk ©   (03.04.17 23:41) [72]

все равно не понятно, зачем требовалось, что требовалось и что в итоге получилось.
по-моему усложнение себе жизни.


Страницы: 1 2 3 4 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо