我自定议了这样的消息响应函数:
procedure PreTranslateMessage(var Message: TMessage);message WM_KEYDOWN;
procedure TForm_main.PreTranslateMessage(var Message: TMessage);
var
  vol : Dword;
begin
  if (Message.LParam=VK_CONTROL) then
    begin
if (Message.WParam=VK_LEFT) then
           begin
             //处理事件
  end;
if (Message.WParam=VK_RIGHT) then
           begin
             //处理事件
  end;
    end;
end;为什么我的这个函数得不到任何响应呢?!

解决方案 »

  1.   

    会响应, 我的代码如下:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm1 = class(TForm)
      private
        { Private declarations }
        procedure PreTranslateMessage(var Message: TMessage);message WM_KEYDOWN;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.PreTranslateMessage(var Message: TMessage);
    var
      vol : Dword;
    begin
      showmessage('in');             // 按键就会出现!
      if (Message.LParam=VK_CONTROL) then
        begin
    if (Message.WParam=VK_LEFT) then
               begin
                 //处理事件
      end;
    if (Message.WParam=VK_RIGHT) then
               begin
                 //处理事件
      end;
        end;
    end;end.
      

  2.   

    那帮我看看如果要响应ctrl+LEFT
    键盘得操作,能够判断出来么,
    我好像不行得。
      

  3.   

    ctrl+left触发了两次keydown事件,可以记录两次,再处理--------------------------
    --------------------------
    --------------------------
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
      private
        { Private declarations }
        procedure PreTranslateMessage(var Message: TWMLBUTTONUP);message WM_LBUTTONUP;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.PreTranslateMessage(var Message: TWMLBUTTONUP);
    begin
      if Message.Keys = MK_CONTROL then
      begin
        showmessage('you Click Control+ Left');
      end;
    end;end.