|
bool bCTRL = ::GetAsyncKeyState(VK_CONTROL);
bool bSHIFT = ::GetAsyncKeyState(VK_SHIFT);
switch(Msg.CharCode) {
case VK_ESCAPE: {
// 선택 취소
SelectAll(false);
Handled = true;
break;
}
case 0xBB : {
if(bCTRL && bSHIFT) {
...
}
break;
}
}
이렇게 하시면 될 것 같습니다. + 은, = 에 Shift 가 눌린것으로 검사를 하시면 되고, Ctrl 까지 연산을 하시면, Ctrl + "+" 를 검사하실수 있습니다.
한동희 님이 쓰신 글 :
: 폼을 여러개 동시에 띄운 상태에서 핫키를 등록하려고 합니다.
: 메뉴는 사용하지 않습니다.
: TActionList에 Action을 만들고 핫키를 등록하려니까 Ctrl + '+'는 등록할 수 없는 것 같더군요.
: RegisterHotKey함수는 복잡해서 왠만하면 피할라고 했구요.
: 그래서 생각한 것이
:
: TApplicationEvents의 ShortCut이벤트인데요.
:
: void __fastcall TfrmPicLoader::ApplicationEvents1ShortCut(TWMKey &Msg,
: bool &Handled)
: {
: bool bCTRL = ::GetAsyncKeyState(VK_CONTROL);
: // bool bCTRL = (Msg.KeyData & (1 << 24)) == (1 << 24); // why not work ?
:
: switch(Msg.CharCode)
: {
: case VK_ESCAPE:
: // 선택 취소
: SelectAll(false);
: Handled = true;
: break;
: case '=': // 이넘이 Ctrl + '+'할 넘?
: ...
: }
: }
:
: 여기서 어떻게 코드를 써야 Ctrl + '+'를 디텍팅할 수 있을까요??
: GetAsyncKeyState는 정상적인 방법이 아닌 것 같아서요..
: 도와주세엽!!
|