더북(TheBook)

setMouseCallback() 함수의 두 번째 인자 onMouse에 지정하는 마우스 콜백 함수에 대해 알아보겠습니다. 마우스 콜백 함수는 마우스 이벤트가 발생할 때 자동으로 호출되는 함수이며, 이 콜백 함수의 형식 MouseCallback은 다음과 같이 정의되어 있습니다.

typedef void (*MouseCallback)(int event, int x, int y, int flags, void* userdata);

즉, 마우스 콜백 함수는 네 개의 정수형과 하나의 void* 타입을 인자로 가지며, void를 반환형으로 사용해야 합니다. 마우스 콜백 함수 이름을 반드시 onMouse로 설정해야 하는 것은 아니며, 여러분이 원하는 다른 이름을 사용해도 됩니다. 마우스 콜백 함수의 첫 번째 인자 event에는 MouseEventTypes로 정의된 열거형 상수 중 하나가 전달되며, 그 값과 의미를 표 4-8에 나타냈습니다. 마우스 콜백 함수의 두 번째와 세 번째 인자에는 마우스 이벤트가 발생한 위치의 x 좌표와 y 좌표가 전달됩니다. 마우스 콜백 함수의 네 번째 인자 flags는 마우스 이벤트가 발생할 때의 마우스 또는 키보드의 상태 정보를 담고 있습니다. flags 인자에는 MouseEventFlags 열거형 상수의 논리합 조합이 전달됩니다. MouseEventFlags 열거형 상수와 의미는 표 4-9에 정리했습니다. 마지막으로 void* 타입의 다섯 번째 인자에는 setMouseCallback() 함수에서 설정한 사용자 데이터의 포인터가 전달됩니다. 만약 setMouseCallback() 함수에서 세 번째 인자 userdata를 설정하지 않았다면 마우스 콜백 함수의 userdata 인자에는 항상 0(NULL)이 전달됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.