다음을 통해 공유


컨트롤 메시지

이 섹션에는 Windows 메시지를 사용하여 컨트롤과 통신하는 방법에 대한 정보가 포함되어 있습니다.

다음 항목을 다룹니다.

공용 컨트롤에 대한 메시지

공용 컨트롤은 창이므로 애플리케이션은 WM_GETFONT 또는 WM_SETTEXT와 같은 일반 Microsoft Win32 메시지를 사용하여 컨트롤과 통신할 수 있습니다. 또한 각 공용 컨트롤의 창 클래스는 컨트롤별 메시지 집합을 지원합니다. 일반적으로 애플리케이션은 SendMessage 또는 SendDlgItemMessage를 사용하여 메시지를 컨트롤에 전달합니다(보통 반환 값으로 정보 수신).

일부 공용 컨트롤에는 애플리케이션이 SendMessage 대신 사용할 수 있는 매크로 집합도 있습니다. 매크로는 일반적으로 함수보다 사용하기 쉽습니다. 다음 코드 예는 먼저 원시 메시지를 사용하고 두 번째로 동일한 매크로를 사용하여 선택한 트리 뷰 항목의 텍스트를 검색합니다. hwnd가 컨트롤 창의 핸들이라고 가정합니다.

BOOL fSuccess;
WCHAR itemText[99];
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_TEXT;
tvItem.cchTextMax = ARRAYSIZE(itemText);
tvItem.pszText = itemText;

// This...
tvItem.hItem = (HTREEITEM)SendMessage(hwnd, TVM_GETNEXTITEM, TVGN_CARET, NULL);
fSuccess = SendMessage(hwnd, TVM_GETITEM, 0, (LPARAM)&tvItem);

// ... is equivalent to this.
tvItem.hItem = TreeView_GetSelection(hwnd);
fSuccess = TreeView_GetItem(hwnd, &tvItem);

시스템 색 설정이 변경되면 Windows는 모든 최상위 창에 WM_SYSCOLORCHANGE 메시지를 보냅니다. 최상위 창은 WM_SYSCOLORCHANGE 메시지를 공용 컨트롤로 전달해야 합니다. 그렇지 않으면 컨트롤에 색 변경 알림이 표시되지 않습니다. 메시지를 전달하면 공용 컨트롤에서 사용되는 색이 다른 사용자 인터페이스 개체에서 사용되는 색과 일치하는지 확인할 수 있습니다. 예를 들어, 도구 모음 컨트롤은 "3차원 개체" 색을 사용하여 해당 단추를 그립니다. 사용자가 3D 개체의 색을 변경했지만 WM_SYSCOLORCHANGE 메시지가 도구 모음으로 전달되지 않으면 시스템의 다른 단추 색이 변경되는 동안 도구 모음 단추는 원래 색으로 유지되거나 이전 색과 새 색의 조합으로 변경됩니다.

컨트롤의 알림

컨트롤은 일반적으로 사용자의 입력에 의해 트리거되는 이벤트가 컨트롤에서 발생할 때 부모 창에 알림 메시지를 보내는 자식 창입니다. 애플리케이션은 이러한 알림 메시지에 의존하여 사용자가 원하는 작업을 결정합니다. WM_HSCROLLWM_VSCROLL 메시지를 사용하여 부모에 변경 내용을 알리는 트랙바를 제외하고, 공용 컨트롤은 알림에 대한 참조 항목에 지정된 대로 알림을 WM_COMMAND 또는 WM_NOTIFY 메시지로 보냅니다. 일반적으로 이전 알림(오랫동안 API에 있었던 알림)은 WM_COMMAND를 사용합니다.

WM_NOTIFYlParam 매개 변수는 NMHDR 구조체의 주소 또는 NMHDR을 첫 번째 멤버로 포함하는 더 큰 구조체의 주소입니다. 구조체에는 알림 코드가 포함되어 있으며 알림 메시지를 보낸 공용 컨트롤을 식별합니다. 나머지 구조체 멤버가 있는 경우 그 의미는 알림 코드에 따라 다릅니다.

공용 컨트롤의 각 형식에는 해당 알림 코드 집합이 있습니다. 공용 컨트롤 라이브러리는 또한 둘 이상의 공용 컨트롤 형식에서 보낼 수 있는 알림 코드를 제공합니다. 보낼 알림 코드와 사용할 형식을 결정하려면 해당 컨트롤에 대한 설명서를 참조하세요.

WM_NOTIFY 메시지를 처리하는 방법을 보여 주는 코드 예는 해당 메시지에 대한 참조 항목을 참조하세요.

일반 컨트롤 참조