I can see you've never programmed any procedural, or CPU native compiled language before. Your source files are empty templates and you headers full of code. XD (this should be the other way around)
Headers (the .h files) are there to provide the pre-processor with enough information to know when you've made a mistake in your main source file... but you don't have any code in the source files. :S
I have no idea why you are trying to attach to "test.exe" when your dll is first loaded into game.exe. (which may well go by any other name)
Code:
void _declspec(dllexport) _declspec(align(4)) _declspec(naked) _cdecl MakeWindow()
That is the craziest declaration I've ever seen, to the extent that I can't read it... even as a prototype. (looks like some of the C source obfuscation competition entries)
You include in-line assembler in your C++?
Code:
_asm
{
MOV ESI,DWORD PTR DS:[CreateWindowExA]
retn
}
In _declspec / __cdecl ESI will be destroyed before return anyway, and so your in-line assembler is forced to break our of the high level code before it can reset the frame-set it created when it was called to avoid the corruption to this register change that that would normally be the case. So what you are doing is illegally exiting from high level code and failing to clean up the frame-set. This will corrupt the stack frame leading to a memory leak IF that function is ever called.
And aside from all that, I think that either the simple modification in Butchered, or the one presented in Gregoos tutorials (when they are up) are far more practical, simply because this is to small a function to require a DLL of it's own. It's just patching one small API, and in a very blowzy manner.
The existing functionality of the code you have removed is not completely replaced with your DLL, I think. And I suspect that existing local settings which can achieve these things and more will be lost by doing this.
With that critique aside, the potential of this
would be if this where a layered window, with GDIPlus bindings that could be used to overlay the UI.
I congratulate you on a good beginning, and encourage you to persevere. But I think this project is not a practical solution just yet. I also thank you for sharing your progress with us, and hope my input can help you see where you are struggling with the conventions of non .NET style coding.