![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Решил сделать интересное диалоговое меню "О программе" с использованием directX, всё выводит при нажатии клавиши, всё красиво, только выйти из него нельзя.Подскажите пожалуйста как можно выйти из просмотра?Окно не двигается, при попытке закрыть не закрывается, а выход из всей программы только с помощью ctrl+alt+del
Код окна диалога Само окно сделано через ресурс файл.
Это сообщение отредактировал(а) toxx - 16.12.2009, 23:06 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Добавлено через 2 минуты http://msdn.microsoft.com/en-us/library/aa383690(VS.85).aspx Это сообщение отредактировал(а) Alca - 16.12.2009, 23:32 |
|||
|
||||
| smoke_man |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Здесь:
у тебя начинается бесконечный цикл. Это сообщение отредактировал(а) smoke_man - 16.12.2009, 23:40 -------------------- 0x2b|~0x2b |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Да я понимаю что так нужно, только у меня нет кнопки когда идёт RenderingDirect3D(); и при попытке нажать на завершение( на крестик) всё виснет вот скрин скрин ![]()
Да я знаю, чтобы RenderingDirect3D(); нужно чтоб был цикл, а вот как из него выйти я никак не пойму. Потомучто если без цикла, то попросту один раз вызовется и исчезнет directX. А мне нужно чтобы по требованию пользователя прекратилось проигрывание сцены.Но не могу найти условие для выхода.Что и прошу я, посоветовать как выйти из этого положения Это сообщение отредактировал(а) toxx - 17.12.2009, 13:42 |
||||
|
|||||
| mekhanikus |
|
|||
|
Вольноопределяющийся ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 16.6.2008 Где: Спасск-Дальний Репутация: 1 Всего: 1 |
А если в условие цикла поставить глобальную переменную.
Пока она ture цикл крутится. В case IDOK: делать переменную FALSE - цикл заканчивается. |
|||
|
||||
| toxx |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Нет, так не получится.Потомучто изображение занимает всё окно и кнопки ОК попросту не видно) Другое дело может быть сделать чтобы изображение было не во всё окно,и чтобы было видно кнопку ОК Тогда дело наверно вот в этой функции
Попробовал изменять настройки
Это ни к чему не привело.Подскажите пожалуйста, как правильно сделать, очень интресно исполнение это в winamp там сделаны кнопки сверху а понизу расположено окно где показывает( не знаю как это сделать). |
||||||
|
|||||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Добавлено через 1 минуту и 22 секунды Надо нажать на "Х" |
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Нет, не помогает я пробовал так...Также при нажатии на Х появляется завершить задачу. Это сообщение отредактировал(а) toxx - 17.12.2009, 17:03 |
|||
|
||||
| GremlinProg |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
http://www.google.com/search?client=opera&...-8&oe=utf-8
тогда придется создать дочернее окно, ограничить его так, чтобы кнопки были видны, и уже на это окно вешать графику, т.е. в CreateDevice передавать дескриптор этого дочернего окна
в винампе этот дочерний контрол - простой статик (STATIC) Добавлено через 3 минуты и 38 секунд кстати, заменить тему топика на "Direct3D в диалоге", или есть другие варианты? -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||
|
|||||||
| toxx |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Скорее это название более подходит, когда создавал тему думал, что перенесете в соответствующий раздел это. Проблема просто в wipapi )
Я выбрал вот такой способ реализации(через контрол, но дела с ними еще не имел только CTEXT,ICON,DEFPUSHBUTTON) в общих чертах прочитал вот http://dims.karelia.ru/win32/(но не нашел как это вызвать в прграмме) Вот это не совсем подходит
Как я понимаю вы мне предлагаете сделать вот это?
Но у меня тогда возникает вопрос: Откуда взять хэндл или ID_ чтобы направить туда мой Direct3D? Это сообщение отредактировал(а) toxx - 17.12.2009, 18:16 |
||||||||
|
|||||||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Попробовал вот так,по 2му способу предложенному правда опять неудачно(окно просто зависает).
Окно статика не перекрывает кнопки, но при нажатии воспроизвести DX3D оно виснет, не сделав ничего.
Скрин Это сообщение отредактировал(а) toxx - 17.12.2009, 19:18 |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
не понял, зачем это? да, это ID этого контрола ID_DRAW, а дескриптор можно получить, вызвав GetDlgItem с этим ID'ом -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Всё сделал, все показывает, только опять виснет, кнопки видны,но они также виснут.
Всё вродебы правильно, только не понимаю почему всё окно виснет, когда только в статике показывает...
Скрин Это сообщение отредактировал(а) toxx - 17.12.2009, 20:12 |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Вам уже писали - пока крутится это
Нужно добавить в цикл связку PeekMessage/IsDialogMessage/TranslateMessage/DispatchMessage. Кроме того, надо взводить флаг когда пользователь захотел закончить диалог (нажал esc, попробовал закрыть диалог или еще как), и проверять его в цикле. При взведенном флаге - завершать цикл |
|||
|
||||
| toxx |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: нет Всего: 13 |
Вы имели ввиду чтото на подобии этого?
Блин чтото не так опять, опять пол дня убил на непонятно что Это сообщение отредактировал(а) toxx - 17.12.2009, 22:14 |
||||||
|
|||||||
![]()
|
| Правила форума "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. |