试图使程序最小化到托盘上
别人的代码,我不知道具体怎么加到我的对话框程序里面啊
他这里的onsize 参数是哪里传递进去的? onsize函数就是放在cpp文件里面就可以了吗? 我刚开始学这个 呵呵
/*************************************
试图使程序最小化到托盘上
*************************************/
void CDXShow3Dlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if (nType == SIZE_MINIMIZED)
{
NOTIFYICONDATA nc;
nc.cbSize=sizeof(NOTIFYICONDATA);
nc.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
nc.hWnd=m_hWnd;
strcpy(nc.szTip, "DXShow3 Video Player");
nc.uCallbackMessage=WM_BACK; // 点击托盘图标时发送的自定义消息
nc.uFlags=NIF_TIP|NIF_MESSAGE|NIF_ICON;
Shell_NotifyIcon(NIM_ADD,&nc); // 在托盘区显示对应的头标
ShowWindow(false);
}
}
然后在自定义消息WM_BACK的处理函数中添加如下代码即可:
/*******************************
自定义消息,用于点击托盘
图标恢复原窗口。
*******************************/
LRESULT CDXShow3Dlg::OnBack(WPARAM wparam, LPARAM lparam)
{
UINT uMouseMsg; // 捕获鼠标动作
uMouseMsg=(UINT) lparam;
if(uMouseMsg==WM_LBUTTONDOWN)
{
// 托盘上鼠标左键,重新显示
ShowWindow(SW_SHOW);
NOTIFYICONDATA nc;
nc.cbSize=sizeof(NOTIFYICONDATA);
nc.hWnd=AfxGetMainWnd()->m_hWnd;
nc.uID=IDR_MAINFRAME;
Shell_NotifyIcon(NIM_DELETE, &nc);
ShowWindow( SW_RESTORE );
SetForegroundWindow();
UpdateWindow();
// ::SetWindowPos(this->GetSafeHwnd(),HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
}
if(uMouseMsg==WM_RBUTTONDOWN)
{
// 右键是弹出菜单
AfxGetMainWnd()->SetForegroundWindow(); //弹出Popup菜单
CMenu menu;
menu.LoadMenu(IDR_MAINMENU);
CMenu* pPopup=menu.GetSubMenu(1);
CPoint Point;
GetCursorPos(&Point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN, Point.x, Point.y, AfxGetMainWnd(), NULL );
AfxGetMainWnd()->PostMessage(WM_NULL, 0, 0);
}
return 0L;
}