【发布时间】:2011-05-21 06:21:45
【问题描述】:
我正在尝试创建一个具有特定类类型(“VSDebugger CDataTipWnd”)的窗口,但是,当我运行 CreateWindowEx 时它失败了,并且 GetLastError 告诉我找不到该类。以下是供参考的代码,尽管没关系:
const Win32WindowStyles dwStyle = Win32WindowStyles.WS_POPUP;
IntPtr wnd = NativeMethods.CreateWindowEx(0L, "VSDebugger CDataTipWnd", "MyWindow",
dwStyle, 100, 100, 100, 100, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
我在进程中作为插件运行,并且我知道之前创建了此类的窗口(我使用 Winspector/Spy++ 确保了这一点),但是,当我尝试创建这种类型的窗口时我自己,它不起作用,我不知道为什么。
documentation 表示“类名可以是注册到 RegisterClass 或 RegisterClassEx 的任何名称,前提是注册该类的模块也是创建窗口的模块。类名也可以是任何预定义的系统类名称。有关系统类名称的列表,请参阅备注部分。 RegisterClass 是否可能确实是在另一个模块(dll/exe)中创建的?仅仅在另一个模块中创建一个类是否会使另一个模块无法通过名称访问它?如果是这样,我还能以某种方式找到那个类并用它创建一个窗口吗?
谢谢! 生命力
【问题讨论】:
标签: windows winapi createwindow