📄 subject_65703.htm
字号:
<p>
序号:65703 发表者:郑冰火 发表日期:2003-12-19 00:32:39
<br>主题:如何让图标在任务栏显示
<br>内容:请教如何将一个图表显示在任务栏右端并响应用户的鼠标动作,我的程序在任务栏多了一块空白区域,但图标显示不出来,为何?希望高手赐教<BR>我的一部分代码:<BR> NOTIFYICONDATA tnd;<BR> tnd.cbSize=sizeof(NOTIFYICONDATA);<BR> tnd.hWnd=this->m_hWnd;<BR> tnd.uID=IDR_MAINFRAME;<BR> tnd.uFlags=NIF_MESSAGE/NIF_ICON/NIF_TIP;<BR> tnd.uCallbackMessage=WM_LIBEN;<BR> tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),<BR> MAKEINTRESOURCE(IDR_MAINFRAME));<BR> strcpy(tnd.szTip,"HELLO");<BR> Shell_NotifyIcon(NIM_ADD,&tnd);<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:元元 回复日期:2003-12-19 13:00:20
<br>内容:你的tnd.uFlags=NIF_MESSAGE/NIF_ICON/NIF_TIP是有问题的,它不是/而应该是|,我帮你改了一下:<BR>HICON hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));<BR>if(hIcon)<BR>{ <BR> tnd.cbSize=sizeof(NOTIFYICONDATA);<BR> tnd.hWnd=m_hWnd;<BR> tnd.uID=7721;<BR> tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;<BR> tnd.uCallbackMessage=WM_LIBEN;<BR> strcpy(tnd.szTip,"HELLO");<BR> tnd.hIcon=hIcon;<BR> <BR> Shell_NotifyIcon(NIM_ADD,&tnd);<BR> DestroyIcon( hIcon );<BR>}<BR>给我加分,呵呵,有空也可以找我聊天<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:郑冰火 回复日期:2003-12-19 21:36:44
<br>内容:好的,给你加分,谢谢你呀/能不能在帮忙加上鼠标消息,也就是说,当用户在该图标上单击或双击鼠标执行相应的操作,至少也要响应用户终止该程序
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:元元 回复日期:2003-12-20 18:27:28
<br>内容:我看到你给我加的分拉,活活活,真美,都不好意思了。。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:DD_Xp 回复日期:2004-02-11 19:50:43
<br>内容:有一个问题,在右击鼠标右键点击托盘图标时候,我在这里用了一个<BR>API ::TrackPopupMenu();但是弹出的菜单不能象在 MFC 中的<BR>CMenu :: TrackPopupMenu();那样自动消除,并一直存在在Windows<BR>的窗口中,除了中断程序或者单击左键弹出原来的窗口才能释放原来的<BR>::TrackPopupMenu();
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:120 回复日期:2004-02-16 17:02:30
<br>内容:怎样取消系统托盘弹出的菜单 <BR>主要在下一段。。。。 <BR> <BR>我有一个应用程序不显示窗口(建立窗口时使用了SW_HIDE参数),它只在任务条<BR>显示一个图标,我是这样做的:<BR> NOTIFYICONDATA tnid;<BR><BR> tnid.cbSize = sizeof(NOTIFYICONDATA);<BR> tnid.hWnd = m_hWnd;<BR> tnid.uID = 1;<BR> tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;<BR> tnid.uCallbackMessage = MYWM_NOTIFYICON;<BR> tnid.hIcon = AfxGetApp()->LoadIcon( IDI_ICON1 );<BR> lstrcpyn(tnid.szTip, "Giroimag Image Mail Exchange", <BR>strlen("Giroimag Image Mail Exchange")+1);<BR><BR> Shell_NotifyIcon(NIM_ADD, &tnid);<BR> 当我点击任务条时,程序会显示一个弹出菜单:<BR> CMenu m_Menu;<BR><BR> m_Menu.CreatePopupMenu();<BR><BR> m_Menu.AppendMenu( MF_STRING, IDM_ABOUT, "Op&1" );<BR> m_Menu.AppendMenu( MF_SEPARATOR, 0 );<BR> m_Menu.AppendMenu( MF_STRING, IDM_CONFIG, "Op&2" );<BR> m_Menu.AppendMenu( MF_STRING, IDM_STATUS, ""Op&3" );<BR> m_Menu.AppendMenu( MF_SEPARATOR, 0 );<BR> m_Menu.AppendMenu( MF_STRING, IDM_SEND, "Op&4" );<BR> m_Menu.AppendMenu( MF_STRING, IDM_RECEIVE, "Op&5" );<BR> m_Menu.AppendMenu( MF_SEPARATOR, 0 );<BR> m_Menu.AppendMenu( MF_STRING, IDM_CLOSE, "Op&6" );<BR><BR> POINT p;<BR> GetCursorPos( & p );<BR><BR> m_Menu.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, p.x, <BR>p.y, this );<BR> 到这为止,程序运行很正常,问题在于如果我不选择任何菜单该怎样取消它?<BR>我以为按ESC或者在菜单外面点击就可以取消,但事实并不是这样。我也试过用<BR>WIN32API中的TrackPopupMenuEx函数但没有用,到底我该怎么做?<BR><BR>1)最简单的方法在消息映象中加"Cancel Menu"命令即可。<BR>2)尽管你的主窗口不可见,但在你可以在调用m_Menu.TrackPopupMenu();时将其<BR>置为最前。<BR>3)在你弹出菜单之前,设置你的窗口为最前窗口,调用下面的代码,问题就会迎<BR>刃而解。<BR><BR>POINT p;<BR>GetCursorPos( & p );<BR><BR>// Increase the thread priority by invoking SetForegroundWindow.<BR>SetForegroundWindow();<BR><BR>m_Menu.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, p.x, p.y, this <BR>);<BR> 4)调用TrackPopupMenu()之前,你必须先调用SetForegroundWindow( m_hWnd <BR>),然后调用PostMessage( m_hWnd, WM_NULL, 0, 0 ):<BR><BR> POINT point;<BR> GetCursorPos( &point );<BR> SetForegroundWindow( m_hWnd );<BR> TrackPopupMenu( hPopup,<BR> TPM_RIGHTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,<BR> point.x,<BR> point.y,<BR> 0,<BR> m_hWnd, 0 );<BR> PostMessage( m_hWnd, WM_NULL, 0, 0 );<BR> <BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -