WEB开发网
开发学院软件开发VC vc层叠式窗体控件指南 阅读

vc层叠式窗体控件指南

 2007-10-04 20:11:34 来源:WEB开发网   
核心提示:以上处理了控件的排列和显示,让我们现在添加一个调用到PreSubclassWindow以去除图片控件周围的黑框,vc层叠式窗体控件指南(4),在资源编辑器工作时这是有效的,在应用程序运行时它是不必的且难看,举个例子,一个组合框可能被设置为标题或内容窗体,void CStackedWndCtrl::PreSubclass

以上处理了控件的排列和显示。

让我们现在添加一个调用到PreSubclassWindow以去除图片控件周围的黑框。在资源编辑器工作时这是有效的,在应用程序运行时它是不必的且难看。

void CStackedWndCtrl::PreSubclassWindow()
{
    // 移除黑框并夹住子控件以避免闪烁
    ModifyStyle( SS_BLACKFRAME, WS_CLIPCHILDREN );
    CStatic::PreSubclassWindow();
}
我们已经获得机会添加WS_CLIPCHILDREN 标志以在重新改变控件尺寸时减少闪烁,这提醒我…

…确保该控件能在需要时改变自己的尺寸大小总是一个好主意。在此情况中,该功能是相当容易实现的。调出Classwizard,为WM_SIZE添加一个消息句柄,并做一个调用到RearrangeStack。

void CStackedWndCtrl::OnSize(UINT nType, int cx, int cy)
{
     CStatic::OnSize(nType, cx, cy);
     RearrangeStack();
}

我们几乎已经做好了。如果你添加一些测试面板,编译并运行;这个层叠式控件将显示所有标题窗体和最后的面板的内容窗体。

当然,这个控件不会对用户点击标题窗体做出反应。我们还没有为其写响应代码啊。它是我们任务清单上的下一个也是最后一个任务了。

标题窗体的惟一需求

至于我们的控件,标题和内容窗体可以是任何一种窗体。照字面意思,可以是对话框、static控件、列表框/控件、树控件、日历控件、编辑框/ richedit控件、generic窗体、甚至自定义控件。如果我们可以获得一个指向它的CWnd指针,CStackedWndCtrl类会如预期一样工作。这里惟一的限制是常识,而不是一个技术问题。举个例子,一个组合框可能被设置为标题或内容窗体,但是其适宜性相当值得怀疑。

上一页  1 2 3 4 5  下一页

Tags:vc 层叠 窗体

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接