template <class T>
class WindowMessage
{
void OnDestroy(HWND hWnd);
void OnPaint(HWND hWnd);
void OnKeyDown(HWND hWnd, UINT uVKChar, UINT uKeyData);
...
LRESULT InternalDefault(
HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL DispatchMessage(
HWND hWnd, UINT message, WPARAM wParam , LPARAM lParam, LRESULT& lResult);
LRESULT ProcessMessage(
HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
};