컨트롤은 자신에게 어떤 변화가 있을 때마다 부모 윈도우로 메시지를 보내며 이 메시지를 통지 메시지라고 부른다. 예를 들어 체크 박스의 경우 사용자가 마우스로 클릭할 때마다 부모 윈도우로 BN_CLICKED 메시지를 보낸다.
컨트롤이 부모 윈도우로 보내는 통지 메시지와는 달리 부모 윈도우가 체크 박스의 현재 상태를 알아보거나 상태를 바꾸고자 할 때도 차일드 윈도우로 메시지를 보낸다.
통지 메시지는 차일드가 부모로 보내는 보고 메시지이고 그냥 메시지는 부모가 차일드에게 어떤 지시를 내리기 위해 보내는 명령이다.
메시지의 종류는 컨트롤마다 다르다.
부모 윈도우가 체크 박스로 보낼 수 있는 메시지에는 다음 두 가지가 있다.
BM_GETCHECK
체크 박스가 현재 체크되어 있는 상태인지를 조사하며 wParam, lParam 은 사용하지 않는다.
체크 상태는 리턴값으로 돌려진다.
BM_SETCHECK
체크 박스의 체크 상태를 변경하며 wParam 에 변경할 체크 상태를 지정한다.
BM_GETCHECK 에 의해 리턴되는 값, 또는 BM_SETCHECK 에 의해 설정되는 체크 박스의 상태는 다음 세 가지가 있다.
BST_UNCHECKED( 값 : 0 )
현재 체크되어 있지 않다.
BST_CHECKED( 값 : 1 )
현재 체크되어 있다.
BST_INDETERMINATE( 값 : 2 )
체크도 아니고 언체크도 아닌 상태