如何单击 vb6 表单上的按钮?

我有一个带有 ocx 控件的 vb6 表单。 ocx 控件上有一个按钮,我打算从代码中按下它。 我该怎么做呢?

我有:

Dim b As CommandButton
Set b = ocx.GetButton("btnPrint")
SendMessage ocx.hwnd, WM_COMMAND, GetWindowLong(b.hwnd, GWL_ID), b.hwnd

但它似乎不起作用。

2
2022-06-07 15:16:14
资源 分享
答案: 4

这个:

Dim b As CommandButton
Set b = ocx.GetButton("btnPrint")
b = True

确实有效。 完全不直观。 考虑到 bool 不是有效的命令按钮,我当然会预料到它会抛出一个错误,但这是因为默认构建的东西。

WM_LBUTTONDOWN 将是鼠标单击,我想要的是切换单击(切换为 hwnd 按钮,而不是计算机鼠标切换)。

我无法访问 ocx 的资源(它是第三个事件控件)。 如果我这样做了,我将服从我打算调用的函数(ocx 的原始作者应该已经揭示了它)。

0
2022-06-07 20:26:20
资源

我相信以下将起作用:

Dim b As CommandButton
Set b = ocx.GetButton("btnPrint")
b = True

CommandButtons 确实有 2 个功能。 一个是典型的单击按钮,另一个是类似于 CheckBox 的切换按钮。 CommandButton 的默认属性实际上是显示按钮是否被切换的 Value 住宅属性。 通过设置属性,产生 Click 事件。 即使开关的样式未设置为 ToggleButton 并且结果不会更改其状态,也会执行此操作。

2
2022-06-07 18:00:56
资源

您可以访问 OCX 代码吗? 您实际上不应该直接调用按钮的单击。 您必须重构代码以确保 OCX 按钮单击代码调用函数,例如

CMyWindow::OnLButtonDown()
{
  this->FooBar();
}

然后从您的 VB6 应用程序中,直接调用 FooBar 方法。 如果您不能直接从 VB6 调用函数,您可以使用 windows 消息 proc 函数包装 FooBar() 方法,例如

#define WM_FOOBAR WM_APP + 1

然后在 VB6 中使用 SendMessage,比如 SendMessage(WM_FOOBAR, ...)

0
2022-06-07 18:00:51
资源

如果您可以访问 OCX 代码,您可能会公开连接的场合训练器并直接调用它。¢ 不明白在 VB6 天是否存在等效的.Net Button is Click() 方法

1
2022-06-07 15:40:14
资源