全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1095
推到 Plurk!
推到 Facebook!

怎麼讓程式知道你按了上下左右

答題得分者是:gemi0305
derekyppp
一般會員


發表:16
回覆:33
積分:9
註冊:2004-02-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-13 07:39:22 IP:210.64.xxx.xxx 未訂閱
怎麼讓程式知道你按了上下左右    這是我在別的討論板找到的方法    可是實作出來><" 都沒有反應耶…    
 
void __fastcall TForm1::FormShortCut(TWMKey &Msg, bool &Handled)
{       if(GetKeyState(VK_UP) & 0x8000)
   {
       Label1->Caption="按了上";
       
   }
   if(GetKeyState(VK_LEFT) & 0x8000)
   {
        Label1->Caption="按了左";
   }
   if(GetKeyState(VK_RIGHT) & 0x8000)
   {
         Label1->Caption="按了右";
   }
   if(GetKeyState(VK_DOWN) & 0x8000)
   {
          Label1->Caption="按了下";
   }
} 
jazz
初階會員


發表:10
回覆:43
積分:35
註冊:2002-06-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-13 08:04:34 IP:61.218.xxx.xxx 未訂閱
在程式放一個TApplicationEvent物件 然後  
 void __fastcall TfrmMain::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{
  if (Msg.message == WM_KEYDOWN){
    if (HIBYTE(::GetKeyState(VK_UP)) && !HIBYTE(::GetKeyState(VK_DOWN)))
      BtnMainRear->Color = clBlue;
    else if (!HIBYTE(::GetKeyState(VK_UP)) && HIBYTE(::GetKeyState(VK_DOWN)))
      BtnMainFront->Color = clBlue;
    if (HIBYTE(::GetKeyState(VK_LEFT)) && !HIBYTE(::GetKeyState(VK_RIGHT)))
      BtnMainLeft->Color = clBlue;
    else if (!HIBYTE(::GetKeyState(VK_LEFT)) && HIBYTE(::GetKeyState(VK_RIGHT)))
      BtnMainRight->Color = clBlue;
  }
  else if (Msg.message == WM_KEYUP){
    if (Msg.wParam == VK_UP || Msg.wParam == VK_DOWN){
      BtnMainRear->Color = clYellow;
      BtnMainFront->Color = clYellow;
    }
    if (Msg.wParam == VK_LEFT || Msg.wParam == VK_RIGHT){
      BtnMainLeft->Color = clYellow;
      BtnMainRight->Color = clYellow;
    }
  }
}
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-13 08:45:18 IP:211.20.xxx.xxx 未訂閱
你將 From 的 KeyPreview 屬性設為True 試試看
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-13 09:29:11 IP:61.59.xxx.xxx 未訂閱
試試看~  
void __fastcall TForm1::FormshortCut(TWMKey &Msg, bool &Handled)
{
  if(Msg.Result)
     switch(Msg.CharCode)
     {
     case VK_LEFT: ShowMessage("VK_LEFT"); break;
     case VK_UP: ShowMessage("VK_UP"); break;
     case VK_RIGHT: ShowMessage("VK_RIGHT"); break;
     case VK_DOWN: ShowMessage("VK_DOWN"); break;
     }    }
 
國泰平安
derekyppp
一般會員


發表:16
回覆:33
積分:9
註冊:2004-02-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-13 09:40:23 IP:211.74.xxx.xxx 未訂閱
謝謝大家這麼快的回應^^ 好像都可以用耶 可是分數只能給一個人 所以我還是給了版主大大 因為除了熱心解答外 還多了管理這個理的辛勞~ ^^
系統時間:2024-06-29 15:31:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!