以下代码中lParam和wParam到底代表什么.
如何区分键被按下或弹起.
使用下面的代码在有的系统中有效,有的系统中无效,为何?谢谢LRESULT CALLBACK KeyboardProc(
  int nCode,       
  WPARAM wParam,  
  LPARAM lParam  )
{
static bool entered=FALSE;
if(entered) return 0;
entered=true;
TRACE("lParam:%x  wParam:%d\n",lParam,wParam);
if((CControlView *)gtcard.pMainFrame->GetActiveView()==gtcard.pCtrlView )
{

if (lParam==0x004a0001 && wParam==109)
SendMessage(gtcard.pCtrlView->m_ZDn.GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
if (lParam==0x004e0001 && wParam==107)
SendMessage(gtcard.pCtrlView->m_ZUp.GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
if (lParam==0x004b0001 && wParam==100)
SendMessage(gtcard.pCtrlView->m_XLf.GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
if (lParam==0x00480001 && wParam==104)
SendMessage(gtcard.pCtrlView->m_YUp.GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
if (lParam==0x004d0001 && wParam==102)
SendMessage(gtcard.pCtrlView->m_XRt .GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
if (lParam==0x00500001 && wParam==98)
SendMessage(gtcard.pCtrlView->m_YDn.GetSafeHwnd(),WM_LBUTTONDOWN,0,0); if (lParam==0xc04a0001 && wParam==109)
SendMessage(gtcard.pCtrlView->m_ZDn.GetSafeHwnd(),WM_LBUTTONUP,0,0);
if (lParam==0xc04e0001 && wParam==107)
SendMessage(gtcard.pCtrlView->m_ZUp.GetSafeHwnd(),WM_LBUTTONUP,0,0);
if (lParam==0xc04b0001 && wParam==100)
SendMessage(gtcard.pCtrlView->m_XLf.GetSafeHwnd(),WM_LBUTTONUP,0,0);
if (lParam==0xc0480001 && wParam==104)
SendMessage(gtcard.pCtrlView->m_YUp.GetSafeHwnd(),WM_LBUTTONUP,0,0);
if (lParam==0xc04d0001 && wParam==102)
SendMessage(gtcard.pCtrlView->m_XRt .GetSafeHwnd(),WM_LBUTTONUP,0,0);
if (lParam==0xc0500001 && wParam==98)
SendMessage(gtcard.pCtrlView->m_YDn.GetSafeHwnd(),WM_LBUTTONUP,0,0);
}
entered=false;
return CallNextHookEx(hHook,nCode,wParam,lParam);
}