gpt4 book ai didi

c++ - 从托盘中删除图标

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:03 26 4
gpt4 key购买 nike

使用下面的代码会导致有时图标会在调用 removeIconFromTray 方法后立即保留在托盘中,只有在用户移动到托盘中的图标上方后才会消失。

void CMyDlg::addIconToTray()
{
static HICON hIcon = ::LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
NOTIFYICONDATA data;

data.cbSize = sizeof(data);
data.hIcon = hIcon;
data.hWnd = m_hWnd;
strcpy (data.szTip, m_sTrayIconTip.c_str());
data.uFlags = NIF_ICON | NIF_TIP;
data.uID = (UINT)this;

Shell_NotifyIcon (NIM_ADD, &data);
}

void CMyDlg::removeIconFromTray()
{
NOTIFYICONDATA data;

data.cbSize = sizeof(data);
data.hWnd = m_hWnd;
data.uID = (UINT)this;

Shell_NotifyIcon (NIM_DELETE, &data);

}

这段代码有什么问题?如何实现一旦从托盘中删除图标的代码完成工作,图标就会从托盘中消失?

最佳答案

一个明显的问题是您未能初始化您的结构。你应该这样做:

NOTIFYICONDATA data = { 0 };

除此之外检查错误并调用 GetLastError 找出导致任何错误的原因。

关于c++ - 从托盘中删除图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8050904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com