Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > MDI в WinAPI, все окна содержат одно и тоже!


Автор: radarrulez 10.11.2007, 01:16
Вообщем, такая проблема, в приложение надо чтобы рисовались прямоугольники, они рисуються но в каждом окне одно и тоже, приложение MDI, WinAPI. Вопрос как решить эту проблему ?

Добавлено через 1 минуту и 46 секунд
вот файл

Автор: ama_kid 10.11.2007, 18:49
Цитата(radarrulez @  10.11.2007,  01:16 Найти цитируемый пост)
как решить эту проблему

Читаем:
Цитата(radarrulez @  10.11.2007,  01:16 Найти цитируемый пост)
надо чтобы рисовались прямоугольники

Цитата(radarrulez @  10.11.2007,  01:16 Найти цитируемый пост)
они рисуються

И в чем, собственно, проблема?


Автор: ppoger 11.11.2007, 03:33
в том то и проблема, что все рисуется одно и тоже, а надо чтоб в каждом окне было нарисовано что то свое. (я так понял). В книге Петзольда Программирование для Вин95 показано, как решать ету проблему. Собсна прикрепляю оттуда пример.

Автор: radarrulez 11.11.2007, 17:21
Не ну пример петзольда я изучил, делал на его основе рисование, но в каждом окне попрежнему оставалось одно и тоже, как никрути! Я просто непойму что отвечает за то что в каждом окне рисуеться одно и тоже! 

Автор: ama_kid 11.11.2007, 17:46
radarrulez, просто рисуется и запоминается один прямоугольник, общий для все окон, поэтому оконные процедуры всех окон читают данные этого прямоугольника и рисуют его... чтобы сделать индивидуальные прямоугольники, (навскидку!) надо будет запоминать положение каждого нарисованного прямоугольника с привязкой к конкретному окну, допустим можно сделать динамический массив координат прямоугольников (а лучше - отдельный класс, который будет этим заниматься). И в обработке сообщения WM_PAINT проходить по массиву и рисовать только те прямоугольники, которые относятся к данному окну.

Автор: ppoger 11.11.2007, 19:58
2radarrulez не знаю, по какому примеру ты делал, т.к то что описано у петзольда в твоем коде я не заметил. ты хоть скачал то че я выложил? там ето сделано так: создана структура для однотипного окна, созданы поля, для которых требуется уникальность данных. потом функцией SetWindowLong запонималось данная структура для каждой копии окна, функцией GetWindowLong возвращалось значение. Так что изучи пример ВНИМАТЕЛЬНО, там все нормально описано. короче я не умею объяснять нифига, проще пример просмотри внимательно.

Автор: radarrulez 11.11.2007, 20:56
Да, я уже просёк что дело в той структуре LPHELLODATA, догнал потихоньку! Спасибо всем кто помог, если что исчо напишу если будут вопросы !

Автор: radarrulez 12.11.2007, 21:30
Блин так и не просёк, помогите плз, немогу сделать так чтобы окна вели себя по разному! НЕПОЙМУ В ЧЁМ ФИШКА ! уже что только непробовал, посомтрите кому невлом проектик, как сделать так чтобы рисовались разные прямоугольники в разных окнах, а не так чтобы нарисовал в одном и нарисовалось во всех (

Автор: ppoger 12.11.2007, 22:03
делать времени нет :( могу объяснить. у них есть структура, которая все запомимает. Ну тупо добавь в ету структуру вектор ректов (твои прямоугольники). нарисовал - запомнил. так для каждого окна. при вм паинт читаешь все ректы из вектора и отрисовываешь.

Автор: ama_kid 13.11.2007, 13:51
Цитата(radarrulez @  12.11.2007,  21:30 Найти цитируемый пост)
как сделать так чтобы рисовались разные прямоугольники в разных окнах, а не так чтобы нарисовал в одном и нарисовалось во всех 
Так что ли? (см. аттач)

Автор: ama_kid 13.11.2007, 13:51
блин, инет косячит

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)