zoukankan      html  css  js  c++  java
  • 一个酷的皮肤GUI与阴影边界

    图1:一个很酷的可skinnable对话框-可以在列表框上显示图像 介绍 这是编写一个出色GUI的代码。我们可以将图像加载到组合框、按钮或对话框中。它使用CxImage库加载图像,因此可以支持所有格式的图像。 在这段代码中,我们还为对话框使用了阴影边框,这是我从这里得到的。您还可以在对话框显示时对其进行特殊效果,这是我从这里获得的。 使用的代码 如何在对话框上显示背景图像 首先,包括FXDialog.h / . cpp。然后,创建一个类似于CFXGUIDlg的对话框并继承CFXDialog。你必须进入对话框的资源,并设置对话框的属性:border = none,所以这个对话框将删除标题栏,你必须实现一个代码来做到这一点;参见鼠标移动对话框。 添加代码如下: 隐藏,复制Code

    OnInitDialog 
    {
        ....
    
        SetImage(PATH_IMAGE_GALLERY_MEDIA_MAIN_BG); // Set background image
        SetSizeFollowImage(this); // Update size
    
        ...
    }
    
    BOOL CFXGUIDlg::OnEraseBkgnd(CDC* pDC)
    {
        CFXDialog::OnEraseBkgnd(pDC);
        return TRUE;          
    }

    要创建任意形状的对话框,请将对话框的区域设置如下。您必须创建一个有两种颜色的模板图像,比如黑色和白色(黑色是对话框的透明部分,白色是对话框的可见部分)。这个SetRgn函数将使这个透明对话框位于模板图像的背景颜色区域。您需要包含region.hpp/.cpp文件。BitmapToRegion函数将基于模板图像为对话框创建任何区域。 隐藏,复制Code

    OnInitDialog 
    {
        ...
        SetRgn(PATH_IMAGE_GALLERY_MEDIA_MAIN_TEMPLATE, this, false);
        // Set region of dialog 
        ...
    }

    用鼠标移动对话框: 隐藏,复制Code

    #define CY_TITLEBAR 35
    void CFXGUIDlg::OnLButtonDown(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        if(point.y > CY_TITLEBAR)
            return;
        // This code to move window when press left button any where on dialog
        PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
    
        CDialog::OnLButtonDown(nFlags, point);
    }

    为对话框创建一个阴影: 隐藏,收缩,复制Code

    BOOL CFXGUIApp::InitInstance()
    {
        ...
        CWndShadow::Initialize(AfxGetInstanceHandle());
        ...
    }
    
    OnInitDialog 
    {
        ...
        CreateShadow(GetSafeHwnd());
        ...
    }
    
    void OnShowWindow(BOOL bShow, UINT nStatus) 
    {
        CDialog::OnShowWindow(bShow, nStatus);
        
        // TODO: Add your message handler code here    
        static bool bFirstTime = true;
        if (bFirstTime)
        {
            bFirstTime = false;
            AnimationWindow(m_hWnd, 1200, AW_BLEND);
            UpdateShadow();        
        }
    }

    要使用button和combobox,我们可以使用FXButton和FXComboBox类。你必须去资源和检查的风格按钮“所有者绘制”。 隐藏,复制Code

    CFXGUIDlg::CFXGUIDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CFXGUIDlg::IDD, pParent)
        , CFXDialog()
        , m_cBtnClose(PATH_IMAGE_GALLERY_MEDIA_BTN_CLOSE, 
                      PATH_IMAGE_GALLERY_MEDIA_BTN_CLOSE_OVER)
        , m_cBtnBrowser(PATH_IMAGE_GALLERY_MEDIA_BTN_BROWSER_NORMAL, 
                        PATH_IMAGE_GALLERY_MEDIA_BTN_BROWSER_OVER, true)
        , m_cCmbPath(PATH_IMAGE_GALLERY_MEDIA_CMB_PATH_PULL_NORMAL)
        , m_cCmbViewStype(PATH_IMAGE_GALLERY_MEDIA_CMB_PATH_PULL_NORMAL)
    {
        ...
    }

    要使用listbox,我们可以使用FXListBox类,还可以使用FXExplorer来模仿Windows Explorer。将这个控件集成到您的项目中来管理文件/文件夹是非常酷的。 历史 CxImage 6.00更新。 本文转载于:http://www.diyabc.com/frontweb/news12394.html

  • 相关阅读:
    排序算法之希尔排序
    排序算法之直接插入排序
    PL/SQL之异常
    PL/SQL之包
    PL/SQL之存储过程和函数
    Oracle左连接、右连接、全外连接以及(+)号用法
    PL/SQL之存储过程和触发器实例
    PL/SQL之游标的使用
    Tag Tree
    目录:JAVA
  • 原文地址:https://www.cnblogs.com/Dincat/p/13474140.html
Copyright © 2011-2022 走看看