Здравствуйте. Меня интересует технология создания "нестандартной закладки" например таких как на рисунке который находится ниже. Зацепившись за места отмеченные стрелками можно перетащить окно, сложно как то выглядит но красиво Объясните хотя бы в теории как нечто подобное сделать ? Если у Вас есть примеры сабклассинга Таб Контрола буду очень признателен если поделитесь. Спасибо за внимание.
Даже в интернете исходников не найти по этой теме, может быть этот вовсе не сабклассинг ? а новый компонент ?)
Ладно будем разбираться, кстати вопрос такой, как заставить рисоваться дочерние элементы Таб контрола ? Код (Text): TabControl32WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM LOCAL hDC :DWORD LOCAL hBmp:DWORD LOCAL rc:DWORD .IF uMsg==WM_CREATE ;INVOKE MessageBox,0,0,0,0 ;.ELSEIF uMsg==WM_NCPAINT ;INVOKE MessageBox,0,0,0,0 .ELSEIF uMsg==WM_PAINT INVOKE ValidateRect,hWnd,NULL INVOKE GetClientRect,hWnd,ADDR rc INVOKE GetDC,hWnd XCHG EDI,EAX INVOKE DrawFocusRect,EDI,ADDR rc INVOKE CallWindowProc,OldTabControl32WndProc,hWnd,WM_ERASEBKGND,EDI,lParam INVOKE CallWindowProc,OldTabControl32WndProc,hWnd,WM_PRINTCLIENT,EDI,PRF_CLIENT INVOKE ReleaseDC,hWnd,EDI ;RET .ELSE INVOKE CallWindowProc,OldTabControl32WndProc,hWnd,uMsg,wParam,lParam RET .ENDIF XOR EAX,EAX RET TabControl32WndProc endp Этот код не рсует дочерние элементы находящиеся на Таб Контрол-е.. Про WS_CLIPCHILDREN знаю, но хотелось бы по другому. Спасибо за внимание
Если устроит на си то здесь http://lookanet.com/download/Tabbed/zip исходничек не мой, я только хостю.
Устроит но "Not Found The requested URL /download/Tabbed/zip was not found on this server." Будемс ждать пока Вы появитесь в сети
RDMess, насколько я понимаю, это достигается путём написания собственного обработчика WM_NCHITTEST и проверки попадания указателя мыши сначала в прямоугольник, ограничивающий все вкладки, а потом в трапециевидный регион для каждой вкладки. Если есть попадание в прямоугольник, но нет попадания в трапеции — значит, отдаём HTCAPTION, иначе HTCLIENT.
Спасибо, будем пробовать!!!! А в принципе по такой технологии можно же реализовать перерисовку статуса(как в вин ХР, при наведении рамка оранжевая но без манифестов и для более ранних версий виндов) компонентов при наведении курсора на него ?
Если б это не написал возможно и догадался бы)) Спасибо!!! А про исходник я имел в виду не много другое, как рисовать детей в WM_PAINT родителя(данном случае TabControl-a)
Каждое окно имеет свой обработчик WM_PAINT. Так что дети рисуют себя и родители то же самое. Если рисовать всё из одного обработчика - могут быть трудно-фиксируемые проблемы.
Т.е. если у родителя не поставить стиль WS_CLIPCHILDREN то он и закрашивает детей? А почему тогда если не сабклассить Таб Контрол и не ставить стиль WS_CLIPCHILDREN то дети рисуются нормально ? я запутался.
Здравствуйте дорогие друзья, объясните пожалуйста разницу между сообщениями WM_PRINT и WM_PRINTCLIENT. Неужели она только в том что обработчик второго сообщения обязан прорисовывать полностью и в нем не может быть BeginPaint & EndPaint ?