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类会如预期一样工作。这里惟一的限制是常识,而不是一个技术问题。举个例子,一个组合框可能被设置为标题或内容窗体,但是其适宜性相当值得怀疑。
更多精彩
赞助商链接