CWndSliderView - 动画子窗口管理器






4.89/5 (10投票s)
2000年1月12日

98900

2767
一篇关于使用 Outlook 风格窗口滑动条控件的文章。
引言
这又是另一个受 Outlook 工具栏启发的控件。CWndSliderView
控件本质上(简单来说)是一个子窗口管理器,具有外观精美的按钮和酷炫的滑动窗口动画效果。该控件的设计力求简单易懂。我已经尽力对 CWndSliderView
的源代码进行了详细的注释。希望所有查看我代码的人都能觉得它有用或具有教育意义。祝您玩得开心!
设置和使用 CWndSliderView 控件
首先在应用程序的主框架中创建一个 CWndSliderView
实例。在 CMainFrame::OnCreate
中,获取上下文信息和 CWndSliderView
的指针。要创建一个新的子视图,请使用新的子视图标题、RUNTIME_CLASS
指针和创建上下文参数调用 CWndSliderView::Create
。CWndSliderView::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 像素)。:增加或减少以更改动画步进速度(VALUE = 10 毫秒)。
SOB_VIEW_DEFAULT_ANIMATION_SPEEDSOB_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 工具栏”外观的控件。在此之前... 如果您有任何评论、建议或问题,请随时给我发消息。