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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с окнами 
:(
    Опции темы
MakeItHappen
Дата 1.7.2009, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2009

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



Здраствуйте. Нужно сделать следующее:  есть главное окно, на нем второе окно, которое является так скажем бэкграундом, на нем воспроизводится видео, а поверх него находятся остальные окна. Проблема следующая: Создаю я главном окне MCIWndCreate, видео воспроизводится все окей, даллее пытаюсь создать хоть одно окно поверх этого, ничего невыходит, что я токо не делал все равно окно с воспроизведением оказывается поверх всех... Подскажите пожалуйста в чем проблема  возможно я чтото упустил... 

g_hWnd это главное окно родитель.
hWndWS с окно видео

Код

HWND CreateWS (HWND hWndParent, RECT rclPos, WORD wID,HINSTANCE hInst)
{

  HWND hWndWSV;
  hWndWSV  = CreateWindowEx(NULL,WC_STATIC,"",WS_CHILD | WS_VISIBLE, rclPos.left, rclPos.right, rclPos.bottom, rclPos.top,hWndParent,(HMENU)wID,hInst,NULL);

  if (hWndWSV == NULL)
      MessageBox(g_hWnd,"Lulz Cant Create!","Debug",MB_OK);

  return (hWndWSV);
}

HWND CreateMenu (HWND hWndParent, RECT rclPos, WORD wID,HINSTANCE hInst)


  HWND hWndM;
  hWndM  = CreateWindowEx(WS_EX_TOPMOST,WC_STATIC,"",WS_CHILD | WS_VISIBLE, rclPos.left, rclPos.right, rclPos.bottom, rclPos.top,hWndParent,(HMENU)wID,hInst,NULL);

  if (hWndM == NULL)
      MessageBox(g_hWnd,"Lulz Cant Create!","Debug",MB_OK);

//  SetBkColor(GetDC(hWndM),RGB(0,255,0));

  return (hWndM);
}


RECT rcl;
rcl.left = 0; 
rcl.right = 100;
rcl.bottom = GetSystemMetrics(SM_CXSCREEN);    
rcl.top = (GetSystemMetrics(SM_CYSCREEN)-50);
hWndWS = CreateWS(g_hWnd,rcl,2,g_hInst);
VSBkgVideo(g_hInst,hWndWS,"vid\\background.avi");
ShowWindow(hWndWS,SW_SHOW);
UpdateWindow(hWndWS);


rcl.left = 10;  
rcl.right = 50;  
rcl.bottom = 100;    
rcl.top = 100;    
hWndMenu= CreateMenu(hWndWS,rcl,NULL,g_hInst);

ShowWindow(hWndMenu,SW_SHOW);
UpdateWindow(hWndMenu);


Это сообщение отредактировал(а) MakeItHappen - 1.7.2009, 05:20
PM MAIL   Вверх
GremlinProg
Дата 2.7.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



MCI-окна скорее всего для такого просто не предназначены,
видео выводится с минимальным сопротивлением - поверх всех оконных буферов, чтобы избежать массы медленных операций с клипированием,
смотри в сторону DDraw, чтоли,

но я на вскидку сейчас не припомню,
чтобы в рабочей области плееров вообще что-либо городили дополнительно,
старенький BSPlayer мог на десктопе рисовать, разве что, но это не одно и то же,

видео вообще ни чем не перекрывают, в принципе,
может стоит пересмотреть организацию плеера?


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


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 4
Всего: 10



Автор, настоятельно советую забыть о MCI, и начать изучать DirectShow. Вывод какой-то информации или окон поверх видео вполне  решается спрайтами


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
MakeItHappen
Дата 2.7.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2009

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



Я то как раз сделал через сначала Direct Draw, но таже фень, то что я воспроизвожу перекрывает все остальные окна, мне посоветовали MCI, ну я попробовал, таже фень что и с Direct Draw. Хз че делать.....
PM MAIL   Вверх
BorisVorontsov
Дата 3.7.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 4
Всего: 10



Еще раз, забудь про окна
Цитата(BorisVorontsov @  2.7.2009,  13:38 Найти цитируемый пост)
Вывод какой-то информации или окон поверх видео вполне  решается спрайтами




--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
MakeItHappen
Дата 3.7.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2009

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



Тогда если несложно можешь дать ссылочку на книгу или где про это почитать можно... заранее спасибо
PM MAIL   Вверх
MakeItHappen
Дата 8.7.2009, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2009

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



<Блин помогите кто нибудь че делать, я пробовал и через DirectDraw и DirectShow и VRM9+DirectShow всегда видео поверх всех окон и никакими флагами это изменить нельзя что делать то... я про спрайты вообще невкурсе я даже хз толком че это... Киньте хоть примерчик про спрайты какойнибудь...  smile Плз позарез нада!!  smile  smile 

PM MAIL   Вверх
BorisVorontsov
Дата 8.7.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 4
Всего: 10



ID3DXSprite, обычное растровое изображение.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

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


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

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


 




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


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

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