内容摘要:本指南的目标读者为程序员新手,在开始之前,我想挑战你一下:即在不阅读本文的情况下先尝试自己开发这个控件。尽管这看起来可能会让人退缩或你可能不知道从哪里开始,它不是像你想像得那样难。
下一个任务是写一个允许我们添加面板到控件上的public方法。这没有什么困难。我们使窗体对象的指针作为参数传递,并设置新的面板如其所显示的一样。
int CStackedWndCtrl::AddPane( CWnd* pwndRubric, CWnd* pwndContent )
{
// 隐藏无论哪一个正在显示面板的内容窗体
//我们将总是显示最近添加的面板的内容窗体
for( int i = 0; i < m_arrPanes.GetSize(); i++ )
if( m_arrPanes[ i ]->m_bOpen )
m_arrPanes[ i ]->m_bOpen = FALSE;
//创建一个新的面板结构
PTDS_PANE pPane = new TDS_PANE;
if( pPane == NULL )
{
AfxMessageBox( "Failed to add a new pane to"
" the stack.
Out of memory." );
return -1;
}
// 拷贝指针到标题和内容窗体
//同时,设置这个面板为打开状态
pPane->m_pwndRubric = pwndRubric;
pPane->m_pwndContent = pwndContent;
pPane->m_bOpen = TRUE;
// 添加该新面板到栈的尾部
int iIndex = m_arrPanes.Add( pPane );
// 重新排列栈
RearrangeStack();
// 返回新面板的索引号
return iIndex;
}在我们担心排列和显示面板之前(如果你想要测试这个代码,只要参考RearrangeStack
方法的调用 ),我们要确保在退出时该结构体被完全删除是非常重要的,以免内存泄漏。我们在析构器中执行该任务,如下所示:
作者:Franc Morales 责编:豆豆技术应用
正在加载评论...
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……