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

如何在不同的form用一樣的熱鍵(RegisterHotKey)

尚未結案
kobebryant81
一般會員


發表:15
回覆:15
積分:6
註冊:2007-05-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-30 22:27:57 IP:220.138.xxx.xxx 訂閱
想請問各位,我的問題是,今天我的FORM1上的Button1按下去後,會同時出現Form2、Form3、Form4

每個Form上面都有用Chart畫出來的訊號(Series1),訊號上面會有一個點(Series2),我想按左鍵點往右跑,按右鍵,點往右跑

參考了版上前輩的作法,但是不管怎麼試就是只有Form2可以達成這樣的功能,其他兩個都不行

不知道問題出在哪裡@@,謝謝大家。

下面是我Form2的.h跟.cpp,其他兩個寫法都同Form2

.h檔

[code cpp]
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
void __fastcall OnHotKey(TWMHotKey& HotKeyMsg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HOTKEY,TWMHotKey,OnHotKey)
END_MESSAGE_MAP(TForm)

[/code]

.cpp檔
[code cpp]
void __fastcall TForm2::OnHotKey(TWMHotKey& HotKeyMsg)
{
if(HotKeyMsg.HotKey==VK_RIGHT) //判斷是否為自己所設之熱鍵
RIGHT
{
Series2->Clear(); f.cornerX ;
Series2->AddXY(f.cornerX,Form1->data[f.cornerX].r,"",clYellow);
}
else if(HotKeyMsg.HotKey==VK_LEFT) //判斷是否為自己所設之熱鍵
LEFT
{
Series2->Clear(); f.cornerX--;
Series2->AddXY(f.cornerX,Form1->data[f.cornerX].r,"",clYellow);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
RegisterHotKey(Handle,VK_RIGHT,NULL,VK_RIGHT);//登錄 右鍵 熱鍵
RegisterHotKey(Handle,VK_LEFT,NULL,VK_LEFT);//登錄 左鍵 熱鍵
}
//---------------------------------------------------------------------------

[/code]
編輯記錄
kobebryant81 重新編輯於 2008-04-30 22:29:07, 註解 無‧
kobebryant81 重新編輯於 2008-04-30 22:29:46, 註解 無‧
kobebryant81 重新編輯於 2008-04-30 22:30:39, 註解 無‧
toplink85
一般會員


發表:0
回覆:2
積分:0
註冊:2008-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-26 16:48:24 IP:118.168.xxx.xxx 訂閱
依程式碼來看, 應該是 "同時開啟" 的Form
只有一個是 Active Form, 如果你把滑鼠點到Form3
=> Form3就可以接受 HotKey
但也只有 Form3可以.
所以你可以在 Form1攔截 Windows Keyboard Event
再同時對 Form2,3,4發出控制指令即可
------
多看別人寫的程式, 就會進步神速.
光看不做, 是不行的喔!
系統時間:2024-05-02 5:27:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!