C & C++/MFC 컨트롤

트레이 아이콘 만들기

izen8 2011. 10. 26. 09:51



void CH7TrayDlg::RegistTrayIcon()

{

NOTIFYICONDATA  nid;

nid.cbSize = sizeof(nid); // 구조체의 크기

nid.hWnd = m_hWnd; // 메인 윈도우 핸들

nid.uID = IDR_MAINFRAME;  // 아이콘 리소스 ID

nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 플래그 설정

nid.uCallbackMessage = WM_TRAYICON_MSG; // 콜백메시지 설정

nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 아이콘 로드 

lstrcpy(nid.szTip, "Long live the Queen");


Shell_NotifyIcon(NIM_ADD, &nid); // Tray Icon을 시스템에 등록

SendMessage(WM_SETICON, (WPARAM)TRUE, (LPARAM)nid.hIcon);

m_bIsTrayIcon = TRUE; // tray 등록되었다는 플래그 설정


// sMenu = new CMenu; // tray icon이 눌렸을때 팝업될 메뉴

// sMenu->LoadMenu(IDR_MENU1);

}


void CH7TrayDlg::DestroyTrayIcon()

{

if( m_bIsTrayIcon ) // 현재 트레이 아이콘으로 설정되었는지 확인 

{

//delete sMenu;


NOTIFYICONDATA  nid;

nid.cbSize = sizeof(nid);

nid.hWnd = m_hWnd; // 메인 윈도우 핸들

nid.uID = IDR_MAINFRAME;


// 작업 표시줄(TaskBar)의 상태 영역에 아이콘을 삭제한다.

Shell_NotifyIcon(NIM_DELETE, &nid);


TeleShellTrayRefresh::Refresh();

}

}