반응형
트레이 아이콘(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); // 트레이 아이콘 삭제
※ 트레이 아이콘 예제
간단하게 트레이 아이콘 추가, 수정, 삭제와 컨텍스트 메뉴까지 포함하여 예제를 만들어봤습니다.
수동으로 아이콘을 추가, 수정, 삭제 할 수도 있고
창을 닫으면 트레이 아이콘이 생성되고 트레이 아이콘을 더블클릭하면 다시 창이 나타나도록 구현했습니다.
예제에서는 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
반응형
댓글