Application/MFC

[MFC] TrayIcon 만들기

devsalix 2023. 2. 16. 10:50
728x90

TrayIcon 생성을 위해서는

 

메시지 처리를 위한 함수와 TrayIcon 생성 함수로 구성됩니다

 

우선 헤더 파일에 사용자 메시지를 등록과 메시지 처리 함수 생성

 

그리고 TrayIcon 생성 함수를 등록해 줍니다

 

#define	WM_TRAYICON_MSG	(WM_USER + 0x01)

class CMyDlg : public CDialogEx
{
	....
	
	afx_msg LRESULT TrayIconMsg(WPARAM wParam, LPARAM lParam);

	BOOL MakeTrayIcon();
}

 

그리고 소스 파일에서 메시지 맵에 아래와 같이 추가합니다

 

BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx)
	...
	
	ON_MESSAGE(WM_TRAYICON_MSG, &CMyDlg::TrayIconMsg)
END_MESSAGE_MAP()

 

그 후 아래 함수 두 개를 완성해 주면 됩니다

 

LRESULT CMyDlg::TrayIconMsg(WPARAM wParam, LPARAM lParam)
{
	if(m_bSetting) return 0;
	if(lParam == WM_RBUTTONDOWN)
	{
		....
	}

	return 0;
}

BOOL CMyDlg::MakeTrayIcon()
{
	m_nid.cbSize = sizeof(m_nid);
	m_nid.hWnd = m_hWnd;
	m_nid.uID = IDR_MAINFRAME;
	m_nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
	m_nid.uCallbackMessage = WM_TRAYICON_MSG;
	m_nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_nid.hBalloonIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	wcscpy_s(m_nid.szTip, _T("Program Name")); 
	 
	return Shell_NotifyIcon(NIM_ADD, &m_nid);
}

 

 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90
반응형