질문과 답변

확장키인지 조사하는 코드 좀 봐 주세요. 날짜:2022-2-18 11:38:45 조회수:109
작성자 : silsol
포인트 : 10
가입일 : 2020-02-09 21:10:05
방문횟수 : 4
글 2개, 댓글 0개
소개 : 자기소개를 입력하십시오.
작성글 보기
쪽지 보내기
WM_KEYDOWN 메시지에서 lParam의 24번 비트가 1이면 확장키이고 0이면 기본키입니다.
24번 비트는 1 << 24로 점검했고요 이 값과 lParam을 & 연산해서 0인지 점검했습니다.

if (lParam & (1 << 24) == 0) {
    MessageBox(hWndMain, "기본키임", "디버그", MB_OK);
} else {
    MessageBox(hWndMain, "확장키임", "디버그", MB_OK);
}

그런데 이 코드로 조사해 보면 항상 확장키라고 조사됩니다. 
디버깅해 보면 왼쪽키일 때 lParam은 0x20380001이고 오른쪽키일 때 0x21380001이며 분명히 24번 비트가 다르거든요.
왜 그런지 이유 좀 알려 주세요.
 

목록보기 삭제 수정 신고 스크랩

daypark 2월28일 4:01:05  

우선순위가 잘못되었네요.
& 연산이 ==보다 순위가 늦습니다.

if ((lParam & (1 << 24)) == 0) {

요렇게 고치면 아마 잘 될겁니다.


로그인하셔야 댓글을 달 수 있습니다.