OldSchoolHack

Register / Login English

D3D Hook - D3DXCreateFont & DrawFont

icon Thread: [Help] D3D Hook - D3DXCreateFont & DrawFont

Join Date: Apr 2014

Posts: 4

Hallo ich arbeite z.Z. ein paar tut's durch und würde gerne "Deutsche" schrift in eine Fremde Anwendung Zeichnen.

Mein derzeitiger Stand:
Only registered and activated users can see links.

Frage 1:
Wie zuerkennen, Ein pinktes Rechteck in der linken oberen ecke, dann noch 2 Zeilen geschriebenes ( ist leider nicht deutsch, eigentlich steht da: links "Hilfe", rechts "Bitte"). Was muss ich verändern um da auch wirklich Deutsch herauszubekommen

Mein Code ausschnitt zu den Fonts:


CPP Code:
  1.  
  2. const D3DCOLOR txtPink = D3DCOLOR_ARGB(255, 255, 0, 255); // Alpha, Rot, Grün, Blau
  3. const D3DCOLOR txtBlaue = D3DCOLOR_ARGB(255, 0, 0, 255); // Alpha, Rot, Grün, Blau
  4. void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...);
  5.  
  6.  
  7. void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color);
  8. //Our font interface
  9. ID3DXFont *g_font=NULL;
  10.  
  11. HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
  12. {
  13. DrawRect ( pDevice, 10, 10, 200, 200, txtPink);
  14.  
  15. if ( g_font == 0 )
  16. {
  17. D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, (LPCWSTR)"Arial", &g_font );
  18. }
  19. else
  20. {
  21. DrawFont ( 20, 50, txtBlaue, "Hife" );
  22. g_font->OnLostDevice();
  23. g_font->OnResetDevice();
  24.  
  25. }
  26.  
  27. DrawFont ( 300, 50, txtPink, "Bitte" );
  28.  
  29.  
  30. return pEndScene(pDevice);
  31. }
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. //Draw------------
  39.  
  40. void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color)
  41. {
  42. D3DRECT rect = {X, Y, X+L, Y+H};
  43. Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0);
  44. }
  45.  
  46. void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...)
  47. {
  48. //const char *fps_string;
  49. //fps_string = "a";
  50. char buffer[256];
  51. va_list args; // deswegen: #include <cstdio>
  52. va_start (args, format);
  53. vsprintf (buffer,format, args);
  54. RECT FontRect = { X, Y, X + 120, Y + 16 };
  55. g_font->DrawText(NULL,        //pSprite
  56.                               (LPCWSTR) buffer,  //pString
  57.                                -1,          //Count
  58.                                &FontRect,  //pRect
  59.                                DT_NOCLIP,//Format,
  60.                                Color); //Color
  61. //( NULL, buffer, -1, &FontRect, DT_NOCLIP , Color ); // Zeichnen
  62. va_end (args);
  63. }
  64.  

Frage 2:

Warum bekomme ich immer wieder den Fehler (in Visual Studio 2010) wenn ich bei buffer das (LPCWSTR) weg lasse:


Das Argument vom Typ ""char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel.

Hier der Code zur Frage 2:
CPP Code:
  1.  
  2. g_font->DrawText(      NULL,        
  3.                                (LPCWSTR) buffer,  //<--- hier ist der Bösewicht
  4.                                -1,        
  5.                                &FontRect,  
  6.                                DT_NOCLIP,
  7.                                Color);
  8.  


und bei
CPP Code:
  1.  
  2. D3DXCreateFont(  pDevice, [...] , DEFAULT_PITCH | FF_DONTCARE, "Arial", &g_font );
  3.  

wird bei mir immer das "Arial" als Fehler angegeben:
Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel.

Frage 3:

Wenn ich die Anwendung scalliere oder full Scren aktivere kommt diese Fehlermeldung:
Only registered and activated users can see links.

Was kann ich tun^^