⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_65703.htm

📁 vc
💻 HTM
字号:
<p>
序号:65703 发表者:郑冰火 发表日期:2003-12-19 00:32:39
<br>主题:如何让图标在任务栏显示
<br>内容:请教如何将一个图表显示在任务栏右端并响应用户的鼠标动作,我的程序在任务栏多了一块空白区域,但图标显示不出来,为何?希望高手赐教<BR>我的一部分代码:<BR>&nbsp;&nbsp;&nbsp;&nbsp;NOTIFYICONDATA tnd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.cbSize=sizeof(NOTIFYICONDATA);<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.hWnd=this-&gt;m_hWnd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.uID=IDR_MAINFRAME;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.uFlags=NIF_MESSAGE/NIF_ICON/NIF_TIP;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.uCallbackMessage=WM_LIBEN;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAKEINTRESOURCE(IDR_MAINFRAME));<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(tnd.szTip,&#34;HELLO&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shell_NotifyIcon(NIM_ADD,&amp;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>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.cbSize=sizeof(NOTIFYICONDATA);<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.hWnd=m_hWnd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.uID=7721;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.uCallbackMessage=WM_LIBEN;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(tnd.szTip,&#34;HELLO&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;tnd.hIcon=hIcon;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shell_NotifyIcon(NIM_ADD,&amp;tnd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;&nbsp;::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>内容:怎样取消系统托盘弹出的菜单&nbsp;&nbsp;<BR>主要在下一段。。。。 <BR> <BR>我有一个应用程序不显示窗口(建立窗口时使用了SW_HIDE参数),它只在任务条<BR>显示一个图标,我是这样做的:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOTIFYICONDATA tnid;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tnid.cbSize = sizeof(NOTIFYICONDATA);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tnid.hWnd = m_hWnd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tnid.uID = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tnid.uCallbackMessage = MYWM_NOTIFYICON;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tnid.hIcon = AfxGetApp()-&gt;LoadIcon( IDI_ICON1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lstrcpyn(tnid.szTip, &#34;Giroimag Image Mail Exchange&#34;, <BR>strlen(&#34;Giroimag Image Mail Exchange&#34;)+1);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shell_NotifyIcon(NIM_ADD, &amp;tnid);<BR>&nbsp;&nbsp;当我点击任务条时,程序会显示一个弹出菜单:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMenu m_Menu;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.CreatePopupMenu();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_STRING, IDM_ABOUT, &#34;Op&amp;1&#34; );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_SEPARATOR, 0 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_STRING, IDM_CONFIG, &#34;Op&amp;2&#34; );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_STRING, IDM_STATUS, &#34;&#34;Op&amp;3&#34; );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_SEPARATOR, 0 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_STRING, IDM_SEND, &#34;Op&amp;4&#34; );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_STRING, IDM_RECEIVE, &#34;Op&amp;5&#34; );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_SEPARATOR, 0 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.AppendMenu( MF_STRING, IDM_CLOSE, &#34;Op&amp;6&#34; );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POINT p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetCursorPos( &amp; p );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Menu.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, p.x, <BR>p.y, this );<BR>&nbsp;&nbsp;到这为止,程序运行很正常,问题在于如果我不选择任何菜单该怎样取消它?<BR>我以为按ESC或者在菜单外面点击就可以取消,但事实并不是这样。我也试过用<BR>WIN32API中的TrackPopupMenuEx函数但没有用,到底我该怎么做?<BR><BR>1)最简单的方法在消息映象中加&#34;Cancel Menu&#34;命令即可。<BR>2)尽管你的主窗口不可见,但在你可以在调用m_Menu.TrackPopupMenu();时将其<BR>置为最前。<BR>3)在你弹出菜单之前,设置你的窗口为最前窗口,调用下面的代码,问题就会迎<BR>刃而解。<BR><BR>POINT p;<BR>GetCursorPos( &amp; 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>&nbsp;&nbsp;4)调用TrackPopupMenu()之前,你必须先调用SetForegroundWindow( m_hWnd <BR>),然后调用PostMessage( m_hWnd, WM_NULL, 0, 0 ):<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; POINT point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetCursorPos( &amp;point );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetForegroundWindow( m_hWnd );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TrackPopupMenu( hPopup,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TPM_RIGHTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.x,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.y,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_hWnd, 0 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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 + -