我们正在尝试将一段使用 CWnd.SubclassWindow 方法在 MFC 中编写的 C++ 代码转换为 Borland C++ Builder 代码。有谁知道如何进行子类化(使用 TForm 对象进行子类化) - 我们完全陷入困境。任何指针将不胜感激!蒂亚!
规格:
我们有一个现有的用 Borland C++ 编写的基类,它继承自 TForm,它用于为从它继承的所有表单赋予某种外观和感觉(例如,它处理 WM_NCPAINT 和 WM_NCHITTESTheavily)。
现在我们想使用此代码为用其他语言(准确地说是 MSVC++/MFC 和 C#)编写的表单提供相同的外观和感觉。
我们认为使用 Windows 子类化将是一个好主意,而不是重写所有代码。然后我们可以将所有现有的和测试过的代码填充到一个 DLL 中,然后只需使用 hWnd 调用它,该窗口就会自动获得新的外观和感觉。
究竟为什么这是不可能的,我真的不能说——我自己不使用 Borland C++ 编写代码。我只用了几分钟就在 MFC 中编写了一个存根,向 Borland C++ 开发人员展示了我想要什么,他们花了几天时间试图模仿 MFC 的 CWnd::SubclassWindow 方法,但没有成功。
据我了解,问题在于当您执行“new TForm()”时,会在您有机会停止之前自动创建一个新窗口。所以替换然后 WindowProc工作但不需要的 TForm 窗口在屏幕上浮动,没有用!!!!