1

我开发了一个使用 WindowsMessage 控制其他窗口的应用程序。它与我由 C# 构建的示例应用程序一起成功。但是,然后我尝试使用由 VB6.0 开发的遗留窗口来配置我的控制应用程序。在这里我有2个问题,

1) 以下方法返回 false 并且文本字段未更新。

 IntPtr wParam = IntPtr.Zero;
 IntPtr lParam = Marshal.StringToHGlobalAuto(text);
 bool retVal = Convert.ToBoolean(SendMessage(handle, WM_SETTEXT, wParam, lParam));

任何人都可以帮我弄清楚吗?

2)当我扫描遗留应用程序中的子控制器时(使用窗口消息传递),我发现一些控制器的类名是ThunderRT6FormDCThunderRT6UserControlDC。这些控制器是什么?

4

1 回答 1

2

2) ThunderRT6FormDCThunderRT6UserControlDC是 Visual Basic 特定的类名称:VB 源自一个名为 Thunder 的原始项目,因此这个名称包含了很多 VB 代码的点点滴滴。许多 VB 窗口类的名称中都有Thunder,包括你看到的 2。

1)我的期望是您获取的句柄没有指向正确的窗口:您是使用 Spy++ 或类似工具查看 VB6 窗口并确定正确的文本窗口,还是您之前将焦点设置到文本窗口发送 WM_SETTEXT 消息?

于 2011-05-06T03:50:55.497 回答