Я думаю, что WM_NCHHITTEST / HT_TRANSPARENT действительно ключ здесь.
Групповые блоки являются странным видом элементов управления: хотя они и выглядят так, как будто они содержат другие элементы управления, на самом деле они являются элементами этих элементов управления в дереве HWND. Таким образом, групповое окно, которое выглядит так, как будто оно содержит две кнопки, на самом деле является родственным элементом этих кнопок - и может располагаться до или после него в иерархии HWND.
Групповые блоки отвечают на WM_NCHITTEST с HT_TRANSPARENT, так что щелчки мыши проходят прямо через них. Одним из преимуществ этого является то, что не имеет значения, будет ли групповой блок находиться перед или после элементов управления, которые, по-видимому, содержатся в порядке окна; клики будут перенаправлены на эти элементы управления, а не на групповую коробку.
Чтобы двойной щелчок (или простой щелчок) по групповому блоку заработал, вам нужно сделать две вещи:
- переопределить стандартное поведение WM_NCHITTEST и вместо этого вернуть HT_CLIENT, как обычный элемент управления
- гарантирует, что содержимое группового блока будет * предшествовать * ему в z-порядке HWND, чтобы они больше не зависели от кликов, проходящих «через» групповой блок. (По крайней мере, я думаю, что вы хотите, чтобы они были раньше; в любом случае, вам, возможно, придется поиграть с заказом HWND сейчас, когда он снова важен.)
Обратите внимание, что этот тип прозрачности снова отличается от WS_EX_TRANSPARENT, который может соответствовать свойству мастера прозрачных классов. Упрощенно говоря, HT_TRANSPARENT связан с прозрачностью для мыши; WS_EX_TRANSPARENT больше подходит для того, чтобы рисовать в последний раз, чтобы братья и сестры "просвечивали".