3

我正在处理一个旧的 Motif 应用程序,它需要加载和显示一长串条目(大约 1500 个)。它创建和管理xmFormWidgetClassvia的一个实例,XtVaCreateManagedWidget()然后用一堆线性层次结构填充它xmFrameWidgetClass->xmFormWidgetClass->xmFormWidgetClass->xmPushButtonWidgetClass。每个都PushButton包含一个多行标签。当这个东西被填充时,它需要大量的 CPU,它花费在 X/Motif 库中进行一些几何计算。添加新按钮的速度很快就会下降。看起来里面使用了一个 O(N) 算法XtVaCreateManagedWidget()

如果我XtUnrealizeWidget()xmFormWidgetClass. 条目以几乎恒定的速度添加,但我找不到显示我构建的整个内容的方法。XtRealizeWidget()的原始实例xmFormWidgetClass不会在窗口中呈现它。

我究竟做错了什么?有没有办法填充层次结构,然后计算几何图形并立即将其渲染到屏幕上?

重新设计应用程序是一个选项,但它是选项的最后手段类型。

任何让我留在 Motif 库中的建议都将受到高度赞赏!

问候,/谢尔盖

4

2 回答 2

1

XtManageChild之后尝试调用XtRealizeWidget

于 2011-07-19T06:53:33.513 回答
1

尝试创建所有不受管理的小部件并将它们放在 WidgetList 上,然后调用 XtManageChildren()。请参阅以下参考

http://www.s-and-b.su/syshlp/motif_guide/MotifProgGuide/Making_Widgets_Visible.html

每次管理单个小部件时,都会调用父 changed_managed 过程。XtManageChildren 只调用 changed_manage 过程一次。这可能会有所帮助。

于 2011-07-31T05:47:16.303 回答