編一個小程式,例如:輸入f5的ASCII碼,界面就會不斷重繪,這個能實作嗎?怎么實作呢?請高手詳細指導下,謝謝!!
uj5u.com熱心網友回復:
有界面為何還要輸入ascii碼?直接寫在OnKeyPress,OnKeyDown,OnKeyUp里面不就行了?
uj5u.com熱心網友回復:
要介面不斷重繪,最簡單拉個Timer,設定輸入間隔時間..只要輸入F5的ASCII碼就重繪介面。
//---不斷判斷是否輸入F5的ASCII碼 ------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(Edit1->Text == "116") //or 0x74 or VK_F5
{
Form1->Refresh();
}
}
//---聚焦在Edit時,只判斷按下F5鍵才重繪 ----------------------------
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_F5) //or 116 or 0x74
{
Form1->Refresh();
}
}
uj5u.com熱心網友回復:
基本上有兩種比較好的方式,一種是注冊全域熱鍵,一種是使用Timer:for(int i=0;i<=256;i++){
if(GetAsyncKeyState(i)==-32767){
if(i==116){
ShowMessage("F5鍵被按下了");
return;
}
}
}
uj5u.com熱心網友回復:
使用Timer控制元件的話有個缺點,就是Timer的時間設定要盡量短并可能漏過按鍵,還有一種方式是在程式空閑時檢查按鍵使用Timer的代碼如下:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
for(int i=0;i<=256;i++){
if(GetAsyncKeyState(i)==-32767){
if(i==116){
ShowMessage(L"F5鍵被按下了");
//break; // 結束整個回圈
return;
}
}
}
}
uj5u.com熱心網友回復:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
for(int i=0;i<=256;i++){
if(GetAsyncKeyState(i)==-32767){
if(i==116){
//ShowMessage(L"F5鍵被按下了");
//break; // 結束整個回圈
Refresh(); // 重繪
return;
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131764.html
上一篇:求解。。。
