Удалить уже созданный DrawTextA внутри подключенного приложения - PullRequest
0 голосов
/ 16 ноября 2011

Я работал над подключением DLL для игры, которая позволяет изменять некоторые вещи в игровой памяти, чтобы расширить мои знания в области перехвата и изменения памяти и т. Д. Я пришел к тому, что не могу понятькак продолжить!

Я создал шрифт и отобразил его на экране, используя метод, описанный ниже.

LPD3DXFONT      g_pFont = NULL;

HRESULT WINAPI hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
    if(g_pFont == NULL){
        D3DXCreateFontA(pDevice, 12, 0, FW_BOLD, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Verdana", &g_pFont);
    }
    if(g_pFont != NULL)
    {
        RECT rect = { 10, 10, 500,200 };
        g_pFont->DrawTextA(NULL, "Text to draw to screen", -1, &rect, 0,tGreen);
    }
    return oEndScene(pDevice);
}

Теперь мне нужно выяснить, как я могу удалить этоНарисуйте текст с экрана или измените его текст на что-то другое.Я понятия не имею, как это сделать!

Любая помощь очень ценится, спасибо всем!

1 Ответ

0 голосов
/ 16 ноября 2011

Ну, похоже, я не совсем понял, как работал EndScene! Похоже, он рисуется в конце каждого кадра, и мне просто нужно сделать оператор if, чтобы он ушел!

    if(g_pFont != NULL)
{
    //RECT struct - left,top,right,bottom in pixels
    if(g_timer < 2000){ 
    RECT rect = { 10, 10, 500,200 };
    g_pFont->DrawTextA(NULL, "Draw this and remove this", -1, &rect, 0,tGreen);
    }
}

g_timer установлен на ++ внутри потока hkDrawIndexedPrimitive.

...