VC++ SDK一问
请问,在用SDK写程序的时候
要实现在点击最小化按钮的时候
用哪个函数才能使程序的图标只在系统托盘里面显示
而不在任务栏显示啊?
谢谢了
问题点数:30、回复次数:13Top
1 楼webber84(***闭关修炼中***)回复于 2002-05-11 21:38:39 得分 0
Shell_NotifyIcon.Top
2 楼Crazyrebel(隔世情人)回复于 2002-05-11 21:39:43 得分 0
这个我知道,是在系统托盘加图标,
我是说怎么样点最小化按钮的时候
从任务拦中隐藏~~~~~~~Top
3 楼chen_jun_fen(穷的只能抽白粉)回复于 2002-05-11 21:42:43 得分 0
WM_HIDE
WM_SHOWTop
4 楼power4(唉!忙叴个啥哦!)回复于 2002-05-11 21:44:41 得分 0
这个函数满足你的愿望!多看看MSDN!
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA pnid
);
Sends a message to the system to add, modify, or delete an icon from the taskbar status area.
Returns nonzero if successful, or zero otherwise.
dwMessage
Message value to send. This parameter can be one of these values: NIM_ADD Adds an icon to the status area.
NIM_DELETE Deletes an icon from the status area.
NIM_MODIFY Modifies an icon in the status area.
pnid
Address of a NOTIFYICONDATA structure. The content of the structure depends on the value of dwMessage.
Top
5 楼Crazyrebel(隔世情人)回复于 2002-05-11 21:44:51 得分 0
这个是什么啊???
是消息??
我是要用函数来怎么样实现
谢谢~~~~`Top
6 楼Crazyrebel(隔世情人)回复于 2002-05-11 21:46:51 得分 0
我是说在最小化的时候在系统托盘显示图标,我已经作到了
但是在任务栏还是有程序按钮,怎么样消除这个,才是重要的啊 ???Top
7 楼power4(唉!忙叴个啥哦!)回复于 2002-05-11 22:07:59 得分 0
ShowWindow(handle,SW_HIDE)
Top
8 楼lanzhengpeng2(兰征鹏)回复于 2002-05-11 22:09:06 得分 0
ShowWindow(SW_HIDE)Top
9 楼quanxiongwei(毛毛熊)回复于 2002-05-11 22:17:53 得分 0
将窗口设成toolwin的形式。Top
10 楼Crazyrebel(隔世情人)回复于 2002-05-11 22:48:12 得分 0
不是一显示窗口就隐藏的啊,
是在点了最小化时,才不在任务拦显示的啊
用ShowWindow的那个是程序一开始执行就隐藏
我是说在点了最小化是才不显示在任务拦Top
11 楼pocky()回复于 2002-05-12 03:58:49 得分 20
转贴别人的一个帖子
在系统任务栏中添加小图标(Shell_NotifyIcon)
// 定义消息机制
#define WM_NOTIFYICON (WM_APP+100)
afx_msg void OnNotifyIcon(WPARAM wParam,LPARAM lParam);
ON_MESSAGE(WM_NOTIFYICON,OnNotifyIcon)
加入弹出式菜单资源 IDR_POPUP_MENU
BOOL CNotifyIconDlg::OnInitDialog()
{
............
// 加入小图标操作
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this->m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_NOTIFYICON;
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(tnd.szTip,"提示信息");
Shell_NotifyIcon(NIM_ADD,&tnd);
return TRUE; // return TRUE unless you set the focus to a control
}
// 此消息回调函数用于处理弹出式菜单的消息机制
void CMy011029D00Dlg::OnNotifyIcon(WPARAM wParam,LPARAM lParam)
{
UINT uID = (UINT)wParam;
UINT uMouseMsg = (UINT)lParam;
if(uID==IDR_MAINFRAME)
{
CMenu menu;
CPoint pt;
switch(uMouseMsg)
{
case WM_RBUTTONDOWN:
menu.LoadMenu(IDR_POPUP_MENU);
CMenu *pMenu;
pMenu = menu.GetSubMenu(0);
GetCursorPos(&pt);
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this);
break;
case WM_LBUTTONDBLCLK:
ShowWindow(SW_SHOW);
break;
}
}
}
// 删除小图标操作
void CMy011029D00Dlg::OnDestroy()
{
CDialog::OnDestroy();
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDR_MAINFRAME;
Shell_NotifyIcon(NIM_DELETE,&nid);
}
// hide dialog
void CMy011029D00Dlg::OnHide()
{
ShowWindow(SW_HIDE);
}
// display dialog
void CMy011029D00Dlg::OnDisplay()
{
ShowWindow(SW_SHOW);
Top
12 楼sofdev(东聿)回复于 2002-05-12 04:32:21 得分 10
WM_SYSCOMMAND中响应wParam为SC_MINIMIZED的消息
在此响应函数中调用ShowWindowTop
13 楼Crazyrebel(隔世情人)回复于 2002-05-12 13:35:18 得分 0
问题解决了,谢谢大家
case WM_SYSCOMMAND:
switch(LOWORD(wParam))
{
case ....
.........
.........
case SC_MINIMIZE:
Shell_NotifyIcon(NIM_ADD,&nid);
ShowWindow(hwnd,0);
return 0;
}
Top




