다음을 통해 공유


Shell_NotifyIconA 함수(shellapi.h)

작업 표시줄의 상태 영역에 메시지를 보냅니다.

통사론

BOOL Shell_NotifyIconA(
  [in] DWORD            dwMessage,
  [in] PNOTIFYICONDATAA lpData
);

매개 변수

[in] dwMessage

형식: DWORD

이 함수에서 수행할 작업을 지정하는 값입니다. 다음 값 중 하나를 가질 수 있습니다.

NIM_ADD(0x00000000)

0x00000000. 상태 영역에 아이콘을 추가합니다. 아이콘에는 uID 또는 guidItem 멤버를 통해 lpdata가리키는 NOTIFYICONDATA 구조의 식별자가 제공됩니다. 이 식별자는 아이콘에 대한 이후 작업을 수행하기 위해 Shell_NotifyIcon 후속 호출에 사용됩니다.

NIM_MODIFY(0x00000001)

0x00000001. 상태 영역에서 아이콘을 수정합니다. lpdata 가리키는 NOTIFYICONDATA 구조 알림 영역(NIM_ADD)에 추가될 때 원래 아이콘에 할당된 ID를 사용하여 수정할 아이콘을 식별합니다.

NIM_DELETE(0x00000002)

0x00000002. 상태 영역에서 아이콘을 삭제합니다. NOTIFYICONDATA 구조는 lpdata 알림 영역(NIM_ADD)에 추가될 때 원래 아이콘에 할당된 ID를 사용하여 삭제할 아이콘을 식별합니다.

NIM_SETFOCUS(0x00000003)

0x00000003. Shell32.dll 버전 5.0 이상은. 작업 표시줄 알림 영역에 포커스를 반환합니다. 알림 영역 아이콘은 UI 작업을 완료했을 때 이 메시지를 사용해야 합니다. 예를 들어 아이콘에 바로 가기 메뉴가 표시되지만 사용자가 ESC를 눌러 취소하는 경우 NIM_SETFOCUS 사용하여 알림 영역에 포커스를 반환합니다.

NIM_SETVERSION(0x00000004)

0x00000004. Shell32.dll 버전 5.0 이상은. lpdata가리키는 구조체의 uVersion 멤버에 지정된 버전 번호에 따라 동작하도록 알림 영역에 지시합니다. 버전 번호는 인식되는 멤버를 지정합니다.

알림 영역 아이콘이 추가될 때마다 NIM_SETVERSION 호출해야 합니다(NIM_ADD). NIM_MODIFY 호출할 필요는 없습니다. 사용자가 로그오프한 후에는 버전 설정이 유지되지 않습니다.

자세한 내용은 설명 섹션을 참조하세요.

[in] lpData

형식: PNOTIFYICONDATA

NOTIFYICONDATA 구조체에 대한 포인터입니다. 구조체의 내용은 dwMessage값에 따라 달라집니다. 알림 영역에 추가할 아이콘을 정의하거나, 해당 아이콘이 알림을 표시하도록 하거나, 수정하거나 삭제할 아이콘을 식별할 수 있습니다.

반환 값

형식: BOOL

성공하면 TRUE 반환하거나, 그렇지 않으면 FALSE . dwMessage NIM_SETVERSION 설정된 경우 버전이 성공적으로 변경되었으면 함수가 TRUE 반환하거나 요청된 버전이 지원되지 않는 경우 FALSE .

발언

Windows 2000(Shell32.dll 버전 5.0)을 기준으로 lpdata 가리키는 NOTIFYICONDATA 구조의 uVersion 멤버를 NOTIFYICON_VERSION_4 이상으로 설정하면 Shell_NotifyIcon 마우스 및 키보드 이벤트가 이전 버전의 Windows와 다르게 처리됩니다. 차이점은 다음과 같습니다.

  • 사용자가 키보드를 사용하여 알림 아이콘의 바로 가기 메뉴를 선택하면 Shell에서 연결된 애플리케이션에 WM_CONTEXTMENU 메시지를 보냅니다. 이전 버전은 WM_RBUTTONDOWNWM_RBUTTONUP 메시지를 보냅니다.
  • 사용자가 키보드로 알림 아이콘을 선택하고 스페이스바 또는 ENTER 키로 활성화하는 경우 버전 5.0 Shell은 연결된 애플리케이션에 NIN_KEYSELECT 알림을 보냅니다. 이전 버전은 WM_RBUTTONDOWNWM_RBUTTONUP 메시지를 보냅니다.
  • 사용자가 마우스로 알림 아이콘을 선택하고 ENTER 키로 활성화하면 이제 Shell에서 연결된 애플리케이션에 NIN_SELECT 알림을 보냅니다. 이전 버전은 WM_RBUTTONDOWNWM_RBUTTONUP 메시지를 보냅니다.
Windows XP(Shell32.dll 버전 6.0)를 기준으로 사용자가 풍선 알림이 연결된 아이콘 위에 마우스 포인터를 전달하면 Shell에서 다음 메시지를 보냅니다.
  • NIN_BALLOONSHOW. 풍선이 표시되면 전송됩니다(풍선이 큐에 대기됨).
  • NIN_BALLOONHIDE. 풍선이 사라질 때 전송됩니다. 예를 들어 아이콘이 삭제되는 경우입니다. 시간 제한으로 인해 풍선이 해제되거나 사용자가 마우스를 클릭하면 이 메시지가 전송되지 않습니다.

    Windows 7을 기준으로 NIIF_RESPECT_QUIET_TIME 플래그가 설정된 알림이 조용한 시간(새 컴퓨터에서 사용자의 첫 번째 시간)에 표시하려고 할 때도 NIN_BALLOONHIDE 전송됩니다. 이 경우 풍선은 전혀 표시되지 않습니다.

  • NIN_BALLOONTIMEOUT. 시간 제한으로 인해 풍선이 해제될 때 전송됩니다.
  • NIN_BALLOONUSERCLICK. 사용자가 마우스를 클릭했기 때문에 풍선이 해제될 때 전송됩니다.
이러한 메시지 외에도 Windows Vista(Shell32.dll 버전 6.0.6)를 기준으로 사용자가 풍선 알림이 연결된 아이콘 위에 마우스 포인터를 전달하면 Windows Vista Shell은 다음 메시지도 추가합니다.
  • NIN_POPUPOPEN. 사용자가 아이콘 위에 커서를 놓으면 표준 텍스트 도구 설명 대신 더 풍부한 팝업 UI를 사용해야 함을 나타내기 위해 전송됩니다.
  • NIN_POPUPCLOSE. 커서가 더 이상 아이콘 위로 마우스를 가져가지 않을 때 전송되어 서식 있는 팝업 UI를 닫아야 함을 나타냅니다.
운영 체제 버전에 관계없이 dwMessageNIM_SETVERSION설정된 Shell_NotifyIcon 호출하여 셸이 작동하는 방식을 선택할 수 있습니다. lpdata 가리키는 NOTIFYICONDATA 구조의 uVersion 멤버를 설정하여 Windows 2000, Windows Vista 또는 이전 버전 5.0(Windows 95) 동작을 원하는지 여부를 나타냅니다.
참고 위에서 설명한 메시지는 기존의 Windows 메시지가 아닙니다. dwMessage설정된 NIM_ADD 플래그로 Shell_NotifyIcon 호출될 때 lpdata가리키는 NOTIFYICONDATA 구조의 uCallbackMessage 멤버에 지정된 애플리케이션 정의 메시지의 lParam 값으로 전송됩니다.
 
Windows XP SP2(서비스 팩 2)를 기준으로 알림 풍선에 사용자 지정 아이콘을 표시할 수 있습니다. 이렇게 하면 호출 프로세스에서 이전에 사용 가능한 정보, 경고 및 오류 옵션을 넘어 알림을 사용자 지정하고 사용자에 대한 다른 유형의 알림과 구분할 수 있습니다.

메모

shellapi.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 Shell_NotifyIcon 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shellapi.h
라이브러리 Shell32.lib
DLL Shell32.dll(버전 4.0 이상)
API 집합 ext-ms-win-shell-shell32-l1-2-1(Windows 10 버전 10.0.10240에서 도입됨)

참고 항목

알림 및 알림 영역