хм... ну можно и реальный кусок:
procedure WMMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL;
....
procedure TFormTTF.WMMouseWheel(var Msg: TMessage);
begin
if(HIWORD(msg.WParam)>32512)then begin
if StringGrid1.Row<(StringGrid1.RowCount-1) then StringGrid1.Row:=StringGrid1.Row+1;end
else if StringGrid1.Row>1 then StringGrid1.Row:=StringGrid1.Row-1;
inherited;
end;
Как можно заметить - это Дельфи (3, если это имеет какое-то значение). Сей кусок позволяет перемещаться по StringGrid-у с помощью колеса прокрутки.
На С должно выглядеть примерно так:
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg){
case WM_MOUSEWHEEL:
if(HIWORD(wParam)>32512){}/*что-то важное делаем здесь*/
else {}/*не менее важное делаем здесь*/
break;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return DefWindowProc(hwnd,msg,wParam,lParam);
}
Правда С-шный код я не проверял (у меня на работе мышь без колесика)
А вот еще кусочек из примеров lcc:
LRESULT CALLBACK MsgHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
LPMSG lpMsg;
unsigned int i;
lpMsg = (LPMSG)lParam;
if (lpMsg->message == WM_MOUSEWHEEL)
{
if ((short) HIWORD(lpMsg->wParam) > 0)
{
for (i = 0; i < g_nLNumber; i++)
{
SendMessage(lpMsg->hwnd, WM_VSCROLL, MAKEWPARAM(SB_LINEUP, 0), (LPARAM)NULL);
}
}
else
{
for (i = 0; i < g_nLNumber; i++)
{
SendMessage(lpMsg->hwnd, WM_VSCROLL, MAKEWPARAM(SB_LINEDOWN, 0), (LPARAM)NULL);
}
}
}
return CallNextHookEx(g_hMsgHook, nCode, wParam, lParam) ;
}
В данном случае вешается хук для того что-бы добавить возможность управления колесиком в !!!чужой!!! программе.
Это вкратце...