|
다른 방법은 잘 모르겠구요. 그냥 메세지 받아서 처리하는 방법이 좋을것 같은뎅...
bool CtrlFlag = false;
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
switch (Msg.message)
{
case WM_KEYDOWN:
switch(Msg.wParam)
{
case VK_CONTROL:
CtrlFlag = true; //CTRL키 다운
return;
case 77: //M
if(CtrlFlag)
{
ShowMessage("CTRL+M");
Msg.wParam = NULL; //M을 NULL로
}
return;
}
break;
case WM_KEYUP:
if(Msg.wParam == VK_CONTROL) CtrlFlag = false; //CTRL키 업
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnMessage = AppMessage;
}
//---------------------------------------------------------------------------
이렇게 작성하시구요.
head 파일에 아래행 넣어 주시구요.
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled);
이선진 님이 쓰신 글 :
: 안녕하세요?
:
: 윈도우 미디어 플레이어를 컴포넌트로 설치해서 사용하려구 했는데요....
: "Ctrl+M"이라는 단축키가 눌리면 메뉴를 실행하게 하려고 했습니다만,
: 제가 원하는 메뉴는 실행되지 않구,
: 자꾸만 윈도우 미디어 자체의 메뉴인 "음소거"가 실행이 됩니다.
:
: 아래처럼, 윈도우 미디어 컴포넌트의 OnKeyDown 메세지를 이용하려고 했는데, 잘 안되네요...
:
: //-----------------------------------------------------------------------------------
: void __fastcall TForm1::WindowsMediaPlayerKeyDown(TObject *Sender, WORD &Key,
: TShiftState Shift)
: {
: if (Shift.Contains(ssCtrl) && (Key == 'm' || Key == 'M')) 내가 원하는 함수();
: }
: //-----------------------------------------------------------------------------------
:
: 고수님들의 가르침 부탁드립니다~~~~
:
:
|