Citation :
pOrigProc = (WNDPROC)SetWindowLong(plugin.hwndParent, GWL_WNDPROC, (LONG)HookWinampWnd);
The callback function now receives all of the Winamp Main Window's messages before Winamp does. This allows us to be informed when Winamp is moving by trapping the WM_MOVE message. When this message is encountered, we call a TrackWindow in the CWinampWnd class to track the Main Window.
LRESULT CALLBACK HookWinampWnd(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg) { case WM_MOVE:
m_MainWnd.TrackWindow((int)(short) LOWORD(lParam),(int)(short) HIWORD(lParam));
break;
default:
break;
}
// Call Winamp Window Proc
return CallWindowProc(pOrigProc, hwnd, uMsg, wParam, lParam); }
|