Witam, mam 2 problemy.
Wyglada to tak:
http://prntscr.com/4d62ze
- Wyciek pamieci (log)
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 1 at 0x00BB72E8: 76 bytes ----------
Leak Hash: 0xBE400EB3, Count: 1, Total 76 bytes
Call Stack (TID 8960):
0x00DBC260 (File and line number not available): MSVCR120D.dll!operator new
c:\users\theaifam5\documents\visual studio 2013\projects\cs-go hack\cs-go hack\main.cpp (47): CS-GO Hack.exe!WinMain + 0x7 bytes
f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c (618): CS-GO Hack.exe!__tmainCRTStartup + 0x15 bytes
f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c (466): CS-GO Hack.exe!WinMainCRTStartup
0x7721919F (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0xE bytes
0x77C0A22B (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x84 bytes
0x77C0A201 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x5A bytes
Data:
20 03 00 00 58 02 00 00 16 00 00 00 01 00 00 00 ....X... ........
00 00 00 00 00 00 00 00 01 00 00 00 6C 09 0C 00 ........ ....l...
01 00 00 00 01 00 00 00 50 00 00 00 00 00 00 00 ........ P.......
00 00 00 00 00 00 00 00 48 F5 BB 00 E0 0F BF 00 ........ H.......
E0 C2 20 01 6C 09 0C 00 00 00 00 00 ....l... ........
Visual Leak Detector detected 1 memory leak (112 bytes).
Largest number used: 112 bytes.
Total allocations: 112 bytes.
Visual Leak Detector is now exiting.
- String sie wyświetla ale jako chińskie znaczki i nie wiem za bardzo o co chodzi, w czym problem.
w WinAPI:
test = new DirectX9(hWindowMain);
ShowWindow(hWindowMain, nShowCmd);
test->Initialize();
while (GetMessage(&hMessages, NULL, NULL, NULL))
{
test->Render(Render);
TranslateMessage(&hMessages);
DispatchMessage(&hMessages);
}
delete test;
funkcja Ren:
void Render(LPDIRECT3D9 d3d, LPDIRECT3DDEVICE9 d3ddev, LPD3DXFONT d3dfont)
{
// clear the window alpha
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0);
d3ddev->BeginScene(); // begins the 3D scene
test->DrawString(10, 50, D3DCOLOR_ARGB(255, 255, 0, 0), d3dfont, "Test rendering string :D");
d3ddev->EndScene(); // ends the 3D scene
d3ddev->Present(NULL, NULL, NULL, NULL); // displays the created frame on the screen
}
DirectX9.h
#pragma once
typedef void (*RenderCallback)(LPDIRECT3D9, LPDIRECT3DDEVICE9, LPD3DXFONT);
class DirectX9
{
protected:
D3DPRESENT_PARAMETERS m_d3dpp;
private:
LPDIRECT3D9 m_d3d;
LPDIRECT3DDEVICE9 m_d3ddev;
LPD3DXFONT m_d3dfont;
HWND m_hWnd;
RenderCallback* m_render;
public:
DirectX9(HWND hWnd);
void Initialize();
void DrawString(int x, int y, DWORD color, LPD3DXFONT g_pFont, const char *fmt);
void Render(RenderCallback callback);
~DirectX9();
};
DirectX9.cpp
#include "stdafx.h"
#include "DirectX9.h"
DirectX9::DirectX9(HWND hWnd)
{
m_hWnd = hWnd;
m_d3d = Direct3DCreate9(D3D_SDK_VERSION);
ZeroMemory(&m_d3dpp, sizeof(m_d3dpp));
m_d3dpp.Windowed = TRUE;
m_d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
m_d3dpp.hDeviceWindow = m_hWnd;
m_d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
m_d3dpp.BackBufferHeight = 600;
m_d3dpp.BackBufferWidth = 800;
m_d3dpp.EnableAutoDepthStencil = TRUE;
m_d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
}
void DirectX9::DrawString(int x, int y, DWORD color, LPD3DXFONT g_pFont, const char *fmt)
{
RECT FontPos = { x, y, x + 120, y + 16 };
char buf[1024] = { '\0' };
va_list va_alist;
va_start(va_alist, fmt);
vsprintf_s(buf, fmt, va_alist);
va_end(va_alist);
g_pFont->DrawText(NULL, (LPCWSTR)buf, -1, &FontPos, DT_NOCLIP, color);
}
void DirectX9::Initialize()
{
m_d3d->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
m_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&m_d3dpp,
&m_d3ddev
);
D3DXCreateFont(
m_d3ddev,
50,
0,
FW_BOLD,
1,
0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,
L"Comic Sans MS",
&m_d3dfont
);
}
void DirectX9::Render(RenderCallback callback)
{
callback(m_d3d, m_d3ddev, m_d3dfont);
}
DirectX9::~DirectX9()
{
delete m_d3dfont;
delete m_d3dfont;
delete m_d3ddev;
delete &m_d3dpp;
delete m_d3d;
}