본문 바로가기
C++, MFC

[C++ / MFC] 트레이 아이콘 만들기 예제

by dev_drive 2025. 1. 9.
반응형

 

 

트레이 아이콘(Tray Icon)이란?

 

윈도우 작업표시줄 우측 아이콘 트레이에 표시되는 아이콘을 의미합니다.

 

 


※ 트레이 아이콘 추가 / 수정 / 삭제

// ---------- 추가 ----------
m_tnd.cbSize = sizeof(NOTIFYICONDATA);
m_tnd.hWnd = GetSafeHwnd();
m_tnd.uID = 0;
m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
m_tnd.uCallbackMessage = WM_TRAY_NOTIFY;
_tcscpy(m_tnd.szTip, _T("TrayIcon"));			// 툴팁 텍스트 설정
m_pIconList = pList;					// 아이콘 리스트 지정
m_tnd.hIcon = m_pIconList[0];				// 기본 아이콘 설정
Shell_NotifyIcon(NIM_ADD, &m_tnd);			// 트레이 아이콘 추가


// ---------- 수정 ----------
m_tnd.hIcon = m_pIconList[id];
Shell_NotifyIcon(NIM_MODIFY, &m_tnd);			// 트레이 아이콘 수정


// ---------- 삭제 ----------
Shell_NotifyIcon(NIM_DELETE, &m_tnd);			// 트레이 아이콘 삭제

 

 

 

 

※ 트레이 아이콘 예제

 

 

TrayIcon.zip
0.15MB

 

간단하게 트레이 아이콘 추가, 수정, 삭제와 컨텍스트 메뉴까지 포함하여 예제를 만들어봤습니다.

 

수동으로 아이콘을 추가, 수정, 삭제 할 수도 있고

창을 닫으면 트레이 아이콘이 생성되고 트레이 아이콘을 더블클릭하면 다시 창이 나타나도록 구현했습니다.

 

예제에서는 TrayNot 이라는 클래스를 사용했는데

클래스를 만들지 않고 NOTIFYICONDATA만 사용해서 구현해도 됩니다.

 

 

 

※ 참고 사이트

https://www.codeproject.com/Articles/1627/System-Tray-Icons-Adding-to-your-dialog-application

https://github.com/bigmacd/trapreceiver/blob/master/Traynot.cpp

 

 

반응형

댓글