zoukankan      html  css  js  c++  java
  • Aero for WTL application

    初用WTL,发现搜不到Aero效果的WTL文章,那我就用WTL练一下手,我详细讲一下步骤。

     XXXDlg.h文件:(.cpp会编译报错,所以全部消息映射实现在.h)

    头文件:

    #include "dwmapi.h"
    #pragma comment(lib,"dwmapi.lib")

    1.添加Aero状态的成员

    private:
    BOOL m_bAeroEnabled;

    2.初始化窗体时判断Aero

            ::DwmIsCompositionEnabled(&m_bAeroEnabled);
    PostMessage(WM_DWMCOMPOSITIONCHANGED);
    SetTimer(11,1000,NULL); // current time display

    3.Aero变更通知处理

    LRESULT OnCompositionChnaged(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {
    ::DwmIsCompositionEnabled(&m_bAeroEnabled);
    if (m_bAeroEnabled) {
    MARGINS m = {-1,-1,-1,-1};
    ::DwmExtendFrameIntoClientArea(m_hWnd,&m);
    Invalidate(); // draw black background

    }
    return 0;
    }

    在初始化窗体时,直接Post WM_DWMCOMPOSITIONCHANGED消息,让这个消息处理函数搞定,以后系统在Aero状态改变时也会给窗体发送这个消息。

    消息映射:

    MESSAGE_HANDLER(WM_DWMCOMPOSITIONCHANGED, OnCompositionChnaged)

    另外,需要考虑OnCtlDlg消息映射函数在Aero状态下返回默认刷子还是黑刷,这个太简单,省略。

      WTL跟MFC差不多,但是明显感觉比MFC好用,但是与IDE的兼容性不如MFC,有时候可能出现奇怪的问题。源码附上:

    其中GlowingText.dll是我封装的Aero下发光文字绘制,源码有示例。

    源码:

     https://files.cnblogs.com/asight/AeroForWTL.zip

    dll:

    https://files.cnblogs.com/asight/GlowingText.zip




     

  • 相关阅读:
    二进制文件
    Python的特殊成员
    中标麒麟Linux7 如何关闭广播消息
    双重循环输出
    输出星期数
    九九乘法表
    打印菱形
    加法表
    求100以内所有偶数和
    猜大小
  • 原文地址:https://www.cnblogs.com/asight/p/2252871.html
Copyright © 2011-2022 走看看