重要声明(本人犯的一个程序错误)
给pp616回答的一个问题中(http://www.csdn.net/expert/topic/196/196614.shtm),所写的TMyTrackBar源码虽然能工作,但又测试了一下有个问题.
源码:
void __fastcall TMyTrackBar::WndProc(TMessage &Message)
{ TTrackBar::WndProc(Message);
if (Message.Msg == WM_LBUTTONDOWN)
{ int xPos = Message.LParamLo; //对的
int yPos = Message.LParamHi; //对的
TShiftState Shift ;//改正.应该必须赋值
TMouseButton Button;//改正.应该必须赋值
DoMouseDown( Button , Shift,xPos,yPos);
}
if (Message.Msg == WM_LBUTTONUP)
{ int xPos = Message.LParamLo;
int yPos = Message.LParamHi;
TShiftState Shift ;//改正.应该必须赋值
TMouseButton Button;//改正.应该必须赋值
DoMouseUp( Button , Shift,xPos,yPos);
}
} 如果不用Shift,Button参数则看不出来。
测试方法:
在TMyTrackBar的MyOnMouseUp的事件里写
ShowMessage("MouseButton=" + IntToStr(Button));
在一个标准的控件如TButton的OnMouseUp的事件里也写
ShowMessage("MouseButton=" + IntToStr(Button));
结果不一样,对TMyTrackBar的MyOnMouseUp只响应鼠标左键,在我的机器上显示70(无道理),而TButton的OnMouseUp的事件响应鼠标左键和右键,左键为0,右键为1(对的) 肯定TButton的是对的
但具体怎么赋值,我不清楚,望指点