Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление диалогом, как полноценным окном, через WndProc 
:(
    Опции темы
S.A.G.
Дата 21.6.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



С диалогами, конечно, все ясно. Просьба объяснить.


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
GremlinProg
Дата 21.6.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата

Как поместить элемент управления на главное окно, WinAPI

так же как это делают диалоги: создать элемент с помощью CreateWindow/Ex


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
S.A.G.
Дата 21.6.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Цитата(GremlinProg @  21.6.2009,  14:04 Найти цитируемый пост)
так же как это делают диалоги: создать элемент с помощью CreateWindow/Ex

А если их много, то как получить наглядность? Создать ресурс диалога и временно накидать туда, чтобы получить нужные координаты и внешний вид?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
GremlinProg
Дата 21.6.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



наглядность )
для наглядности и используют ресурсы диалогов

не совсем понял, S.A.G., уточняю: ты хочешь иметь возможность редактировать ресурс как в диалоге,
но работать с ним как с обычным окном, через WndProc?

если так, то смотри соседнюю тему,
Custom Dialog's - как раз такой случай: http://forum.vingrad.ru/forum/topic-263795.html


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
S.A.G.
Дата 21.6.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Цитата(GremlinProg @  21.6.2009,  14:37 Найти цитируемый пост)
ты хочешь иметь возможность редактировать ресурс как в диалоге,но работать с ним как с обычным окном, через WndProc?

Ya. Спасибки за хелп. smile А ты не мог бы объяснить тут? - Вопрос той темы мне не понятен.

Это сообщение отредактировал(а) S.A.G. - 21.6.2009, 14:45


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
S.A.G.
Дата 21.6.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



GremlinProg, поможешь?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
586
Дата 22.6.2009, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



1. Создай в диалоге Custom Control.
2. В свойствах контрола в поле Class Name укажи имя твоего класса.

В коде:
1. Вызови функцию RegisterClass (если класс не зарегистрирован)
2. Создай диалог.
PM   Вверх
S.A.G.
Дата 22.6.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



586, мне нужно на главном окне, а не на диалоге.


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Earnest
Дата 22.6.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



S.A.G., самый простой способ, не влазя в дебри процедур, сделать диалог дочерним в твоем главном окне. Т.е. создаешь ресурс диалога как обычно, только в свойствах ему чтавишь стиль чайлд. Далее, в главном окне создаешь диалог CreateDialоg, как дочерний по отношению к главному окну. У главного окна тебе потребуется реализовать только метод OnSize, чтобы растягивать лиалог на все окно (если надо, конечно).

Еще метод, для слегка маньяков.
Опять создаем диалоговый ресурс, загружаем его как ресурс DLGTEMPLATE, далее читаем и по его итемам создаем динамически контролы в главном окне. Совсем недавно я кому-то показывала код для чтения DLGTEMPLATE, поищи, если интересно.

Добавлено через 1 минуту и 7 секунд
Но первый способ, по-моему, лучше по дизайну, ибо отделяет главное окно (рамку) от его содержимого. Лучше, в том числе и чем подмена процедуры. И проще.


--------------------
...
PM   Вверх
GremlinProg
Дата 22.6.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(S.A.G. @  21.6.2009,  16:42 Найти цитируемый пост)
А ты не мог бы объяснить тут? - Вопрос той темы мне не понятен.

предлагаешь повторить то же самое?

просто напомню ссылку из MSDN: http://msdn.microsoft.com/en-us/library/ms...px#custom_boxes
все 6 абзатцев исключительно по теме, просто вчитайся
а по-русски, мы уже все обговорили

если у Alca есть желание, он может подправить свой код до рабочего состояния,
хотя устно мы уже и обговорили проблемные места

кстати, 586 предложил способ, при котором можно в ресурс добавить свой собственный визуальный компонент,
тоже отличный вариант

Добавлено через 9 минут и 59 секунд
Цитата(Earnest @  22.6.2009,  12:02 Найти цитируемый пост)
Но первый способ, по-моему, лучше по дизайну, ибо отделяет главное окно (рамку) от его содержимого. Лучше, в том числе и чем подмена процедуры. И проще.

так мы не о подмене процедуры говорим-то,
а о наследовании (суперклассинг),
по мне, так перекрыть таким образом диалог - гораздо проще, чем создавать в окне дочерний view, из ресурсов,
но тут, конечно хозяин-барин: правильно и так и эдак


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 22.6.2009, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



кстати, предлагаю сменить название топика, т.к. оно не отражает его суть,
например так: "Управление диалогом, как полноценным окном, через WndProc"
есть другие предложения, мнения?


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
S.A.G.
Дата 22.6.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Цитата(Earnest @  22.6.2009,  10:02 Найти цитируемый пост)
S.A.G., самый простой способ, не влазя в дебри процедур, сделать диалог дочерним в твоем главном окне. Т.е. создаешь ресурс диалога как обычно, только в свойствах ему чтавишь стиль чайлд. Далее, в главном окне создаешь диалог CreateDialоg, как дочерний по отношению к главному окну. У главного окна тебе потребуется реализовать только метод OnSize, чтобы растягивать лиалог на все окно (если надо, конечно).

Я над этим думал, т.е. получается накладка окна диалога на клиентскую область главного окна.

Я на даный момент пытаюсь сделать исключительно по-простому - просто создать шаблон диалога, идентичный главному окну, чтобы кидать на него контролы и получать таким образом требуемую наглядность и координаты контролов из файла .rc. Только вот проблемка - неудается подогнать размер диалога под размер главного окна. Никак не удается получить корректные диалоговые единицы. Вызов DialogBaseUnits дает 8 и 16 для x и y соответственно, GetTextMetrics - 7(!) и 16, а MapDialogRect переводит размеры и расположение диалога в совсем другие числа. Вопрос: как получить "правильные" диалоговые единицы?

Цитата(GremlinProg @  22.6.2009,  10:28 Найти цитируемый пост)
"Управление диалогом, как полноценным окном, через WndProc"

Согласен. По поводу твоей идеи почитаю, но не уверен, что мне хватит английского. Кажется, это самый прогрессивный подход к решению этой задачи.

Это сообщение отредактировал(а) S.A.G. - 22.6.2009, 11:35


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
GremlinProg
Дата 22.6.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



ок, название поменял


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
S.A.G.
Дата 22.6.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



...

Это сообщение отредактировал(а) S.A.G. - 22.6.2009, 13:35


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.