• 任务栏托盘弹出菜单


    先说一下思路吧。。。。。主要用的的是一个NOTIFYICONDATA结构和Shell_NotifyIcon函数

    其它的就是一些消息响应了

    一、先是自己写一个实现托盘的函数StartTry(),

    nData;
    nData.cbSize = sizeof(NOTIFYICONDATA);
    nData.hWnd = this->m_hWnd;
    nData.uID = IDR_MAINFRAME;
    nData.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
    nData.uCallbackMessage = WM_ONTRY;        //在头文件中自定义WM_ONTRY(#define WM_ONTRY WM_USER+1)消息响应函数nData.hIcon = LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_MAINFRAME));
    strcpy(nData.szTip,"sun");
    Shell_NotifyIcon(NIM_ADD, &nData);
    this->ShowWindow(SW_HIDE);
    return TRUE;

    二、写一个停止托盘的函数StopTry()

    NOTIFYICONDATA nData;
     nData.cbSize = sizeof(NOTIFYICONDATA);
     nData.hWnd = this->m_hWnd;
     nData.uID = IDR_MAINFRAME;
     nData.uFlags = NIF_TIP|NIF_MESSAGE|NIF_TIP;

     Shell_NotifyIcon(NIM_DELETE,&nData);

    三、写一个删除托盘的消息响应函数DeleteTry();

    StopTry();
     this->ShowWindow(SW_SHOW);

    四、在WM_ONTRY消息响应函数中对不同的操作进行响应

     switch(lParam)
     {
     case WM_LBUTTONDOWN:
      this->ShowWindow(SW_SHOW);  //显示菜单

      DeleteTry();

     case WM_RBUTTONDOWN:
      {
       POINT point;
       GetCursorPos(&point);
       CMenu menu;
       menu.CreatePopupMenu();
       menu.AppendMenu(MF_BITMAP,WM_DeleteTry,&m_Bitmap[0]);  //右击图片删除菜单
       menu.AppendMenu(MF_BITMAP,WM_DESTROY,&m_Bitmap[1]); //右击图片退出菜单
       menu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
       break;
      }  
     default:
      {
       CMenu::DeleteTempMap();
       break;
      }

     }

    出现的问题

    menu.CreatePopupMenu();这一句。

    刚开始我是产生一个菜单menu.createMenu(),菜单栏中的图片和文字只出现一小部分

    看来还是做下才知道问题出现在哪。

  • 相关阅读:
    js日期时间补零
    判断交换机性能好坏的九个因素
    [转]document.getElementById("...") is null
    ABAP数据库操作之操作语句Insert
    abap对excel处理
    选择屏幕搜索帮助
    Screen返回选择界面的问题
    ABAP 的TABLE CONTROL实践积累
    ALV的双击使用
    双击ALV调用事务代码并传入参数
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1717531.html
Copyright © 2020-2023  润新知