我没说清楚。后来我又试了一下,其实可以响应一部分的键的。除了四个方向键和左边的Alt以外都可以响应。注:我用的是德语键盘。但是对于WM_KEYDOWN好像不会有这样的区别啊。

解决方案 »

  1.   

        方向键与其它的键有区别!Delphi中使用这几个键来在多个控件中移动焦点,而不是触发一个WM_KEYDOWM事件。类似的还有VK_RETURN、VK_TAB...
        你需要处理WM_GETDLGCODE或CM_WANTSPECIALKEY :
    e.g.type
      TMyControl = class(TWinControl)
      private
        //..
        procedure WMGetDlgCode(var message: TMessage);
          message WM_GETDLGCODE;
        //..
      end;// request the arrow keys + characters
    procedure TMyControl.WMGetDlgCode(var message: TMessage);
    begin
      message.Result := DLGC_WANTARROWS or DLGC_WANTCHARS;
    end;