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.


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

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.  
  3. g_font->DrawText(      NULL,        
  4.                                (LPCWSTR) buffer,  //<--- hier ist der Bösewicht
  5.                                -1,        
  6.                                &FontRect,  
  7.                                DT_NOCLIP,
  8.                                Color);
  9.  

und bei

CPP Code:
  1.  
  2. D3DXCreateFont(pDevice,
  3.                       14,
  4.                       0,
  5.                       FW_NORMAL,
  6.                        1,
  7.                       false,
  8.                       DEFAULT_CHARSET,
  9.                       OUT_DEFAULT_PRECIS,
  10.                       ANTIALIASED_QUALITY,
  11.                       DEFAULT_PITCH | FF_DONTCARE,
  12.                       "Arial", //<--- hier wurde jetzt der Fehler erscheinen
  13.                       &g_font );
  14.  
  15.  

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 die Anwendung scalliere oder full Scren aktivere kommt diese Fehlermeldung:

Only registered and activated users can see links.


Was kann/muss ich tun?
Danke