zoukankan      html  css  js  c++  java
  • 基于对话框的程序隐藏于托盘(一)

    想做一个基于对话框的程序,程序启动以后自动隐藏于托盘,不显示对话框也不在任务栏显示图标;也就是达到程序“悄悄的运行”,只在托盘能看出来程序运行着呢。

    这就要分两个部分来做,

    一,程序启动对话框隐藏,任务栏图标不显示。

    二,程序隐藏到托盘,双击托盘恢复对话框的显示,右击托盘直接关闭程序。

     首先来做第一部分,在网上搜到的删除托盘图标都使用的ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); 也就是通过修改窗口格式来实现;我试了一下的确任务栏的图标不显示了,可是对话框上的最大化最小化图标也没了,为了保持对话框原有的模样,于是参考文章关于MFC程序中隐藏任务栏图标的问题,删除任务栏图标通过创建一个隐藏的窗口,然后设为主对话框的父窗口就行了,示例代码如下:

    BOOL CxxxApp::InitInstance()
    {
        ......
        CWnd m_wndOwner;
        if ( m_wndOwner.m_hWnd == NULL ) 
        { 
            LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0);
    
            if ( !m_wndOwner.CreateEx(0, pstrOwnerClass, _T(""),  //创建一个隐藏的弹出样式的窗口 
                WS_POPUP, CW_USEDEFAULT, 
                CW_USEDEFAULT, 
                CW_USEDEFAULT, 
                CW_USEDEFAULT, 
                NULL, 0) ) 
                return FALSE; 
        }
    
        //CsaveParamReportDlg dlg;
        CxxxDlg dlg(&m_wndOwner); // 以隐藏的窗口作为父窗口
        m_pMainWnd = &dlg;
    
        ......
       // 销毁隐藏的父窗口
    
        if (m_wndOwner.m_hWnd!=NULL)
        {
            m_wndOwner.DestroyWindow();
        }
    return FALSE;
    }

    通过上边的操作,在对话框初始化的时候,就可以使用如下代码隐藏任务栏图标:

     ModifyStyleEx(WS_EX_APPWINDOW, 0);//从任务栏中去掉图标

     

  • 相关阅读:
    题目一:使用Java实现二维数组中的查找
    算法的时间复杂度
    爬虫----爬虫存储库
    爬虫----爬虫解析库Beautifulsoup模块
    问卷调查
    爬虫----爬虫请求库selenium
    爬虫----爬虫请求库requests
    爬虫----爬虫基本原理
    python金融与量化分析------Matplotlib(绘图和可视化)
    Python与金融量化分析----金融与量化投资
  • 原文地址:https://www.cnblogs.com/small-lazybee/p/9817112.html
Copyright © 2011-2022 走看看