我有一个对话框程序,已经加上了托盘的技术,现在该对话框的标题栏只有关闭一个按键,如果在对话框的属性里设置有最小话按钮,中间又多一个虽然不能用的最大话按钮,我不想这样,就是只加一个最小话按钮,按该按钮以后对话框可以缩到托盘那里,要怎么弄呢?请指教!
将程序最小化到系统托盘区的函数toTray()。
void CTimeWakeDlg::toTray()
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"计划任务提醒");//信息提示条为“计划任务提醒”
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
ShowWindow(SW_HIDE);//隐藏主窗口
}
这是个很简单的函数,里面首先给NOTIFYICONDATA赋值,然后调用shell_NotifyIcon, 头一个参数是NIM_ADD,表示添加。然后用函数ShowWindow 隐藏主窗口,这样,就实现了将程序最小化到系统托盘区的任务了。
HMENU hSysMenu = GetSystemMenu(<parent wndhandle>, FALSE);
RemoveMenu(hSysMenu,SC_MAXIMIZE , MF_BYCOMMAND);
RemoveMenu(hSysMenu,SC_SIZE , MF_BYCOMMAND);
在OnCreate(LPCREATESTRUCT lpCreateStruct) 函数里面,
SetWindowLong(this->m_hWnd,GWL_STYLE,
GetWindowLong(this->m_hWnd,GWL_STYLE) |
WS_MINIMIZEBOX);
但是也仅仅是把最大化按钮禁用而已!