Pattern is fine.
Indexes are fine.
What is createMenu()? It does create a pointer to menu? Or just setup values?
The issue seems to be inside the DoMenu()
Your reset hook is kinda stupid ;-;
return original. save original. return original... Just the first return will work.
Reset hook is just call when your screen/ui/directx needs update. Cuz you probably changed resolution and others...
Code:
const auto h_original = original...
//invalidate/destroy objects.
//create objects
return h_original;
Also please, get a coding style... mix up things is not a good practice. If you cant come with one, use resharper cpp.