(windows程序设计)如何知道鼠标点击了状态栏中的图标? 想做一个效果,就像QQ在桌面右下角有个小图标,但是用Windows程序设计,我要怎样才能地道这个坐标,并且使其响应鼠标双击事件而重新弹出界面 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主说的应该是托盘图标吧,就是在屏幕的右下角的图标显示可以用NOTIFYICONDATA结构体和BOOL Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA lpdata);这个函数。此函数用来向任务栏托盘区域发送消息。NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。 做一个托盘程序就可以了。 NOTIFYICONDATA nd; nd.cbSize = sizeof (NOTIFYICONDATA); nd.hWnd = m_hWnd; nd.uID = IDI_ICON; nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; nd.uCallbackMessage = WM_NOTIFYICON; nd.hIcon = m_hIcon; strcpy(nd.szTip, "自己的内容"); Shell_NotifyIcon(NIM_ADD, &nd);消息映射BEGIN_MESSAGE_MAP(CServerMenuCheckDlg, CDialog) //{{AFX_MSG_MAP(CServerMenuCheckDlg) ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon) //}}AFX_MSG_MAPEND_MESSAGE_MAP()点击ICON图标消息处理afx_msg void CServerMenuCheckDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam){ if ((wParam == IDI_ICON)) { switch (lParam) { case WM_LBUTTONDOWN : case WM_LBUTTONDBLCLK: if (IsWindowVisible()) { ShowWindow(SW_HIDE); } else { SetForegroundWindow(); ShowWindow(SW_SHOW); } break; case WM_RBUTTONDOWN : ShowMenu(); break; default : return; } }} Google之托盘图标,NOTIFYICONDATA Shell_NotifyIcon 关于收到http请求后的页面重定向的问题 连接问题 ADO 的 UpdateBatch 问题 从资源文件里直接替换一个位图文件,会对程序有影响吗? directshow 请问如何判断CArchive的文件已经结束了 拖拽的问题 =====请教一个内存泄漏问题===== 如何快捷的用odbc获得纪录集的总记录数。 WINDOWS 的消息的定义? VC++入门问题......轻松拿分,只要你有经验 如何在单文档视图中添加一个树形控件
NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。
nd.cbSize = sizeof (NOTIFYICONDATA);
nd.hWnd = m_hWnd;
nd.uID = IDI_ICON;
nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nd.uCallbackMessage = WM_NOTIFYICON;
nd.hIcon = m_hIcon;
strcpy(nd.szTip, "自己的内容"); Shell_NotifyIcon(NIM_ADD, &nd);消息映射
BEGIN_MESSAGE_MAP(CServerMenuCheckDlg, CDialog)
//{{AFX_MSG_MAP(CServerMenuCheckDlg)
ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()点击ICON图标消息处理
afx_msg void CServerMenuCheckDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
if ((wParam == IDI_ICON))
{
switch (lParam)
{
case WM_LBUTTONDOWN :
case WM_LBUTTONDBLCLK:
if (IsWindowVisible())
{
ShowWindow(SW_HIDE);
}
else
{
SetForegroundWindow();
ShowWindow(SW_SHOW);
}
break; case WM_RBUTTONDOWN :
ShowMenu();
break; default :
return;
}
}
}