主要函数如下:
void CMyCaptureDlg::OnMinimun()
{
ShowWindow(SW_HIDE);
m_boolWndHadShow = FALSE;
this->PostMessage(MYWM_SHOWAPPICONIC);
}
void CMyCaptureDlg::OnClose()
{
MyTaskBarDeleteIcon(GetSafeHwnd(),100);
CDialog::OnClose();
}
void CMyCaptureDlg::OnMyIconNotify(WPARAM wParam,LPARAM lParam)
{
UINT nID;
UINT uMouseMsg;
nID = (UINT)wParam;
uMouseMsg = (UINT) lParam;
if(uMouseMsg == WM_LBUTTONDOWN) //点???
{
if(m_boolWndHadShow) //如果窗口已打?,?藏窗口
ShowWindow(SW_HIDE);
else //否?,?示窗口
ShowWindow(SW_SHOWNORMAL);
m_boolWndHadShow = ~m_boolWndHadShow;
}
}
void CMyCaptureDlg::OnShowAppIconic(WPARAM wParam,LPARAM lParam)
{
HICON theIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_MAINICON));
MyTaskBarAddIcon(GetSafeHwnd(),100,theIcon, _T("Capture"));
ShowWindow(SW_HIDE);
m_boolWndHadShow = FALSE;
}
BOOL CMyCaptureDlg::MyTaskBarAddIcon(HWND hwnd,UINT uID,HICON hicon,LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = MYWM_NOTIFYICON;
tnid.hIcon = hicon;
if (lpszTip)
lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
else
tnid.szTip[0] = '/0';
res = Shell_NotifyIcon(NIM_ADD, &tnid);
if (hicon)
DestroyIcon(hicon);
return res;
}
BOOL CMyCaptureDlg::MyTaskBarDeleteIcon(HWND
hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}