SunDevil |
Отправлено: 01.05.2006, 13:28 |
|
Не зарегистрирован
|
ВСЕМ ПРИВЕТ!
Вот такой вопрос: мне надо, чтобы по нажатию комбинации клавиш Ctrl+A открывалась Form2. Как мне это сделать, используя THotKey? Пробовал, пробовал, но ничего не выходит что-то. Надеюсь на вас! СПАСИБО! |
|
Gal |
Отправлено: 03.05.2006, 10:34 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
В загол. файле Главной формы
CODE |
private: // User declarations
ATOM KeyAtom;
void __fastcall OnHotKeyPress(TMessage &Message);
public: // User declarations
__fastcall TMainForm(TComponent* Owner);
__fastcall ~TMainForm();
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HOTKEY, TMessage, OnHotKeyPress)
END_MESSAGE_MAP(TForm)
|
В срр При открытии главной формы
CODE |
KeyAtom = GlobalAddAtom( "HotKey" );
if(!RegisterHotKey( Handle, KeyAtom, MOD_CONTROL | MOD_ALT, VK_F12))
{
MessageBox(0, "Can't register!", "RegisterHotKey", MB_OK);
}
|
Обработка нажатия Ctrl+Alt+F12
CODE |
void __fastcall TMainForm::OnHotKeyPress(TMessage &Message)
{
unsigned char VirtualKey;
UINT ModKey;
ModKey = LOWORD(Message.LParam);
VirtualKey = HIWORD(Message.LParam);
if((ModKey & (MOD_ALT | MOD_CONTROL)) & (VirtualKey == VK_F12))
{
// Открываешь свою Form2
}
}
|
призакрытии главной формы
CODE |
UnregisterHotKey( Handle, KeyAtom );
GlobalDeleteAtom( KeyAtom );
|
Ну а если необходимо нажатие Ctrl+A подкоректируй сам
|
|
CyberMind |
Отправлено: 03.05.2006, 14:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 29
|
Может тебе не надо использовать THotKey?
А просто сделать так:
1) В форме, которая вызывает другую, поставить свойство
KeyPreview = true;
2) В обработчике события OnKeyDown этой формы написать например:
CODE | if (Shift.Contains(ssCtrl) && Key=='A') Form2->Show(); | |
|
|