|
띵띵 하고 나오는 소리는 Alt 키 누르면 나오는 메뉴에 들어갔다가,
1에 해당하는 키가 없기 때문에 소리가 나는 것 입니다.
(Alt 키를 누르시고 아래 방향키를 누르시면 메뉴가 펼쳐집니다)
어플 단에서 발생하는 메시지 이기 때문에, Key를 단순히 0으로
만든다고 해서 해결이 되지는 않고, 어플리케이션 메시지 단에서
무시를 시키도록 해야합니다.
단 이럴 경우, Alt + F4 등의 이벤트 메뉴도 모두 없어지니,
따로 처리를 해주셔야 합니다.
아래는 띵 소리를 없애는 간단한 예제입니다.
cuperido
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
Application->OnMessage = MyMessageHandler;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if(Shift.Contains(ssAlt) && Key == 0x31) {
Caption = "Alt + 1";
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyMessageHandler(TMsg &Msg, bool &Handled)
{
if(Msg.message == 260) Msg.message = 0;
}
김승철 님이 쓰신 글 :
: 빌더5에서 Alt 키와 숫자 1 키의 동시입력을 하려고 합니다.
:
: void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
: {
: if(Shift.Contains(ssAlt) && Key==0x31) Label1->Caption="Alt + 1";
: }
:
: 위와 같이 소스를 작성하고 실행하면 두개의 키입력은 확인이 되는데...
: 윈도(win 2000) 에서 띵~~~ 하는 소리가 납니다. 소리가 나는 이유가 뭔지 궁금합니다.
: 그리고 소스중에 Key==0x31 을 Key==VK_1 로 컴파일 하면 VK_1 이 Undefined Symbol 이라고 나옵니다.
: 왜그럴까요 ? 아시는 분 답변 좀 부탁드립니다.
|