|
void __fastcall TfrmPicLoader::ApplicationEvents1ShortCut(TWMKey &Msg,
: : bool &Handled)
{
...
여기서 GetAsyncKeyState함수를 쓰지 않고
TWMKey &Msg 이 변수만 분석해서 Ctrl + '+'를 디텍팅하는 방법은 없을까요?
...
}
유영인.Chris 님이 쓰신 글 :
:
: 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는 정상적인 방법이 아닌 것 같아서요..
: : 도와주세엽!!
|