![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
немогу понять принцып разработки на WinAPI. Изучение начал с книжки Эффективное программирование на WinAPI, но щас нахожусь в замешательстве. Про основы основ понятно, непонятно про то как с ними дальше работать.
К примеру функция обратного вызова callback, мы создаем и привязываем одну для главного окна, и работаем в ней, но если в этом окне у нас есть еще окна, то для них нужны свои функции или таже самая ? С чего все начилось: нужно элементарный интерфейс для программы написать: Главное окно, в нем поле 28на28 пикселей в котором можно рисовать, под ним кнопка, под ней текстовое поле вывода. И вот непонимаю как мне связать все это воедино, чтобы все работало по такому процессу: Запускаем программу, рисуем в окне 28на28 чтолибо, потом нажимаем на кнопку, то что было нарисовано в окне считывает куданибуть, мы с ним проводим ряд действий и в текстовое поле выводим какойто результат. Если кому нелень набросайте варианьты как это реализуеться чтоб я мог понять от чего отталкивать и искать то что нужно, а то я незнаю с какой стороны подойти :( Может кто знает хорошие ресурсы где про вин апи написано вроде как для начинающих но с точки зрения реальных задач. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
1 класс окна - 1 функция
ловишь wm_mousemove для рисования, и wm_command для нажатия кнопки все есть в мсдн, примеры тоже |
|||
|
||||
| cupper |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
наверно я непроально описал проблему. Как создать в главном окне еще одно окно чтобы в том можно было рисовать Вот что есть
я уверен что сделал неправельно, поправьте. Немогу понять почему окно hPaint таковаже цвета как и главное окно, хотя задаю другой. И можно канибуть равку вокруг него сделать не проста черной полосой а чтонибуть поярковыраженней, впуклось чтоли какуюниьуть А вот значит примерный код для рисования
Его нужно реализовать в функции каллбак для дочернего окна hPaint или достаточно изменить в главной функции код
на
? Это сообщение отредактировал(а) cupper - 1.4.2009, 21:23 |
||||||||||
|
|||||||||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
у тебя два окна, но одна процедура обработки сообщений для него. а в ней ты никак не идентифируешь само окно и его цвет не меняешь. Где ты его меняешь-то? есть вообще говоря такая штука как субклассинг и суперклассинг.... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
а зачем 2 окна? рисуй на поверхности главного %)
|
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
ну я думал 2 окна логичсески правильно если рисовать нужно не проста на территории главного, а в какойто его ограниченной плоскости.
Кстати я чета совсем неподумал о том чтобы вместо второго испольщовать проста нарисованый квадрат и сохранять координаты рисунка относительно этого квадрата, чтобы получилось какбытто это окно внутри окна, над попробывать сделать так. А как сделать впукорст (утопленность) прямоугольника ? |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
cupper, выпуклость и т.п. рисуется темными и светлыми уголками
но вообще для этого есть STATIC |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
а почему ето
не вызывает немедленно обновление содердимого окна, т.е. UpdateWindow(hwnd) неработает О_о --------------- проблема была решена написанием вместо UpdateWindows () InvalidateRect(hwnd, &PS, true), но вопрос в силе, почему первое неработает ? Это сообщение отредактировал(а) cupper - 2.4.2009, 23:20 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Потому что UpdateWindow просто посылает WM_PAINT невалидным регионам. Для этого нужно, что бы они были!
Именно Invalidate помечает регионы как нуждающиеся в перерисовке. Invalidate, кстати, вызывает вовсе не немедленное обновление. Немедленное будет, если после Invalidate вызвать Update. Но это редко когда действительно нужно. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |