• vc++ 最小化到托盘的详细实现


    在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:

    1。声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。

    2。声明一个响应函数afx_msg LRESULT OnClickTray(WPARAM wParam,LPARAM IParam);用于响应鼠标操作。将这个函数放入Dlg类的声明中,作为Dlg类的一个成员。

    3。自定义消息,用于点击托盘 来响应的消息:

    定义消息名称和消息号:#define WM_CLICK_TRAY (WM_USER+001),1001只是用于指定一个消息号,可以随便指定。注册则是在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加ON_MESSAGE(WM_NC,OnClickTray)。

    4。最小化到托盘实现:本例是点击最小化按钮将对话框程序最小化到托盘:实现代码如下:

    void CDesktopUtilDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else if(nID ==SC_MINIMIZE )
    {
    NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);
    NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    NotifyIcon.hWnd=m_hWnd;
    lstrcpy(NotifyIcon.szTip,L"NotifyIcon Test");
    NotifyIcon.uCallbackMessage=WM_CLICK_TRAY;
    NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
    Shell_NotifyIcon(NIM_ADD,&NotifyIcon);
    ShowWindow(SW_HIDE);
    }
    else
    {
    CDHtmlDialog::OnSysCommand(nID, lParam);
    }
    }

    5。点击托盘图标响应事件:afx_msg LRESULT OnClickTray(WPARAM wParam,LPARAM IParam);功能是点击托盘图标的时候还原对话框程序,实现代码如下:

    LRESULT CDesktopUtilDlg::OnClickTray(WPARAM wParam,LPARAM IParam)
    {
    if ((IParam == WM_LBUTTONDOWN) || (IParam == WM_RBUTTONDOWN))
    {
    ModifyStyleEx(0,WS_EX_TOPMOST);
    ShowWindow(SW_SHOW);
    }
    return 0;
    }

  • 相关阅读:
    Socket
    Cookie & Session
    一些快捷键&工具的用法收集
    过桥问题及一些想法
    微信初步开发(测试用)
    代码的编写习惯
    Python爬虫简单笔记
    如何降低AzurePaasSQL的表占用空间
    Sonar代码检测工具安装与使用及问题记录
    AzureDevops发布Artifact
  • 原文地址:https://www.cnblogs.com/JczmDeveloper/p/3510294.html
Copyright © 2020-2023  润新知