从资源实现对话框

时间:2013-04-17 13:06:32

标签: dialog c++builder rc c++builder-xe2

我目前正在尝试将应用程序从owl移植到vcl。

在我原来的projekt文件中,我能够加载类似

的对话框

TBatchAcDialog(TWindow* parent) : TAPDialog(parent, BATCH_DIALOG)

但是,使用TTaskDialog而不支持第二个参数。

我找到了一个用户界面设计器的解释,当右键单击菜单时,您可以从rc文件加载第一个声明的菜单。

但是,我真的不知道如何在这个IDE中将这些对话框作为对话框加载,并再次将它们链接到我的类。

你们中有谁知道这个或者可以把我链接到一篇关于类似问题的文章吗?我似乎找不到合适的解决方案,尽管实施rc对话似乎是我常见的问题。

2 个答案:

答案 0 :(得分:2)

C ++ Builder没有任何包含类中资源对话框的本机功能。如果需要,您必须在自己的代码中手动设置。否则,在使用资源对话框时,只需使用CreateDialog()等Win32 API函数,或者重新设计UI以使用VCL TForm窗口而不是资源对话框。

TTaskDialog不是您认为的那样。它只是Win32 API TaskDialogIndirect()函数(Vista及更高版本)的包装器,与您尝试完成的内容无关。

答案 1 :(得分:2)

  

我目前正在尝试将应用程序从owl移植到vcl。

你的确切目标是什么?能够使用C ++ Builder构建应用程序,还是使用VCL代替OWL?

如果你想在对话框中使用VCL,那么就无法移植它们,你需要从头开始重写所有的UI,因为VCL与标准的Windows对话框非常不同。

如果您只想使用C ++ Builder构建应用程序,那么您可以通过升级到OWLNext来实现 - 它是OWL框架的开源升级,可以与C ++ Builder和Visual C ++等现代编译器一起使用。 您还可以使用OWLNext逐步迁移到VCL - 因为VCL和OWL可以在同一个应用程序中共存,因此您可以将旧的OWL应用程序迁移到C ++ Builder,在VCL中编写任何新UI,并逐步重写旧UI在VCL中 - 它可能比用VCL重写整个应用程序更容易,更安全。