zoukankan      html  css  js  c++  java
  • 如何实现24位色工具条(zz)

    如何实现24位色工具条


    作者/NorthTibet

    下载源代码


    大家知道IE的工具条都是多彩的,本文介绍如何在自己的应用程序里实现24位色工具条。如图一所示:


    图一 

    第一步:

    在mainframe.h文件中声明成员变量:

          CToolBar m_hotToolBar;      
    在 CMainFrame::OnCreate() 中创建工具条,假设你已经创建了一个ToolBar资源和两个工具条位图(Bitmap)资源:IDB_TOOLBAR_COLD 和 IDB_TOOLBAR_HOT,前者表示的是常态按钮,而后者表示的是鼠标移到上面时的状态按钮。用下面的代码创建工具条:
    	if (!m_hotToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_hotToolBar.LoadToolBar(IDR_HOTBAR))
    {
    TRACE0("Failed to create toolbar\n");
    return -1;      // fail to create
    }      

    第二步:

    在CMainFrame::OnCreate()中还要添加如下代码,它们实现对位图资源的存取:
    	// Set up hot bar image lists.
    CImageList	imageList;
    CBitmap		bitmap;
    // Create and set the normal toolbar image list.
    bitmap.LoadBitmap(IDB_TOOLBAR_COLD);
    imageList.Create(21, 20, ILC_COLORDDB|ILC_MASK, 13, 1);
    imageList.Add(&bitmap, RGB(255,0,255));
    m_hotToolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
    imageList.Detach();
    bitmap.Detach();
    // Create and set the hot toolbar image list.
    bitmap.LoadBitmap(IDB_TOOLBAR_HOT);
    imageList.Create(21, 20, ILC_COLORDDB|ILC_MASK, 13, 1);
    imageList.Add(&bitmap, RGB(255,0,255));
    m_hotToolBar.SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
    imageList.Detach();
    bitmap.Detach();      

    第三步:

    添加24位色工具条按钮的消息处理函数,这个工具条有五个按钮,如图一。那么在mainframe.h中加入消息处理函数声明:
    	afx_msg void OnBack();
    afx_msg void OnForward();
    afx_msg void OnStop();
    afx_msg void OnRefresh();
    afx_msg void OnHome();      
    在mainframe.cpp中添加消息处理代码:
    消息映射
       	ON_COMMAND(ID_BACK, OnBack)
    ON_COMMAND(ID_FORWARD, OnForward)
    ON_COMMAND(ID_STOP, OnStop)
    ON_COMMAND(ID_REFRESH, OnRefresh)
    ON_COMMAND(ID_HOME, OnHome)      
    消息映射函数代码,为简单起见,这些函数没有做任何事情。
            void CMainFrame::OnBack() {}
    void CMainFrame::OnForward() {}
    void CMainFrame::OnStop() {}
    void CMainFrame::OnRefresh() {}
    void CMainFrame::OnHome() {}      
    编译程序并运行。
  • 相关阅读:
    在Ubuntu中通过update-alternatives切换软件版本
    SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
    mongodb 的使用
    利用grub从ubuntu找回windows启动项
    How to Repair GRUB2 When Ubuntu Won’t Boot
    Redis vs Mongo vs mysql
    java script 的工具
    python 的弹框
    how to use greendao in android studio
    python yield的终极解释
  • 原文地址:https://www.cnblogs.com/strinkbug/p/728522.html
Copyright © 2011-2022 走看看