Exploring myGUI library. I have found this nice snippet.
//old procedure we'll replace later LRESULT msOldWindowProc = NULL; LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ... mHwnd = (HWND)_handle;//our window // our new callback function if (!msOldWindowProc) { msOldWindowProc = GetWindowLong(mHwnd, GWL_WNDPROC); SetWindowLong(mHwnd, GWL_WNDPROC, (long)windowProc); } ... //at the end of the program replace our procedure back if (msOldWindowProc) { SetWindowLong((HWND)mHwnd, GWL_WNDPROC, (long)msOldWindowProc); msOldWindowProc = 0; }