如何为系统托盘内的图标弹出的菜单编写代码?????
解决方案 »
- MDI中创建的对话框中创建视图!
- 图片管理-句柄问题
- CRecordSet与多个表关联,如何分别打开??
- win2k 中,两个进程如果 通过 filemapping对象 共享数据,一个进程如果修改了其中的数据,如何通知另一方?
- 关于图形旋转方面的问题,大哥们帮忙看看(100分)
- 初学者问题:如何获得控件 check radio ComboBox ListBox 的状态?
- 关于com组件的GUID,高分求助!!!
- 如何得到列表视的列标题,有GetHeaderCtrl()好像还不能实现?
- 1.6G的MSDN一个ISO文件,如何刻成一张一张的光盘
- 在atl,怎样将int转换为string?
- 急!!!我用MFC在單文檔的主框架中建立了一個樹形控件,如何添加它的響應事件呀!
- 请问几个关于按钮的属性问题
NOTIFYICONDATA nd;
2、在程序的初始化中加入下面代码 nd.cbSize= sizeof (NOTIFYICONDATA);
nd.hWnd= m_hWnd;
nd.uID= IDR_MAINFRAME;
nd.uFlags= NIF_ICON|NIF_MESSAGE|NIF_TIP;
nd.uCallbackMessage= WM_NOTIFYICON;
nd.hIcon= m_hIcon;
strcpy(nd.szTip, "我的托盘");
Shell_NotifyIcon(NIM_ADD, &nd);
3、在程序的退了函数中加入删除托盘图标语句 Shell_NotifyIcon(NIM_DELETE, &nd);
void CbackdropDlg::OnShow()
{
ShowWindow( SW_SHOWNORMAL);//恢复正常显示
}void CbackdropDlg::OnExit()
{
::PostQuitMessage(0); //退出
}
void CbackdropDlg::OnHide()
{
ShowWindow(SW_HIDE);//隐藏
}void CbackdropDlg::OnMin()
{
ShowWindow(SW_SHOWMINIMIZED);//最小化
}三、添加响应函数 1、在类中加入托盘消息响应函数 LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
2、手中添加消息映射 //}}AFX_MSG_MAP
ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)//手工添加消息映射
END_MESSAGE_MAP()
3、在托盘消息响应函数中添加代码 LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
// 响应在托盘图标上的单击
//wParam中是响应消息的图标ID,lParam中则是Windows的消息
// The backdrop icon sent us a message. Let''s see what it is
switch ( lParam )
{
case WM_RBUTTONDOWN:
{
// 用户在托盘图标上单击鼠标右键,弹出菜单
CMenu pMenu;
if (pMenu.LoadMenu(IDR_MENU1))
{
CMenu* pPopup = pMenu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CPoint Point;
if(IsIconic()) pPopup->EnableMenuItem(IDC_MIN,MF_BYCOMMAND |
MF_DISABLED | MF_GRAYED);
if (IsWindowVisible())// 根据对话框窗口的状态对相关菜单项使能
{
if(!IsIconic())
pPopup->EnableMenuItem(IDC_SHOW,MF_BYCOMMAND |
MF_DISABLED | MF_GRAYED);
}
else
pPopup->EnableMenuItem(IDC_HIDE,MF_BYCOMMAND |
MF_DISABLED | MF_GRAYED);
if (bkbmp)// 根据对话框背景图状态改变菜单名称
pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,"变化背景");
else
pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,"固定背景)");
// 确定鼠标位置以便在该位置附近显示菜单
GetCursorPos( &Point );
SetForegroundWindow();
pPopup->TrackPopupMenu(
TPM_LEFTALIGN | TPM_RIGHTBUTTON,
Point.x, Point.y, this);?
}
}
break;
case WM_LBUTTONDBLCLK:
case WM_LBUTTONDOWN:
// OnShow();
break;
}
return 0;
}