Спасибо Тиибу и Тергиверу за ответы, к сожалению, мне просто не нравится ни одно из этих решений.Вот что я решил сделать:
Когда новая вкладка добавляется в мой элемент управления вкладками, я создаю окно с классом BUTTON и стилем BS_OWNERDRAWN.Затем я заменяю оконные процедуры (GWL_WNDPROC) своей собственной версией (простите мою сборку):
ForwardMessageProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.switch uMsg
.case WM_NOTIFY
invoke WinProc, hWnd, uMsg, wParam, lParam
xor eax, eax
.break
.case WM_COMMAND
invoke WinProc, hWnd, uMsg, wParam, lParam
xor eax, eax
.break
.default
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
.break
.endswitch
ret
ForwardMessageProc endp
Все, что он делает - это отправляет сообщения графического интерфейса в родительское окно.Эти «рамки вкладок» будут фактической областью содержимого вкладок, поэтому я добавляю все элементы графического интерфейса непосредственно в эти вкладки.Затем, когда пользователь нажимает на вкладку, я могу показать / скрыть каждую рамку вкладки по отдельности, и элементы GUI, которые находятся на ней, будут следовать ее примеру.Пока все работает отлично, и я не нашел никаких проблем.