線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1354
推到 Plurk!
推到 Facebook!

Key的使用方法

答題得分者是:taishyang
hhmmjj1015
一般會員


發表:16
回覆:4
積分:4
註冊:2007-08-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-28 16:49:06 IP:140.115.xxx.xxx 訂閱
我在做一題範例的時候,他是說分別按下上下左右鍵的時候,坦克車就會按照上下左右方向走..
放開鍵的話就會恢復原位,我的問題是...
上下左右的Key value不是分別是24,25,27,26嗎?
但是程式為什麼是38,40,37,39呢?
以下是程式碼 ...請教大家囉~
//---------u8_3_1.cpp------------------------------------------------------------------
#include
#pragma hdrstop

#include "u8_3_1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int pic_x,pic_y; //存放坦克原始左上角座標
Tf8_3_1 *f8_3_1;
//---------------------------------------------------------------------------
__fastcall Tf8_3_1::Tf8_3_1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Tf8_3_1::FormCreate(TObject *Sender)
{
pic_y=imgTank->Top; //記錄坦克左上角Y座標
pic_x=imgTank->Left;//記錄坦克左上角X座標
imgTank->Picture=imgTankU->Picture;
imgTank->Visible=True;
imgTankU->Visible=False;
imgTankD->Visible=False;
imgTankL->Visible=False;
imgTankR->Visible=False;
}
//---------------------------------------------------------------------------
void __fastcall Tf8_3_1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case 38: // 往上
imgTank->Top-=10;
imgTank->Picture=imgTankU->Picture;
break;
case 40: // 往下
imgTank->Top =10;
imgTank->Picture=imgTankD->Picture;
break;
case 37: // 往左
imgTank->Left-=10;
imgTank->Picture=imgTankL->Picture;
break;
case 39: // 往右
imgTank->Left =10;
imgTank->Picture=imgTankR->Picture;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall Tf8_3_1::FormKeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
//坦克歸原位
imgTank->Top=pic_y;
imgTank->Left=pic_x;
}

//---------------------------------------------------------------------------

------
hello
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-28 18:37:48 IP:122.124.xxx.xxx 未訂閱
一個是16進位一個是10進位
hhmmjj1015
一般會員


發表:16
回覆:4
積分:4
註冊:2007-08-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-28 18:59:26 IP:140.115.xxx.xxx 訂閱
但是24的十六進位應該是18才對呀~
怎麼會對應到 38呢@@?
------
hello
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-28 19:08:06 IP:122.124.xxx.xxx 未訂閱
不知道你是怎麼確認的,你可用下面的code測試key值為何
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
Memo1->Lines->Add("16進位:0x" IntToHex(Key, 2) " 10進位:" IntToStr(Key));
}
系統時間:2024-05-04 18:24:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!