Попытка симулировать перетаскивание окна на основе клиентской области путем возврата HTCAPTION под WM_NCHITTEST (исключая HTCLIENT и соответствующие области) работает безупречно при использовании с родительским окном - однако наличие дочерних окон, таких как окна-заполнители вкладок, даже если установлено расширенное окностиль WS_EX_TRANSPARENT, заставляет щелчки не передавать сообщения WM_NCHITTEST родительскому окну (и попытка обрабатывать локальные сообщения WM_NCHITEST аналогичным образом приводит к ожидаемому эффекту перетаскивания дочернего окна вокруг родителя, а не самого родителя).
Учитывая, что каждая область в этом дочернем окне вкладки, по-видимому, считается клиентской областью, обработка WM_LBUTTONDOWN вместо этого, кажется, производит желаемый эффект (см. Ниже):
case WM_LBUTTONDOWN: {
SendMessage(mainWnd.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
break;
}
Где mainWnd.hWnd - это дескриптор родительского окна (hWnd - член разработанного класса помощника по свойствам окна)
Несмотря на то, что это дает желаемый эффект, я не совсем понимаю, действительно ли WS_EX_TRANSPARENT предназначен для того, чтобы позволить щелчкам проходить до нижележащегоwindows, а есть ли более подходящее решение?