C++ Class wrapper on top of WinMain/DllMain
it's better to explicitly call init and exinit than pass a bool to "Check" to say which will one will get called.  maybe call them "Start" and "Exit"

Also, I'd suggest not making them virtual, if you want to be able to extend it...use a protected virtual

public: bool Start();
protected: virtual bool StartImpl();


void CInit::Start()
{
   StartImpl();
}


This gives you a bit more control over the calling in to your API.  (Also a mostly recommended best practice for C++). 

It's called "Non Virtual Interface" or NVI.  It does have pros and cons.  But in this case I think it would be quite useful.