604
社区成员




void __fastcall TfrmKbd::SpeedButton8Click(TObject *Sender)
{
::SetFocus(FormHdl); //FormHdl是grid所在窗口的句柄
String str = ((TButton *)Sender)->Hint;
if(str == "_")
{
// SendMessage(FormHdl, WM_KEYDOWN, VK_BACK, NULL);
keybd_event(8, 0, 0, 0); //Backspace键
keybd_event(8, 0, KEYEVENTF_KEYUP, 0);
}
else if(str == "<" || str == ">" || str == "*" || str == "+")
{
char curChar = str.c_str()[0];
keybd_event(16,0,0,0);//按下Shift键
keybd_event(VkKeyScan(curChar), 0, 0, 0);
keybd_event(VkKeyScan(curChar), 0, KEYEVENTF_KEYUP, 0);
keybd_event(16,0,KEYEVENTF_KEYUP,0);//松开Shift键
}
else
{
// SendMessage(FormHdl, WM_KEYDOWN, (WPARAM)*(str.c_str()), NULL);
char curChar = str.c_str()[0];
if(flag == 0 && (((int)curChar >= 65 && (int)curChar <= 90) || ((int)curChar >= 97 && (int)curChar <= 122))) //当前为大写 需要按下shift
{
keybd_event(16,0,0,0);//按下Shift键
}
keybd_event(VkKeyScan(curChar), 0, 0, 0);
keybd_event(VkKeyScan(curChar), 0, KEYEVENTF_KEYUP, 0);
if(flag == 0 && (((int)curChar >= 65 && (int)curChar <= 90) || ((int)curChar >= 97 && (int)curChar <= 122)))
{
keybd_event(16,0,KEYEVENTF_KEYUP,0);//松开Shift键
}
}
::SetFocus(FormHdl);
}