65.9K
CodeProject 正在变化。 阅读更多。
Home

CWndSliderView - 动画子窗口管理器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (10投票s)

2000年1月12日

viewsIcon

98900

downloadIcon

2767

一篇关于使用 Outlook 风格窗口滑动条控件的文章。

  • 下载演示项目 - 71 Kb
  • 下载源文件 - 28 Kb

    Sample Image - CWndSlider.jpg

    引言

    这又是另一个受 Outlook 工具栏启发的控件。CWndSliderView 控件本质上(简单来说)是一个子窗口管理器,具有外观精美的按钮和酷炫的滑动窗口动画效果。该控件的设计力求简单易懂。我已经尽力对 CWndSliderView 的源代码进行了详细的注释。希望所有查看我代码的人都能觉得它有用或具有教育意义。祝您玩得开心!

    设置和使用 CWndSliderView 控件

    首先在应用程序的主框架中创建一个 CWndSliderView 实例。在 CMainFrame::OnCreate 中,获取上下文信息和 CWndSliderView 的指针。要创建一个新的子视图,请使用新的子视图标题、RUNTIME_CLASS 指针和创建上下文参数调用 CWndSliderView::CreateCWndSliderView::Create 在出错时返回 SOB_ERROR;否则返回新创建视图的索引。使用 CWndSlider::ModifyViewStyle 使子视图垂直或水平动画。基本上就是这样。一切都很简单。

    #include "WndSlider.h"
    
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	//
    	//  ...[SNIP]...
    	//
    	
    	//
    	// Get the Create Context struct.
    	//
    	CCreateContext* pContext = (CCreateContext*)lpCreateStruct->lpCreateParams;
    
    	//
    	// Grab the main CWndSliderView windows.  
    	//
    	CWndSliderView *pObar = STATIC_DOWNCAST( CWndSliderView, m_wndSplitter.GetPane(0,0) );
    
    	//
    	// Check for NULL...
    	//
    	if( NULL != pObar )
    	{
    		int nID;
    
    		//
    		// Modify the default button style to be vertical...
    		//
    		pObar->ModifyBarStyle( SOB_BAR_HORZ, SOB_BAR_VERT, FALSE );	
    
    		//
    		// Start adding views to the slider...  
    		//
    		nID = pObar->CreateView( _T("0 CMyListView 0"), RUNTIME_CLASS(CMyListView), pContext );
    
    		//
    		// Debug-check if view creation worked without error...
    		//		
    		ASSERT( SOB_ERROR != nID );
    
    		//
    		// Add a simple CEditView to the CWndSliderView window.
    		//		
    		nID = pObar->CreateView( _T("1 CEditView 1"), RUNTIME_CLASS(CEditView), pContext );
    
    		//
    		// Debug-check if view creation worked without error...
    		//
    		ASSERT( SOB_ERROR != nID );
    
    		//
    		// Continue adding more views if you like...
    		//
    
    	}
    
    	//
    	//  ...[SNIP]...
    	//
    }
    

    定义的常量

      SOB_VIEW_DEFAULT_BTN_HEIGHT :增加或减少以更改默认按钮高度(VALUE = 24 像素)。
      SOB_VIEW_DEFAULT_ANIMATION_SPEED
      :增加或减少以更改动画步进速度(VALUE = 10 毫秒)。
      SOB_VIEW_DEFAULT_ANIMATION_LIMIT:增加或减少值以限制动画所花费的总时间(VALUE = 200 毫秒)。

      SOB_VIEW_HORZ :设置视图样式位以使子窗口水平动画(默认)。
      SOB_VIEW_VERT :
      设置视图样式位以使子窗口垂直动画。
      SOB_VIEW_ANIMATE :设置视图样式位以启用子窗口动画(默认)。

      SOB_BTN_ANIMATE :设置按钮样式位以启用动画(默认) - 用于禁用每个子窗口的动画。
      SOB_BTN_FANCYFACE :设置按钮样式位以启用 3D 精美表面(默认)。

      评论、建议和说明

      CWndSliderView 只是“Outlook 工具栏”的滑动/动画组件。也许将来有空的时候,我会开发一个真正的“Outlook 工具栏”外观的控件。在此之前... 如果您有任何评论、建议或问题,请随时给我发消息。

    • © . All rights reserved.