初学者请教(50分)

  • 主题发起人 主题发起人 细文
  • 开始时间 开始时间

细文

Unregistered / Unconfirmed
GUEST, unregistred user!
if Key=vk_Return then
PostMessage(0,VK_Tab,0,0);
上面句子能使ENTER键像TAB键,请问
1. Key=vk_Return
2. PostMessage(0,VK_Tab,0,0)
是什么意思?还有 KEY=????或PostMessage(????)等等吗?
请举例子说明。
 
if Key=vk_Return //if 单击 ENTER
then
PostMessage(0,VK_Tab,0,0);
//邮寄消息 VK_Tab( Tab键)

 
delphi用两种方式处理消息:
发送
SendMessage(hWnd:HWnd;Msg:Cardinal;wParam:integer;lParam:integer);
邮寄
PostMessage(hWnd:HWnd;Msg:Cardinal;wParam:integer;lParam:integer);
 
上面的已经讲的很清楚了,主要是delphi 对windows消息的截获
有关资料请看delphi4完全手册
 
key是*.onkeydown(或其他)的参数,纪录的是键值.
vk_return,vk_tab都是虚拟键值
 
1、
Key是过程KeyDown的一个变量,过程已定义:
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
Key的取值可以看Delphi下的Windows.pas下定义,(再哪个目录下用查找吧。
如何找到个值也可以用查找,如find"vk_Return "),Key 同时可以是数值如:
回车键值为:13。
注意和KeyPress的Key不一样上面的是:Word,面下为:Char
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
2、如上面几位大侠所说。
 
1。key是*.onkeydown(或其他)的参数,纪录的是键值.那么
F1-F12,0-9,A-Z,ESC,和方向键等键的键值又是什么?
2。PostMessage(0,VK_Tab,0,0),那么 “0”又能用1-9等数字代替?


 
f1..f12:vk_f1..vk_f12
esc:vk_escape
up,down,left,right arrow:vk_up,vk_down,vk_left,vk_down
a..z:vk_a..vk_z?但是编译时却报错:未定义
postmessage的第一个参数应该是接受消息的对象的句柄,最好不要直接写0
第二个参数是要发送的消息,所以细文的PostMessage(0,VK_Tab,0,0)是不对的
因为vk_tab是虚键值而不是消息.应该是键被按下的消息WM_KEYDOWN.
第三个参数是消息的wParam,对于WM_KEYDOWN是虚键值
第四个参数是消息的lParam,对于WM_KEYDOWN是一个32位的标志,
参见http://202.120.85.61/delphibbs/DispQ.asp?LID=232125
postmessage的参数写起来还是有些麻烦,在delphi中可以有更简单的方法:
如:form1.perform(WM_NEXTDLGCTL,0,0) 焦点移道此窗口的下一个控件
form1.perform(WM_NEXTDLGCTL,1,0) 焦点移道此窗口的上一个控件
 
a-z,A-Z可以用其ASCII码表示
 
多人接受答案了。
 
后退
顶部