1

我正在为从 Control 继承而不是 ButtonBase 的按钮创建一个基类。
我正在使用反射器查看 ButtonBase 以确保我不会忽略任何重要的内容,并且我对 WndProc 方法的内容感到困惑。
那里检查按钮向上、单击和捕获更改等内容,据我所知,这些都在类的相关“On”方法中处理。

有谁知道他们为什么在里面?

4

1 回答 1

1

它也是原生 Windows 按钮控件的包装器。简而言之:

  • 0x00f5 = BM_CLICK:运行 OnClick()
  • 0x2111 = BN_CLICKED 通知:运行 OnClick()
  • 处理 OwnerDraw 的一堆变通方法。

您不必担心任何这些,因为您不包装本机按钮并且不需要所有者绘制。请确保您实现了 IButtonControl,以便您的按钮在按下 Enter 和 Escape 并被选为表单的 Accept/CancelButton 时行为正确。不是绝对必要的,但是当您从 ButtonBase 而不是 Control 继承时,它是自动的。

于 2010-08-03T19:00:40.530 回答