C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49311] Re:가상키보드값 VK_NEXT가 안먹히는 문제...
크레브 [kkol] 2419 읽음    2007-05-19 11:27
TAB키나 VK_F10 등 VK_MENU 등과 같은 네비게이션 키들은 일반 KeyDown에서 안잡힙니다.
원도우가 내부적으로 처리하기 때문이죠
즉 탭을 누르면 다음 콘트롤로 이동한다던지.. F10을 누르면 메뉴를 보여준다든지..
이런 SystemKey들은 아래와 같이 WM_SYSKEYUP 메시지로 들어오니
이 메시지로 처리하면됩니다.
메시지 처리하는 방법은 아시겠죠


AppMesage라는 메시지 처리 함수 하나 만들고..
연결하시고 쓰면되는데...

아래에 대충 다른 프로젝트에 쓰던 소스 잘라 붙여봤습니다.

---------------------------------------------------------------------------------
Application->OnMessage = AppMessage;


-------------------------------------------------------------------------------
void __fastcall TF_Form1::AppMessage(tagMSG &Msg, bool &Handled)
{
   if (Msg.message == WM_SYSKEYUP)
   {
      if( XfIsMsgShow()==false && F7_NumPad->Visible==false )
      {
         if( vk==VK_TAB || vk==VK_RETURN)
            Handled = true;
      }
      // F10은 시스템 키 이므로 여기서 처리
      if( vk == VK_F10 )
      {
         B_CameraFBClick(this);

         Handled = true;
      }
      else if( vk==VK_F1 && (GetAsyncKeyState(VK_MENU) & 0x8000)) // ALT + F1
      {
          // Left Picker Vacuum
         if( Xv_iRunStatus != XRS_START )
         {
             if( XIO[O_PK_1_ON_SOL] == true )
                {
                XCYL[VAC_PK_1].Off();
                 XfLogMsg("Left Picker Vacuum Off");
            }
            else
            {
                XCYL[VAC_PK_1].Pull(false);
                 XfLogMsg("Left Picker Vacuum On");
            }
         }
      }


chang 님이 쓰신 글 :
: 정말 황당한 경우인 것도 같고 제가 뭔가 잘 모르는 것 같기도 하고....
:
: 에디트박스에서 "Page Down"키를 누르면 다음 에디트 박스로 포컼스가 이동하는 아주 단순한(?) 동작인데 이게 안되더라구요...
:
: void __fastcall TOrder::Edit1KeyDown(TObject *Sender, WORD &Key,
:       TShiftState Shift)
: {
:   if ( Key == VK_END )
:   {
:       FocusControl(Edit5); // 잘 넘어감...
:       return;
:   }
:   else   if ( Key == VK_ESCAPE )
:   {
:       FocusControl(Edit5);  // 잘 넘어감...
:       return;
:   }
:   else   if ( Key == VK_RIGHT )
:   {
:       FocusControl(Edit5); // 잘 넘어감...
:       return;
:   }
:   else   if ( Key == VK_NEXT )
:   {
:       FocusControl(Edit5);  // 이 넘만 포커스가 이동하지 않고 그대로 Edit1에 머물러 있슴
:       return;
:   }
: }
:
: 같은 버추얼 키값인데 왜 Page Down과 Page Up만 안되는걸까요?
: 본래 이런건가요? 아시는 분 답변 좀 부탁드리겠습니다...

+ -

관련 글 리스트
49310 가상키보드값 VK_NEXT가 안먹히는 문제... chang 2685 2007/05/18
49311     Re:가상키보드값 VK_NEXT가 안먹히는 문제... 크레브 2419 2007/05/19
49315         해결됐습니다..감사합니다...^^ chang 1238 2007/05/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.