Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / 1) Класс субклассирования окон? 2) Рисование в чужом окне? / 14 сообщений из 14, страница 1 из 1
03.07.2005, 21:18
    #33147019
СЛамер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
Здравствуйте!
Честно признаюсь, что к решению описанных ниже проблем еще реально не приступал - пока только теоретически готовлюсь, учу матчасть, так сказать. Помогите пожалуйста, чтобы путь мой, тернистый (правда, иногда и поросли малины попадаются:) не был в ненужную мне сторону. Спасибо заранее...

1) Есть ряд окон, которые мне необходимо посадить на сабклассинг. Посадить одно окно - не проблема: получаем адрес оконной процедуры, меняем на свой, обрабатываем сообщения, вызываем стандартную процедуру.
Но вот ситуация усложняется: надо субклассировать два, три, море окон, при этом для каждого окна должно выполняться действие, необходимое к выполнению именно в данном конкретном окне. Т.е. есть набор иконок, которые есть необходимость рисовать напрямую (это из второго вопроса данного топика) в клиентской части окна, при этом для каждого окна необходимо рисовать какую-то свою иконку.
Первое, что пришло на ум это создать две, три, море оконных процедур, к которым подключать открываемые окна. Но, естественно, должно существовать менее глупое решение. Что-то связанное с классами... Но как это "что-то" прикрутить фактически к окнам, с использованием API и средствами C++ (а именно так стоит вопрос, хотя акромя элементарных языковых конструкций Сей я ничего не знаю, к шожалению) - для меня загадка. Помогите отгадать, пожалуйста...

И вопрос №2, который не совсем в тему форума, но здесь ведь есть модератор, если что? ;)
2) Есть необходимость рисовать в окнах, мною не созданных (ну, или, вернее, не совсем мною созданных - формы VBA в офисных приложениях, которые создал я), графические элементы - иконки, там, всякие... Делать это нужно в клиентской области окна по окончании его стандартной прорисовки, т.е. чтобы отображаемые мной "картинки" в любом случае перекрывали бы все то, что было рисовано "настоящим" окном.
Делать это собираюсь через сабклассинг (вопрос №1), при этом иконки в каком-то виде (в каком?) лежат в спроецированном файле и каким-то образом (получение совместимого контекста или контекста непосредственно окна?) "рисует" валяющуюся в файле иконку на окно, да так, чтобы существовали "прозрачные" пикселы (как их задать в иконке и каким методом скопировать в контекст?). А еще бы возможность "засерения"... хм... ну, когда кнопка становится недоступной, она "засерается"... "засереется"... ну вообщем, становится серенькой... Так вот, как бы не хранить еще и такую вот иконку, а получать ее при копировании в контекст устройства?

Знаю, написал много, но читать тоже умею, поэтому, если можете, ответьте ламеру или пошлите куда-нить... Где почитать на эти темы можно...

Помогите кто чем Бог простит.
Спасибо.
...
Рейтинг: 0 / 0
04.07.2005, 00:02
    #33147096
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
1) Не понял, такая простая мысль, как хранить в каждом конкретном окне конкретную иконку и ее рисовать не пришла в твою голову ? При этом класс один, универсальный, процедура оконная одна, иконки разные.
...
Рейтинг: 0 / 0
04.07.2005, 00:03
    #33147097
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
СЛамер
И вопрос №2, который не совсем в тему форума, но здесь ведь есть модератор, если что? ;)

Нет здесь модератора !
...
Рейтинг: 0 / 0
04.07.2005, 00:12
    #33147099
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
СЛамер2) Есть необходимость рисовать в окнах, мною не созданных (ну, или, вернее, не совсем мною созданных - формы VBA в офисных приложениях, которые создал я), графические элементы - иконки, там, всякие... Делать это нужно в клиентской области окна по окончании его стандартной прорисовки,

Нет. Во время его стандартной прорисовки. По окончании ты скорее всего ничего не прорисуешь. Т.е. прорисовка (WM_PAINT) должна быть одна, как это сделать - дело твое, от создания ActiveX-а, от которого будет унаследован класс в VB до экспорта в VB конкретно одной функции прорисовки (обработчика WM_PAINT)

СЛамер
т.е. чтобы отображаемые мной "картинки" в любом случае перекрывали бы все то, что было рисовано "настоящим" окном.
Делать это собираюсь через сабклассинг (вопрос №1), при этом иконки в каком-то виде (в каком?) лежат в спроецированном файле и каким-то образом (получение совместимого контекста или контекста непосредственно окна?)

контекста WM_PAINT,
HDC BeginPaint(
HWND hwnd, // handle to window
LPPAINTSTRUCT lpPaint // paint information
);

На счет subclassing - лучше не мудрить самому, а использовать MFC или ATL или WTL, там subclassing реализован, причем заведомо ПРАВИЛЬНО.
...
Рейтинг: 0 / 0
04.07.2005, 01:57
    #33147118
СЛамер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
MasterZiv1) Не понял, такая простая мысль, как хранить в каждом конкретном окне конкретную иконку и ее рисовать не пришла в твою голову ? При этом класс один, универсальный, процедура оконная одна, иконки разные.Не могу я хранить в каждом конкретном окне иконки, т.к. иконки уже хранятся в файле, который спроецирован на процесс. Смысл всего затеянного как раз в том, чтобы иконки, хранящиеся в этом самом файле, посредством C++ DLL рисовать (именно просто рисовать, отображать на VBA-форме) по указке VBA-кода.
Т.е. VBA-код вызывает из C++ DLL функцию
Код: plaintext
СкажиМне_hWnd_и_ИндексИконкиИЯТебеЕеБудуРисовать(...)
MasterZivНа счет subclassing - лучше не мудрить самому, а использовать MFC или ATL или WTL, там subclassing реализован, причем заведомо ПРАВИЛЬНО.К сожалению, все эти страшные аббривиатуры для меня не более чем аббривиатуры :( И получается, что чтобы добраться из пункта А в пункт Б НЕ пешком, мне надо либо из того что есть (общая практика программирования + основные языковые конструкции Сей) собрать ласипет, либо выбрать ИЛ-96 или БОИНГ-347 или СУ-37 (что само по себе не простая задача), и освоить один из них. Я конечно понимаю, что лучше день потерять, а потом за пять минут долететь, но ласипет для меня в данной ситуации ближе - мне легче бу... впрочем, прекрасно понимаю, что все аргументы за использование стандартных библиотек, но если дело обстоит как "изучи MFC или ATL или WTL", то для меня это полнейший верняк не сделать ничего... Опять же к шожалению :(

... вообще, вопросов в контексте топика очень много и вариантов решения еще больше (от незнания), поэтому, дабы не мучал тут никого (тем более при отсутствии модераторов:) глупыми вопросами, одназначно указывающими на мою неготовность решать подобного рода задачи, дайте ссылочки по поднятой мной теме, а то только по одному "WM_PAINT" гугл мне столько нафигачил, что я даже читать не решился...
Еще раз спасибо!
...
Рейтинг: 0 / 0
05.07.2005, 19:26
    #33151095
СЛамер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
Либо сссссылками не богаты, либо текста многовато... Ну и на том ссстою... :)
в смысле спасибо...
...
Рейтинг: 0 / 0
06.07.2005, 10:57
    #33151655
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
автортолько по одному "WM_PAINT" гугл мне столько нафигачил, что я даже читать не решился...
а зря, без этого не выйдет рисования в С++
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
06.07.2005, 11:02
    #33151666
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
Petro123 wrote:
> автор
> только по одному "WM_PAINT" гугл мне столько нафигачил, что я даже
> а зря, без этого не выйдет рисования в С++

а какая связь между с++ и wm_paint?
вполне можно без wm_paint рисовать в с++ :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
06.07.2005, 11:18
    #33151703
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
alex_k
Petro123 wrote:
> автор
> только по одному "WM_PAINT" гугл мне столько нафигачил, что я даже
> а зря, без этого не выйдет рисования в С++

а какая связь между с++ и wm_paint?
вполне можно без wm_paint рисовать в с++ :-)
Posted via ActualForum NNTP Server 1.2
у него задача достаточно "извращённая"
...
Рейтинг: 0 / 0
06.07.2005, 19:18
    #33153168
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
Petro123 alex_k
Petro123 wrote:
> а зря, без этого не выйдет рисования в С++
а какая связь между с++ и wm_paint?
вполне можно без wm_paint рисовать в с++ :-)
у него задача достаточно "извращённая"
Так а при чем здесь С++? :) Вот WM_PAINT - ключевое слово, а каким инструментом с этим сообщением будут работать - дело десятое.
...
Рейтинг: 0 / 0
07.07.2005, 00:29
    #33153368
СЛамер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
>Так а при чем здесь С++? :) Вот WM_PAINT - ключевое слово, а каким инструментом с этим сообщением будут работать - дело десятое.

Это при том, что мне это надо сделать именно в этой среде разработки. Вот я и спрашивал возможные ссылки на возможные примеры реализации данной задачи средствами C++.
Ну да уже начал разбираться самостоятельно (в смысле без примеров кода) и пока все идет именно так, как и должно было (можно я не буду говорить как именно?:)
Спасибо всем откликнувшимся. Тему можно считать закрытой...
...
Рейтинг: 0 / 0
07.07.2005, 15:47
    #33155023
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
White Owl Petro123 alex_k
Petro123 wrote:
> а зря, без этого не выйдет рисования в С++
а какая связь между с++ и wm_paint?
вполне можно без wm_paint рисовать в с++ :-)
у него задача достаточно "извращённая"
Так а при чем здесь С++? :) Вот WM_PAINT - ключевое слово, а каким инструментом с этим сообщением будут работать - дело десятое.
IMHO если ездишь на Ferrari то не надо ездить на 1 передаче. События OS именно в С++ и надо изучать. Иначе другой язык надо выбирать (таблицы можно и в Word'e делать, но....)
...
Рейтинг: 0 / 0
07.07.2005, 18:05
    #33155512
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
Petro123События OS именно в С++ и надо изучать. Иначе другой язык надо выбирать (таблицы можно и в Word'e делать, но....)
А я вот понять никак не могу: Что общего между событиями ОС и конкретным языком? Тем более что предлагаемый язык как раз стремится абстрагироваться от событий ОС.
...
Рейтинг: 0 / 0
08.07.2005, 06:18
    #33155869
VNS
VNS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1) Класс субклассирования окон? 2) Рисование в чужом окне?
Скорей не между языком и событиями ОС, а между платформой ( Win32) и событиями.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / 1) Класс субклассирования окон? 2) Рисование в чужом окне? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]