zoukankan      html  css  js  c++  java
  • Duilib 实现开关按钮

    转载:http://blog.csdn.net/wuan584974722/article/details/25045737

    我们在做MFC程序时候经常会一个切换式的按钮,之前我的做法是利用buttion类的一个SetState()函数,但是返现效果不佳。而且容易出现点1按钮,焦点跑到另外一个按钮上去了 。后来看到别人一个程序。我发现他的切换效果做的很好 ,经过看代码发现,他用的控件根本不是buttion控件而是check box 控件。我就很奇怪,如何将check box变成了一个按钮的,经查看代码发现,原来是他将控件的属性------push lisk (我的翻译是按下去像 纯字面理解)设置成true 如图

    他就会变成一个按钮形状了,这时候 你给他添加控件变量和控件变量的值,在程序里面函数DoDataExchange(CDataExchange* pDX)中会生成DDX_Control(pDX, IDC_BUTTON1, m_btn_AT);
    DDX_Check(pDX, IDC_BUTTON1, m_Check_AT);在头文件中会定义两个连个变量CButtion m_btn_AT;和BOOL m_Check_AT, 可以修改CButtion 为你重新写的类。然后我们添加按钮的消息响应函数:在消息响应函数中要添加函数UpdataData(true);这个函数会调用DoDataExchange(CDataExchange* pDX);

    void C按钮凹凸效果Dlg::OnBnClickedCheck1()
    {
    UpdateData(TRUE);
    if(m_Checked)
    {
    m_btn_check.SetWindowText(L"1状态 (开)");
    m_btn_check.SetBitmaps(IDB_BITMAP1,RGB(255,255,255));
    }
    else
    {
    m_btn_check.SetWindowText(L"0状态 (关)");
    m_btn_check.SetBitmaps(IDB_BITMAP1,RGB(255,255,255));
    }
    }

    参考上面例子,其实在Duilib中也是用CheckBox控件来实现开关按钮,代码都不需要实现,直接在xml中设置就行了

    <CheckBox name="chkOption"  width="143" height="90"  float="10,0,0,0"  normalimage="file='switchbutton.png' source='0,0,143,91'" selectedimage="file='switchbutton.png' source='0,182,143,273'"/>

    代码实现:

            CCheckBoxUI *pCheck = new CCheckBoxUI;
            pCheck->SetMaxHeight(40);
            pCheck->SetMaxWidth(60);
            pCheck->SetAttribute(_T("normalimage"), _T("file='image\switchbutton.png' source='0,0,143,91'"));
            pCheck->SetAttribute(_T("selectedimage"), _T("file='image\switchbutton.png' source='0,182,143,273'"));

    最后上效果:

    这个背景图

     

  • 相关阅读:
    常用注解
    代码自动生成插件:
    jsoup爬虫技术+druid连接池

    图书管理系统-项目介绍
    shiro
    (C#) What is the difference between "const" and "static readonly" ?
    What is a Windows USB device path and how is it formatted?
    (C/C++ interview) Static 详解
    Cpk
  • 原文地址:https://www.cnblogs.com/chechen/p/7281039.html
Copyright © 2011-2022 走看看