我想给程序做个这样的功能,就是当按下CTRL键的同时滚动鼠标滚轮,程序的日期就会发生变化(数据是随日期变化而变化的)。可是我用RegisterHotKey函数只能注册键盘的快捷键,对鼠标(Mod_Contrl+VK_MButton)无效。请问要实现这样的功能,是不是就不能再用RegisterHotKey的方法了?应该通过什么样的方法来实现呢?谢谢!期待各位指教!

解决方案 »

  1.   

        procedure CMMouseWheel(var Message: TCMMouseWheel); message CM_MOUSEWHEEL;
      public
        { Public declarations }
      end;var
      Form3: TForm3;implementation{$R *.dfm}procedure TForm3.CMMouseWheel(var Message: TCMMouseWheel);
    begin
      inherited;
      if (Message.Result = 0) and (Message.ShiftState=[ssCtrl]) then
        begin
          Memo1.Lines.Add('111')
        end;
    end;Memo1.Lines.Add('111')换成你改变日期的代码
      

  2.   

    procedure Mwheel (var Message : TCMMouseWheel); message CM_MOUSEWHEEL;procedure TForm1.Mwheel(var Message: TCMMouseWheel);
    var
     IsNeg : Boolean;
    begin
     if (Message.Result = 0) and (Message.ShiftState=[ssCtrl]) then
     begin
       IsNeg := Short(Message.WheelDelta) < 0;
       if IsNeg then
         //这里写向下滚动时要处理的代码
       else
         //这里写向上滚动时要处理的代码
     end;
    end;
      

  3.   

    http://topic.csdn.net/t/20040314/14/2841270.html鼠标滚轮有技巧
      

  4.   

    本帖最后由 tjianliang 于 2010-08-13 12:43:19 编辑