描述:
我想把程序隐藏到托盘,但是我程序执行ShowWindow(SW_HIDE)后,并没有从任务栏上消失,那是怎么回事,代码如下:
void COnTimerOutDlg::HideTheWindows()
{
pnid.cbSize = sizeof(NOTIFYICONDATA);
pnid.hIcon = LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON1));
pnid.hWnd = m_hWnd;
sprintf(pnid.szTip, "隐藏程序\n");
pnid.uCallbackMessage = WM_SYSTRAY;
pnid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
pnid.uID = 100;
this->ShowWindow(SW_HIDE);
Shell_NotifyIcon(NIM_ADD, &pnid);
}
LRESULT COnTimerOutDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if (message == WM_SYSCOMMAND)
if (wParam ==SC_MINIMIZE)
{
HideTheWindows();
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
解决方案1:
今天碰到过,不知道是不是你的帖子。
LRESULT res;
if(message == WM_SYSCOMMAND)
{
if(wParam == SC_MINIMIZE)
{
res = CDialog::DefWindowProc(message,wParam,lParam);
HideWindows();
return res;
}
}
return CDialog::DefWindowProc(message, wParam, lParam);