博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何取托盘窗口
阅读量:5814 次
发布时间:2019-06-18

本文共 1078 字,大约阅读时间需要 3 分钟。

  有朋友在工作中需要得到托盘窗口,请我帮忙,于是我就简单地写下来了。想想或许对大家有帮助,所以我就转到这里来,但愿能帮到你。

CWnd* GetTrayWindow()
{


    CWnd* pTrayWnd = CWnd::FindWindow(_T("Shell_TrayWnd"), NULL);
    if(pTrayWnd != NULL)
    {

        CWnd* pNotifyWnd = CWnd::FindWindowEx(pTrayWnd->m_hWnd, NULL, _T("TrayNotifyWnd"), NULL);
        if(pNotifyWnd != NULL)
        {

            CWnd* pSysPager = CWnd::FindWindowEx(pNotifyWnd->m_hWnd, NULL, _T("SysPager"), NULL);
            if(pSysPager != NULL)
            {

                return CWnd::FindWindowEx(pSysPager->m_hWnd, NULL, _T("ToolbarWindow32"), NULL);
            }

            return  CWnd::FindWindowEx(pNotifyWnd->m_hWnd, NULL, _T("ToolbarWindow32"), NULL);
        }
    }

    return NULL;
}

 

为了验证得到的窗口是否是自己需要的,写一个测试小程序,把得到的内容绘制出来看看(其它代码省略)。

void CChildView::OnPaint()
{


    CPaintDC dc(this); // 用于绘制的设备上下文
    
    CWnd* pToolbarWindow = GetTrayWindow();
    if(pToolbarWindow != NULL)
    {

        CRect rect;
        pToolbarWindow->GetClientRect(&rect);

        CClientDC dcWin(pToolbarWindow);
        dc.BitBlt(100, 100, rect.Width(), rect.Height(), &dcWin, 0, 0, SRCCOPY);
    }            
    
    // 不要为绘制消息而调用 CWnd::OnPaint()
}

如果代码可以正常工作并能帮到你,这段代码是我自己写的。如果不能正常工作,对不起,我也不知道是谁写的。

本文转自 bluebee 51CTO博客,原文链接:http://blog.51cto.com/bluebee/286614,如需转载请自行联系原作者
你可能感兴趣的文章
使用第三方类、库需要注意的正则类RegexKitLite的使用
查看>>
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
如何用纯 CSS 为母亲节创作一颗像素画风格的爱心
查看>>