zoukankan      html  css  js  c++  java
  • duilib学习笔记02:界面布局

    ★:带有系统标题框和边框:

    //函数原型
    LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        if( uMsg == WM_CREATE ) {
            m_pm.Init(m_hWnd);
            CControlUI *pButton = new CButtonUI;
            pButton->SetName(_T("closebtn"));
            pButton->SetBkColor(0xFFFF0000);
            m_pm.AttachDialog(pButton);
            m_pm.AddNotifier(this);
            return 0;
        }
        else if( uMsg == WM_DESTROY ) {
            ::PostQuitMessage(0);
        }
    
        LRESULT lRes = 0;
        if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) {
            return lRes;
        }
    
        return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
    }

    --------------------------------------------------------------------------------

    ★:去掉系统标题框和边框:

    //函数修改
    LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        if( uMsg == WM_CREATE ) {
            m_pm.Init(m_hWnd);
            CControlUI *pButton = new CButtonUI;
            pButton->SetName(_T("closebtn"));
            pButton->SetBkColor(0xFFFF0000);
            m_pm.AttachDialog(pButton);
            m_pm.AddNotifier(this);
            return 0;
        }
        else if( uMsg == WM_DESTROY ) {
            ::PostQuitMessage(0);
        }
        //NewAdd...Start..For delect the title frame and the rim provide by system.
        else if( uMsg == WM_NCACTIVATE ) {
            if( !::IsIconic(m_hWnd) ) {
                return (wParam == 0) ? TRUE : FALSE;
            }
        }
        else if( uMsg == WM_NCCALCSIZE ) {
            return 0;
        }
        else if( uMsg == WM_NCPAINT ) {
            return 0;
        }
        //NewAdd...End..............................................................
    
        LRESULT lRes = 0;
        if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) {
            return lRes;
        }
    
        return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
    }

    --------------------------------------------------------------------------------

    ★:使用XML进行页面布局:

    //函数修改
    LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        if( uMsg == WM_CREATE ) {
            m_pm.Init(m_hWnd);
    
            //New Change...Start..For get a new layout by oneself...................
            CDialogBuilder builder;
            CControlUI* pRoot = builder.Create(_T("test1.xml"), (UINT)0, NULL, &m_pm);
            ASSERT(pRoot && "Failed to parse XML");
            m_pm.AttachDialog(pRoot);
            //New Change...End......................................................
    
            m_pm.AddNotifier(this);
    
            return 0;
        }
        else if( uMsg == WM_DESTROY ) {
            ::PostQuitMessage(0);
        }
        //NewAdd...Start..For delect the title frame and the rim provide by system.
        else if( uMsg == WM_NCACTIVATE ) {
            if( !::IsIconic(m_hWnd) ) {
                return (wParam == 0) ? TRUE : FALSE;
            }
        }
        else if( uMsg == WM_NCCALCSIZE ) {
            return 0;
        }
        else if( uMsg == WM_NCPAINT ) {
            return 0;
        }
        //NewAdd...End..............................................................
    
        LRESULT lRes = 0;
        if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) {
            return lRes;
        }
    
        return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
    }

    --------------------------------------------------------------------------------

    test1.xml文件内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <Window mininfo="200,360" size=" 480,320 ">
            <Font name="幼圆" size="16" default="true" />
            <VerticalLayout bkcolor="#FFFF00FF">
                <Button name="changeskinbtn" height="20" text="测试按钮" maxwidth="120" />
                <RichEdit name="testrichedit" bordercolor="#FF0000" bordersize="0" borderround="18,18" inset="4,2,4,2" bkcolor="#A0F2F5FA" bkcolor2="#A0FF0000" bkcolor3="#A0F2F5FA" font="1" multiline="true" vscrollbar="true" autovscroll="true" enabled="true" rich="true" readonly="false" text="测试richedit">
                </RichEdit>
                <Edit name="testedit" text="测试编辑框" />
            </VerticalLayout>
            //添加下面一行内容,以修改按钮外观。
            //然后将button_nor.bmp、button_over.bmp、button_down.bmp(可在Duilib发行包中找到)放到exe目录下。
            <Default name="Button" value="normalimage=&quot;file='button_nor.bmp' corner='4,2,4,2' fade='200' hsl='true'&quot; hotimage=&quot;file='button_over.bmp' corner='4,2,4,2' fade='200' hsl='true'&quot; pushedimage=&quot;file='button_down.bmp' corner='4,2,4,2' fade='200' hsl='true' &quot; " />
    </Window>

    --------------------------------------------------------------------------------

  • 相关阅读:
    写给QA/软件测试新人
    互联网产品线上故障管理规范
    爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?
    网传美团今年应届生年薪 35w+,严重倒挂老员工,为什么互联网大厂校招的薪资一年比一年高?...
    MySQL大表优化方案
    步入AI领域2年连升3级,我只是找对了学习方法而已……
    BZOJ 4008 亚瑟王(概率DP 奥妙重重)
    BZOJ 4318 OSU! (概率DP)
    BZOJ 3812 主旋律 (状压DP+容斥) + NOIP模拟赛 巨神兵(obelisk)(状压DP)
    BZOJ 4145 [AMPPZ2014]The Prices (状压DP)
  • 原文地址:https://www.cnblogs.com/xuejianhui/p/2782833.html
Copyright © 2011-2022 走看看