【问题标题】:Modeless Child Dialog无模式子对话框
【发布时间】:2010-07-18 23:48:50
【问题描述】:

我正在从父对话框类创建无模式子对话框,并且我想与我将创建的所有子对话框类共享其父窗口的类数据。我该怎么做呢?

【问题讨论】:

  • 你能详细说明你所说的类数据是什么意思吗? WindowClass 还是指向实现父类的类的指针?你是如何创建子对话框的(什么 API 调用)?
  • 我想将父类的功能访问到子类中,我通过在使用 CreateDialog API 的父类中创建子类的实例来创建子对话框。

标签: winapi class dialog


【解决方案1】:

一种方法是使用SetWindowLongPtr()

SetWindowLongPtr(hwndParent, GWLP_USERDATA, (LONG_PTR)&parent_class);

这会将父 hwnd 上的 USERDATA 字段设置为父类的地址。然后在您的 WM_INITDIALOG 处理程序中,在您的父 HWND 上调用 GetWindowLongPtr() 并将其转换回正确的指针类型。

更好的方法是使用CreateDialogParam(),在WM_INITDIALOG 处理程序中,您将获得在dwInitParam 字段中传递的值,这将是指向你的父类。

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多