zoukankan      html  css  js  c++  java
  • mfc 对话框程序 托盘实现

    1 在头文件里面定义 消息

    #define  WM_SHOWTASK  WM_USER+10
    

      在主窗口类里面定义 一个变量 两个函数

      a 变量 托盘结构体的变量

    NOTIFYICONDATA m_nid;
    

      b 初始化上述变量的函数 

    void ToTray(void);
    

      c 托盘的消息处理函数

    LRESULT onShowTask(WPARAM wParam,LPARAM lParam);
    

    2 在cpp里面 添加一下内容

      a 在BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间添加映射消息

    ON_MESSAGE(WM_SHOWTASK,onShowTask)
    

      b 在初始化函数托盘结构体 初始化的函数

    ToTray();
    

      c  添加 托盘结构体 初始化

    void CNotifyiconTestDlg::ToTray(void)
    {
    
    	m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); 
    	m_nid.hWnd = this->m_hWnd; 
    	m_nid.uID = IDR_MAINFRAME; 
    	m_nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ; 
    	m_nid.uCallbackMessage = WM_SHOWTASK;
    	//自定义的消息名称 WM_SHOWTASK 头函数中定义为WM_USER+10
    	m_nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); 
    	StrCpyW(m_nid.szTip,L"托盘图标");//当鼠标放在上面时,所显示的内容 
    	Shell_NotifyIcon(NIM_ADD,&m_nid);//在托盘区添加图标 
    }
    

      d 消息处理函数的实现

    LRESULT CNotifyiconTestDlg::onShowTask(WPARAM wParam,LPARAM lParam) //wParam接收的是图标的ID,lParam接收的是鼠标的行为 
    { 
    	if(wParam!=IDR_MAINFRAME) 
    		return 1; 
    	switch(lParam) 
    	{ 
    	case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭” 
    		{   
    			LPPOINT lpoint=new tagPOINT; 
    			::GetCursorPos(lpoint);//得到鼠标位置 
    			CMenu menu; 
    			menu.CreatePopupMenu();//声明一个弹出式菜单 
    			//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已 
    			//隐藏),将程序结束。 
    			menu.AppendMenu(MF_STRING,WM_DESTROY,L"退出"); 
    			//确定弹出式菜单的位置 
    			menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); 
    			//资源回收 
    			HMENU hmenu=menu.Detach(); 
    			menu.DestroyMenu(); 
    			delete lpoint; 
    		} 
    		break; 
    	case WM_LBUTTONDBLCLK://双击左键的处理 
    		{     
    			this->ShowWindow(SW_SHOWNORMAL);//简单的显示主窗口
    		} 
    		break; 
    	} 
    	return 0; 
    }
    

      

       注 :可以把ToTray 函数去掉,把函数内容放到初始化里面

  • 相关阅读:
    关于SuperSocket启动失败
    ffmpeg 常用命令
    Url中有中文参数需要编码解码
    单例模式
    c# 文件夹重命名
    一个既有winform又有webapi 的例子
    数据库查询字段的结构和长度
    Jquery 展开收起
    ajax即时修改
    EFCore 迁移
  • 原文地址:https://www.cnblogs.com/a9999/p/3853774.html
Copyright © 2011-2022 走看看