Полноэкранный режим DirectDraw

Тема в разделе "WASM.ASSEMBLER", создана пользователем DarkAnt, 15 авг 2004.

  1. DarkAnt

    DarkAnt New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    3
    Адрес:
    Екатеринбург
    Есть у меня старая игрушка и хочется заставить ее работать в окне. Опытным путем :) было установлено, что функцией SetWindowPos устанавливается размер 400 на 300 в точку (0,0). Проблема в том, что она находится где-то в дебрях ddraw. Как там пропатчить я не знаю при том, что после ее вызова SoftIce через раз перезагружает систему. На sysenter. Как можно это провернуть?
     
  2. DarkAnt

    DarkAnt New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    3
    Адрес:
    Екатеринбург
    Хм, мне ведь никто не мешает сделать SetWindowProc еще раз, но тогда это будет просто область на экране... Надо попробовать. А можно создать окно и привязать к нему DirectDraw?
     
  3. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    DirectDraw в любом случае "привязывается" к окну.

    Ищите вызов DirectDrawCreate(Ex), далее будут вызовы через COM VTable

    Что-то вроде:

    lpDD->SetCooperativeLevel(hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);

    lpDD->SetDisplayMode(400, 300, 8);



    В самом простом случае попробуйте поменять DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN на 0 и убрать SetDisplayMode.

    Хотя если
    , то наверняка используется палитра, и в случае с окном могут быть проблемы..