Страница: 1 |
Страница: 1 |
Вопрос: WS_EX_LAYERED и про алгоритм
Добавлено: 19.07.10 00:22
Автор вопроса: Winand | Web-сайт:
Создаю в VB6 всплывающие окна с помощью CreateWindowEx(WS_EX_LAYERED, "STATIC", vbNullString, WS_POPUP, l, t, w, h, 0, 0&, App.hInstance, ByVal 0&)
Однако флаг WS_EX_LAYERED корректно работает в Win7, но не в XP. В последней окно либо не отображается на экране, либо одна тень, если CS_DROPSHADOW задать. В чем проблема? Слоистое окно нужно для прозрачности по цвету и альфа-полупрозрачности.
Второй вопрос вообще тупой. Одна функция вызывает другую, а та запускает трек из плейлиста. Если трек битый или еще какая фигня, то надо перейти к следующему. Значит вторая функция снова должна вызвать первую. Выходит, если, условно говоря, 10000 левых треков, то так и стек может переполниться.
Идея только одна - запускать во второй функции таймер, который позже сам сработает и попытается перейти к следущему треку.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #1
Добавлено: 19.07.10 02:10
А как он проверяет, что трек битый? Сразу при попытки открыть или долго пыхтит и пытается прочитать, а потом говорит, что не смог?
Если сразу, что почему бы из второй функции не попытаться открыть?
Если второе, то можно после ответа вызывать первую.
Номер ответа: 2
Автор ответа:
Eugy
Вопросов: 0
Ответов: 73
Профиль | | #2
Добавлено: 19.07.10 02:15
Извини за банальность, но MSDN.
STATIC ...
в Win7 оно может и работает, но наверняка только при включ. AERO. Мне сейчас не проверить.
Посему, RegisterClassEx в помощь. И не забудь lpfnWndProc.
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 19.07.10 08:38
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 19.07.10 08:40
Любую рекурсию можно сделать циклом. Любой цикл можно сделать рекурсией (вроде бы)
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 19.07.10 15:20
Eugy, спасибо, помогло. Пришлось еще флаг WS_EX_TRANSPARENT добавить.
С треками видимо ошибка в архитектуре) Функ1 в модуле "плейлист" только выбирает треки, функ2 в основном модуле запускает треки и вызывает функ3 в плейлисте, сообщая ему о результатах запуска трека. В соответствии с текущей логикой программы функ3 должна вызвать функ1, для выбора следущего трека.
Возможно и правда сделать таймер с невысокой задержкой, запускаемый функ3. Тогда юзер сможет видеть продвижение по плейлисту (как в винампе)
Номер ответа: 6
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #6
Добавлено: 19.07.10 18:50
С треками попробуй сделать ,как в WindowsMediaPlayer: там если подряд несколько левых треков попадается, то он останавливается ,и выводит окошко об ошибке.
Номер ответа: 7
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #7
Добавлено: 19.07.10 20:17
UnDeAdZak, я считаю, что окошко об ошибке - это по-<цензоред>
У WMP я увидел (и стащил) только 1 неплохую идею: предпрослушивание треков. Хотя оказалось, что она мне не пригождается