基于Dialog的MFC程序在启动时隐藏为托盘程序(二)

本文详细介绍了如何在Windows应用程序中创建托盘图标,包括定义消息号、声明NOTIFYICONDATA变量、初始化图标属性及响应函数等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一部分继续上一部分。。在初始化程序后在托盘区要搞出一个图标来。。

1. 在dlg.cpp中宏定义一个消息号
#define WM_NC (WM_USER+1001)

2. 声明一个NOTIFYICONDATA变量并在OnInitDialog中初始化
// .h
1public:
2    NOTIFYICONDATA m_notifyIcon; // 声明
// .cpp
ContractedBlock.gifExpandedBlockStart.gif初始化notityIcon
1    m_notifyIcon.cbSize = sizeof(NOTIFYICONDATA);
2    m_notifyIcon.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
3    m_notifyIcon.hWnd = m_hWnd;
4    lstrcpy(m_notifyIcon.szTip , "NotifyIcon Test");
5    m_notifyIcon.uCallbackMessage = WM_NC;
6    m_notifyIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
7    Shell_NotifyIcon(NIM_ADD , &m_notifyIcon);

3. 声明响应函数并注册

// .h
protected:
    afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM IParam); 
// 我的是vs2005。。如果用vc6的话可以把LRESULT改为void。。注意定义位置也要改。。

// .cpp
BEGIN_MESSAGE_MAP(CDesktopDlg, CDialog)
        .
    ON_MESSAGE(WM_NC,OnNotifyIcon) 
// 注册
END_MESSAGE_MAP()

// .cpp
ContractedBlock.gifExpandedBlockStart.gifCode
LRESULT CDesktopDlg::OnNotifyIcon(WPARAM wParam,LPARAM IParam)
{
        
// 这个方法体你随便写。。我只做个演示。。
    if ((IParam == WM_LBUTTONDOWN) || (IParam == WM_RBUTTONDOWN))
    { 
        ModifyStyleEx(
0 , WS_EX_TOPMOST);
        ShowWindow(SW_SHOW); 
// 显示dialog
        Shell_NotifyIcon(NIM_DELETE, &m_notifyIcon); // 清除小图标
    }

    
return 0;
}

ok。。下一步要实现最小化对话框时隐藏到托盘。。在下一步要给托盘加图标。。

任何疑问请联系:
leonkiros2004@163.com

转载于:https://www.cnblogs.com/hudo/archive/2009/08/18/1549140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值