启动任务栏上操作问题(高分)

liken218 2002-08-02 05:26:02
我把应用程序图标缩在启动任务栏上,但无法操作,如重新打开和退出,即click mouse的右键就会出现操作菜单,哪位高手指导一下小弟一条路走走?

原程序如下:

应用程序的App的InitInstance()中增加下面的代码

NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=m_pMainWnd->m_hWnd; //设置与图标相联的窗口
tnd.uID=IDR_MAINFRAME; //设置要显示的图标为主帧窗口图标
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; //设置标志,使其余的值有效
tnd.uCallbackMessage=WM_TRAY; //设置窗口响应消息为WM_TRAY
tnd.hIcon=LoadIcon(MAKEINTRESOURCE(IDR_MAINFRAME)); //设置图标句柄
strcpy(tnd.szTip,"我的程序"); //设置提示信息
::Shell_NotifyIcon(NIM_ADD,&tnd); //在托盘上加上图标
m_pMainWnd->ShowWindow(SW_HIDE);//隐藏主窗口
m_pMainWnd->UpdateWindow();

...全文
46 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoogleGeek 2002-08-03
  • 打赏
  • 举报
回复
to:csdnmem
在你的CMainFrame::OnClose()
{
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=m_hWnd;
tnid.uID=IDR_MAINFRAME;//保证删除的是我的图标
Shell_NotifyIcon(NIM_DELETE,&tnid);
PostQuitMessage(WM_QUIT)
}
csdnmem 2002-08-03
  • 打赏
  • 举报
回复
但是关闭程序时,tray不会更新
大家怎么都没注意呢?
s_phoenix 2002-08-03
  • 打赏
  • 举报
回复
gz
dnyz 2002-08-02
  • 打赏
  • 举报
回复
我有一个程序用到系统托盘的,你要吗,把你的email留言给我.

然后给点分,呵呵 :)
GoogleGeek 2002-08-02
  • 打赏
  • 举报
回复
正常的思路同Xeroo(初来乍到,多多关照)
响应WM_TRAY消息!

void CYourApp::OnTray(WPARAM wParam,LPARAM lParam)
{
//The example of how to process the message!
UINT uID;//发出该消息的图标的ID
UINT uMouseMsg;//鼠标动作
POINT pt;
//获得消息的ID
uID=(UINT) wParam;
//获得当前的消息
uMouseMsg=(UINT) lParam;

if(uMouseMsg==WM_RBUTTONDOWN)//如果是单击右键
{
switch(uID)
{
case IDR_MAINFRAME://如果是我的图标
GetCursorPos(&pt);//取得鼠标位置
::SetForegroundWindow( m_hWnd); //将窗口推向前台
CMenu menu;
menu.LoadMenu(IDR_MENU_NEW);
//显示右键菜单
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,pt.x,pt.y,this);
//但鼠标离开右键菜单时,即使地删除右键菜单!
//(因为主窗口不可见,这样做只是进行一下简单的模拟)
::PostMessage( m_hWnd, WM_NULL, 0, 0 );
break;
}
}
return;
}
howtotell 2002-08-02
  • 打赏
  • 举报
回复
#define TASKBAR_ICON WM_USER+0x111
#define FLOADMENU WM_USER+0x112

除了你写出来的还要在类视图中右键添加以下的虚函数.
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
我的程序中是这样的.
LRESULT CIllpcView::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_USER + 100:
if(lParam == WM_LBUTTONDOWN)
{
if(!m_IsShow)
{
::AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOWNORMAL);
BringWindowToTop();
m_IsShow = TRUE;
}
else
{
::AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
m_IsShow = FALSE;
}
}
if(lParam == WM_RBUTTONDOWN)
{
CMenu menu;
if(!menu.LoadMenu(IDR_SAVE_PIC)) break;
CMenu* pSubMenu = menu.GetSubMenu(0);

CPoint pos;
GetCursorPos(&pos);
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN,pos.x,pos.y, this, NULL);
menu.DestroyMenu();
}
if(lParam == WM_LBUTTONDBLCLK)
{
MessageBox(m_desIP,"Destination",MB_OK);
}
break;
}
return CFormView::DefWindowProc(message, wParam, lParam);

}
FFXI 2002-08-02
  • 打赏
  • 举报
回复
按楼上的方法就可以了。
Xeroo 2002-08-02
  • 打赏
  • 举报
回复
在文件的开头添加#define WM_TRAY (WM_APP+100)
然后在消息映射里添加ON_MESSAGE(WM_TRAY,OnTray)
再添加成员函数
void ***::OnTray()
{
UINT uID=(UINT)wParam;
UINT uMouseMsg=(UINT)lParam;
if(uID==IDR_MAINFRAME)
{
switch(uMouseMsg)
{
case WM_RBUTTONDOWN:
...
case WM_LBUTTONDBLCLK:
...
case ...
}
}
}
破解版为最新完美版。支持WIN7隐藏任务栏图标。 使用说明: 把zh_cn.lng_rad分别拷贝到服务端的C:\WINDOWS\system32\rserver30,客户端的C:\Program Files\Radmin Viewer 3目录里。然后在设置为中文就行了。选项"Options..."语言"Language". 最新Radmin 3.4完美破解版 隐藏任务栏图标 ] Radmin (Remote Administrator)是一款屡获殊荣的远程控制软件,它将远程控制、外包服务组件、以及网络监控结合到一个系统里,提供目前为止最快速、强健而安全的工具包。   它有以下特点:   1.运行速度快。   2.Radmin支持被控端以服务的方式运行、支持多个连接和IP 过滤(即允许特定的IP控制远程机器)、个性化的档互传、远程关机、支持高分辨率模式、基于Windows NT的安全支持及密码保护以及提供日志文件支持等。   3.在安全性方面,Radmin支持Windows NT/2000用户级安全特性,您可以将远程控制的权限授予特定的用户或者用户组,Radmin将以加密的模式工作,所有的数据(包括屏幕影像、鼠标和键盘的移动)都使用128位强加密算法加密; 服务器端会将所有操作写进日志文件,以便于事后查询,服务器端有IP过滤表,对IP过滤表以外的控制请求将不予回应。   4.Radmin 目前支持TCP/IP协议,应用十分广泛。   安全性亮点:   高级 256-位 AES 强加密用于所有数据流。   可以使用 Windows Security 或 Radmin Security。   Windows 安全性支持对特定用户使用不同的权限,或对主域、可信域和活动目录的用户组使用不同的权限。 支持自动使用登录用户凭证和 Kerberos 验证。   Radmin 安全性支持对添加到 Radmin Server 访问列表的用户使用不同的权限。 Radmin 用户验证使用新的基于 Diffie-Hellman 的密钥交换,密钥长度 2048 位。   IP Filter 仅允许从特定 IP 地址和网络访问 Radmin Server。   添加到日志文件的 DNS 名称和用户名信息。   智能防护密码猜测。   安全性已经构建到了 Radmin 的核心:   Radmin 服务器有两个安全子系统。 因此您可以设置 Radmin 使用 Windows 的内嵌安全性或 Radmin 安全性。 Radmin 支持 Windows Vista/XP/2003/2000(32位和64位)用户级安全性,带有 Kerberos 和 NTLMv2 支持,以限制来自本地计算机、主域、可信域或活动目录的用户对特定用户或用户组的远程访问。 安全设置接口与 Windows 标准统一。   使用 Radmin 安全性时,您可以为 Radmin 用户设置不同的权限。 对于用户验证和会话密钥,使用了 Diffie-Hellman 交换 2048 位密钥的设置。   对于数据流加密,Radmin 使用了带 256 密钥的 AES。 Radmin 为每个会话生成独特的 256 位密钥,从而实现了无与伦比的保护。   使用的算法是最新的加密方法,密钥长度也远远高于行业标准。   所有数据,包括屏幕图像、光标移动和键盘信号都始终加密。 对于 Radmin 2.x 和 3.x 是无法取消加密的。   Radmin 将其所有操作和事件记录到日志文件中。   Radmin 有个 IP 过滤器表,允许您限制对特定 IP 地址和网络的远程访问。   Radmin 有内置的代码测试防御机制,保护程序的代码不受改变。   Radmin 用大随机码序(random bit sequence)为每个连接生成特有的私钥,以实现无与伦比的保护。 访问密码以加密的形式保存,不会以任何形式在计算机之间传输,防止第三方截取或生成密码。   Radmin 防止错误的服务器配置。 Radmin Server 不允许空密码。   Radmin Server 积极地保护其设置,它们保存在系统注册表里。 只有管理员权限的用户才能访问这个注册表区段。   智能防护密码猜测。 这项保护包含的功能有密码反猜测安全延时、密码猜测次数过多禁止 IP 地址等。   Radmin Server 在 Windows Vista/XP/2003/2000 (32 位和 64 位) 上作为一个服务启动,而不作为应用程序启动,增强了安全性。   您可以在您的计算机屏幕上的一个窗口或全窗口内看见远程计算机的画面。   您所有的搜索活动和 新闻都直接的传输到您的远程计算机,您可以工作在远程计算机上就跟在自己的计算机上一样正确的执行。根据我们的测试及使用者的回报,Radmin在速度及可以工作的数量上胜过其他的远程控制软件。   这些远程的计算机可以放置在因特网或您的局域网络内的任何一个地方,有了Radmin您不必需要一个快速的网络联机来在远程的计算机上工作,即使您只能利用modem来联机,您也可以每秒能够到达屏幕更新5-10次的合理速度。如果利用局域网络联机的话,您可以每秒能够到达屏幕更新100-500次的实时速度。它可以上下调整来挽救带宽。   安全和可靠性   Radmin 是容易使用和非常安全的,数据以128位加密传送的,这个软件是以TCP/IP协议为基底,在广域及局域网络内有最多最广泛的协定。这个意思是您可以控制世界上任何一台的计算机。当在"Full control"的模式下时,您可以让远程的计算机做您想要的事情;档案的来回传送,甚至关机。 那是,假如您是这个系统的管理者或是已经授权给sysadmin这些允许。 Radmin 从开始就设计的非常安全。   它极为可靠,工作了许多个月也不会有例外。   容易使用   Radmin有一个重要的优势就是有一个简单的接口,它没有一些无用的功能特色来膨胀这个软件,让它难以使用、学习和变的更慢。
最新Radmin 3.4完美破解版 隐藏任务栏图标 ] Radmin (Remote Administrator)是一款屡获殊荣的远程控制软件,它将远程控制、外包服务组件、以及网络监控结合到一个系统里,提供目前为止最快速、强健而安全的工具包。   它有以下特点:   1.运行速度快。   2.Radmin支持被控端以服务的方式运行、支持多个连接和IP 过滤(即允许特定的IP控制远程机器)、个性化的档互传、远程关机、支持高分辨率模式、基于Windows NT的安全支持及密码保护以及提供日志文件支持等。   3.在安全性方面,Radmin支持Windows NT/2000用户级安全特性,您可以将远程控制的权限授予特定的用户或者用户组,Radmin将以加密的模式工作,所有的数据(包括屏幕影像、鼠标和键盘的移动)都使用128位强加密算法加密; 服务器端会将所有操作写进日志文件,以便于事后查询,服务器端有IP过滤表,对IP过滤表以外的控制请求将不予回应。   4.Radmin 目前支持TCP/IP协议,应用十分广泛。   安全性亮点:   高级 256-位 AES 强加密用于所有数据流。   可以使用 Windows Security 或 Radmin Security。   Windows 安全性支持对特定用户使用不同的权限,或对主域、可信域和活动目录的用户组使用不同的权限。 支持自动使用登录用户凭证和 Kerberos 验证。   Radmin 安全性支持对添加到 Radmin Server 访问列表的用户使用不同的权限。 Radmin 用户验证使用新的基于 Diffie-Hellman 的密钥交换,密钥长度 2048 位。   IP Filter 仅允许从特定 IP 地址和网络访问 Radmin Server。   添加到日志文件的 DNS 名称和用户名信息。   智能防护密码猜测。   安全性已经构建到了 Radmin 的核心:   Radmin 服务器有两个安全子系统。 因此您可以设置 Radmin 使用 Windows 的内嵌安全性或 Radmin 安全性。 Radmin 支持 Windows Vista/XP/2003/2000(32位和64位)用户级安全性,带有 Kerberos 和 NTLMv2 支持,以限制来自本地计算机、主域、可信域或活动目录的用户对特定用户或用户组的远程访问。 安全设置接口与 Windows 标准统一。   使用 Radmin 安全性时,您可以为 Radmin 用户设置不同的权限。 对于用户验证和会话密钥,使用了 Diffie-Hellman 交换 2048 位密钥的设置。   对于数据流加密,Radmin 使用了带 256 密钥的 AES。 Radmin 为每个会话生成独特的 256 位密钥,从而实现了无与伦比的保护。   使用的算法是最新的加密方法,密钥长度也远远高于行业标准。   所有数据,包括屏幕图像、光标移动和键盘信号都始终加密。 对于 Radmin 2.x 和 3.x 是无法取消加密的。   Radmin 将其所有操作和事件记录到日志文件中。   Radmin 有个 IP 过滤器表,允许您限制对特定 IP 地址和网络的远程访问。   Radmin 有内置的代码测试防御机制,保护程序的代码不受改变。   Radmin 用大随机码序(random bit sequence)为每个连接生成特有的私钥,以实现无与伦比的保护。 访问密码以加密的形式保存,不会以任何形式在计算机之间传输,防止第三方截取或生成密码。   Radmin 防止错误的服务器配置。 Radmin Server 不允许空密码。   Radmin Server 积极地保护其设置,它们保存在系统注册表里。 只有管理员权限的用户才能访问这个注册表区段。   智能防护密码猜测。 这项保护包含的功能有密码反猜测安全延时、密码猜测次数过多禁止 IP 地址等。   Radmin Server 在 Windows Vista/XP/2003/2000 (32 位和 64 位) 上作为一个服务启动,而不作为应用程序启动,增强了安全性。   您可以在您的计算机屏幕上的一个窗口或全窗口内看见远程计算机的画面。   您所有的搜索活动和 新闻都直接的传输到您的远程计算机,您可以工作在远程计算机上就跟在自己的计算机上一样正确的执行。根据我们的测试及使用者的回报,Radmin在速度及可以工作的数量上胜过其他的远程控制软件。   这些远程的计算机可以放置在因特网或您的局域网络内的任何一个地方,有了Radmin您不必需要一个快速的网络联机来在远程的计算机上工作,即使您只能利用modem来联机,您也可以每秒能够到达屏幕更新5-10次的合理速度。如果利用局域网络联机的话,您可以每秒能够到达屏幕更新100-500次的实时速度。它可以上下调整来挽救带宽。   安全和可靠性   Radmin 是容易使用和非常安全的,数据以128位加密传送的,这个软件是以TCP/IP协议为基底,在广域及局域网络内有最多最广泛的协定。这个意思是您可以控制世界上任何一台的计算机。当在"Full control"的模式下时,您可以让远程的计算机做您想要的事情;档案的来回传送,甚至关机。 那是,假如您是这个系统的管理者或是已经授权给sysadmin这些允许。 Radmin 从开始就设计的非常安全。   它极为可靠,工作了许多个月也不会有例外。   容易使用   Radmin有一个重要的优势就是有一个简单的接口,它没有一些无用的功能特色来膨胀这个软件,让它难以使用、学习和变的更慢。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧