• 对话框学习4


    基于对话框的拖盘程序

    首先为C**Dlg类添加自定义消息WM_TRAY_NOTIFICATION

    并添加代码如下:

    afx_msg LRESULT CTrayDlg::OnTrayNotification(WPARAM wParam, LPARAM lParam)
    {
        switch (lParam){
        case WM_RBUTTONUP:
        case WM_LBUTTONDBLCLK:
            ShowWindow(SW_SHOW);
            TrayMessage(m_hWnd, NIM_DELETE, NULL, "");
        }
    
        return 0;
    }

    响应方式为右键单击或者左键双击

    然后添加全局函数TrayMessage

    BOOL TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip){
        BOOL bReturn;
        NOTIFYICONDATA NofityData;
        NofityData.cbSize = sizeof(NOTIFYICONDATA);
        NofityData.hWnd = hWnd;
        NofityData.uID = IDR_MAINFRAME;
        NofityData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
        NofityData.uCallbackMessage = WM_TRAY_NOTIFICATION;
        NofityData.hIcon = hIcon;
        lstrcpyn(NofityData.szTip, pszTip, sizeof(NofityData.szTip));
        bReturn = Shell_NotifyIcon(dwMessage, &NofityData);
        if(hIcon)
            DestroyIcon(hIcon);
        return bReturn;
    }

    关键部分:

    NOTIFYICONDATA  http://baike.baidu.com/view/1873525.htm

    然后加入最小化处理事件(当然也可以不需要)

    void CTrayDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
        if ((nID & 0xFFF0) == IDM_ABOUTBOX)
        {
            CAboutDlg dlgAbout;
            dlgAbout.DoModal();
        }else if(nID == SC_MINIMIZE){
            TrayMessage(m_hWnd, NIM_ADD, NULL, "托盘实例");
            TrayMessage(m_hWnd, NIM_MODIFY, NULL, "托盘实例");
            ShowWindow(SW_HIDE);
        }
        else
        {
            CDialogEx::OnSysCommand(nID, lParam);
        }
    }

    最后为对话框添加一个按钮,并添加单击事件

    void CTrayDlg::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
        TrayMessage(m_hWnd, NIM_ADD, NULL, "托盘实例");
        TrayMessage(m_hWnd, NIM_MODIFY, NULL, "托盘实例");
        ShowWindow(SW_HIDE);
    }

    现在还不会加载资源图标。。。慢慢学习吧!

  • 相关阅读:
    期末总结
    虚拟存储器学习记录
    实验报告
    并发编程学习记录
    进程&信号&管道实践学习记录
    异常控制流学习记录
    系统级IO实践学习记录
    系统级I/O学习记录
    Arduino小车学习与研究
    期中总结
  • 原文地址:https://www.cnblogs.com/louzhang/p/2707045.html
Copyright © 2020-2023  润新知