S
solova
Делаю в MFC
собсна нужно заменить иконку в трее
с IDI_ICON1 на IDI_ICON2
вот как всё происходит
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Mydlg.h</div></div><div class="sp-body"><div class="sp-content">
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">MyDlg.cpp</div></div><div class="sp-body"><div class="sp-content">
ну вот собсна uID мне покоя не даёт
собсна нужно заменить иконку в трее
с IDI_ICON1 на IDI_ICON2
вот как всё происходит
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Mydlg.h</div></div><div class="sp-body"><div class="sp-content">
C++:
class CMyDlg : public CDialog
{
public:
NOTIFYICONDATA nf;//чтоб по сто раз не объявлять
C++:
#define WM_MYICONNOTIFY (WM_USER+1)
BEGIN_MESSAGE_MAP(CTest2Dlg, CDialog)
ON_WM_SYSCOMMAND()
ON_MESSAGE(WM_MYICONNOTIFY,&CMyDlg::DelIcon)
END_MESSAGE_MAP()
BOOL CMyDlg::OnInitDialog()
{
nf.cbSize = sizeof(&nf);
nf.hWnd = m_hWnd;
nf.uCallbackMessage = WM_MYICONNOTIFY;
return TRUE;
}
void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0)==SC_CLOSE) //при нажатие на крестик
{
wchar_t textup[]=L"Программа работает";
nf.uID = NULL; ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
nf.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
wcscpy_s(nf.szTip,sizeof(nf.szTip),textup);
HICON hIcon;
hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
nf.hIcon = hIcon;
Shell_NotifyIcon(NIM_ADD,&nf);
ShowWindow(SW_HIDE);
//OnClose();
}
//CDialog::OnSysCommand(nID, lParam);
}
LRESULT CMyDlg::DelIcon(WPARAM wParam, LPARAM lParam)
{
if (lParam==WM_LBUTTONDBLCLK)
{
Shell_NotifyIcon(NIM_DELETE,&nf);
ShowWindow(SW_RESTORE);
}
return 0;
}
//вот кнопка каторая должна поменять иконку и надпись
void CMyDlg::OnBnClickedButton1()
{
wchar_t texticon[]=L"Иконка заменена";
nf.uFlags = NIF_ICON | NIF_TIP;
wcscpy_s(nf.szTip,sizeof(nf.szTip),textup);
//а зачем вообще nf.uID ///!!!!!!!!!!!!!!!!!!!!!!!!!!!
//и иконку просто заново загрузить или как то nf.uID можно использовать?
// и я понимаю что вторую иконку всё равно надо загружать в проект,
//но может как то с помощью uID можно менять(а то зачем он нужен)
"HICON hIcon;"
"hIcon=AfxGetApp()->LoadIcon(IDI_ICON2);"
"nf.hIcon = hIcon;"
Shell_NotifyIcon(NIM_MODIFY,&nf);
}