
#define WM_NOTIFYICON (WM_USER+1)
#define IDM_SHOWMAIN 8577//托盘右键菜单的打开主界面选项
#define IDM_EXIT 24876//托盘右键菜单的退出选项
HMENU hpopupmenu
NOTIFYICONDATA notifyicondata
hpopupmenu=CreatePopupMenu()//创建一个d出式菜单
//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏),将程序结束。
AppendMenu(hpopupmenu,MF_STRING,IDM_SHOWMAIN,TEXT("打开主界面"))
AppendMenu(hpopupmenu,MF_STRING,IDM_EXIT,TEXT("关闭"))
notifyicondata.cbSize=sizeof(NOTIFYICONDATA)
notifyicondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP//旗标NIF_ICON使hIcon成员有效,NIF_MESSAGE使uCallbackMessage成员有效,NIF_TIP使szTip成员有效
notifyicondata.hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON))//拖盘图标
notifyicondata.hWnd=hwnd//接收通知消息的窗口
strcpy(notifyicondata.szTip,TEXT("鼠标悬停在托盘图标上的提示信息"))
notifyicondata.uCallbackMessage=WM_NOTIFYICON//自定义通知消息的ID
notifyicondata.uID=104//任务栏图标的ID,作为通知消息的wParam发送
Shell_NotifyIcon(NIM_ADD,&notifyicondata)
1、创建mfc工程(对话框)2、在myApp.cpp中InitInstance()中修改如下:
CDialog* pd = new CDialog
HICON hIcon = LoadIcon(IDR_MAINFRAME)
pd->Create(IDD_TEMP_DIALOG)//IDD_TEMP_DIALOG是一个不显示的对话框资源ID
pd->SetWindowText("QQ_Loginer")
pd->SetIcon(hIcon, TRUE)
CQQ_LoginerDlg dlg(pd)
m_pMainWnd = &dlg
int nResponse = dlg.DoModal()
3、在myAppDlg.h中加入初始化变量和函数:
public:
void InitialNotifyIcon()
BOOL wndst
NOTIFYICONDATA NotifyIcon
protected:
afx_msg void OnNotifyIcon(WPARAM wParam,LPARAM IParam)
4、在myAppDlg.cpp中的OnInitDialog()加入如下代码:
wndst = FALSE
InitialNotifyIcon()
加入函数:
void CmyAppDlg::OnNotifyIcon(WPARAM wParam, LPARAM IParam)
{
if (IParam == WM_LBUTTONUP)
{
if (wndst)
{
ShowWindow(SW_SHOW)
}
else
{
ShowWindow(SW_HIDE)
}
wndst = !wndst
}
}
void CmyAppDlg::InitialNotifyIcon()
{
ShowWindow(SW_HIDE)
NotifyIcon.cbSize = sizeof(NOTIFYICONDATA)
NotifyIcon.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME)
NotifyIcon.hWnd = m_hWnd
lstrcpy(NotifyIcon.szTip, "QQ_Loginer")
NotifyIcon.uCallbackMessage = WM_NC
NotifyIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP
Shell_NotifyIcon(NIM_ADD, &NotifyIcon)
}
别忘记加入消息函数:
void CmyAppDlg::OnClose()
{
Shell_NotifyIcon(NIM_DELETE, &NotifyIcon)
exit(0)
CDialog::OnClose()
}
附:改变停留消息提示(淡黄色便签提示)的方法:
CString title
title = "[Refresh rate: " + m_interval + "s]"
AfxGetMainWnd()->SetWindowText(title)
lstrcpy(NotifyIcon.szTip, title)
Shell_NotifyIcon(NIM_MODIFY, &NotifyIcon)
要源码的hi我,这里贴怕吞。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)