다음을 통해 공유


메시지 제어

이 섹션에는 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차원 개체" 색을 사용하여 단추를 그립니다. 사용자가 3차원 개체의 색을 변경하지만 WM_SYSCOLORCHANGE 메시지가 도구 모음으로 전달되지 않는 경우 도구 모음 단추는 원래 색으로 유지되거나 시스템의 다른 단추 색이 변경되는 동안 원래 색으로 유지되거나 이전 색과 새 색의 조합으로 변경됩니다.

컨트롤의 알림

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

WM_NOTIFYlParam 매개 변수는 NMHDR 구조체의 주소 또는 NMHDR 첫 번째 멤버로 포함하는 더 큰 구조체의 주소입니다. 이 구조는 알림 코드를 포함하고 알림 메시지를 보낸 공통 컨트롤을 식별합니다. 나머지 구조체 멤버의 의미(있는 경우)는 알림 코드에 따라 달라집니다.

공통 컨트롤의 각 유형에는 해당 알림 코드 집합이 있습니다. 공용 컨트롤 라이브러리는 둘 이상의 공통 컨트롤 유형에서 보낼 수 있는 알림 코드도 제공합니다. 보낼 알림 코드와 어떤 형식을 사용하는지 확인하려면 관심 제어에 대한 설명서를 참조하세요.

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

일반 컨트롤 참조