다음을 통해 공유


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. 상태 영역에서 아이콘을 삭제합니다. lpdata가 가리키는 NOTIFYICONDATA 구조체는 알림 영역(NIM_ADD)에 추가될 때 원래 아이콘에 할당된 ID를 사용하여 삭제할 아이콘을 식별합니다.

NIM_SETFOCUS(0x00000003)

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

NIM_SETVERSION(0x00000004)

0x00000004. 버전 5.0 이상만Shell32.dll. 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 셸은 연결된 애플리케이션에 NIN_KEYSELECT 알림을 보냅니다. 이전 버전은 WM_RBUTTONDOWNWM_RBUTTONUP 메시지를 보냅니다.
  • 사용자가 마우스로 알림 아이콘을 선택하고 ENTER 키를 사용하여 활성화하면 셸은 이제 연결된 애플리케이션에 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 셸은 다음 메시지도 추가합니다.
  • 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에 도입됨)

추가 정보

알림 및 알림 영역