четверг, 4 февраля 2016 г.

Как использовать диагональные рамки WinAPI?

Как использовать диагональные рамки WinAPI? Они же кривые!

Я вот о чём: о ф-ии DrawEdge. Хорошая ф-я, простая и понятная. Если не читать документацию. А там, оказывается....

Давеча я исходники 1992 года ковырял в надежде поднять что-нибудь на новый уровень. Удалось через VS поднять 16-х .res-файл с диалогом, где BWCC использовался. Но, не беда: кнопки 'BorBtn' переписываем в 'Button', а рамки 'BorShade' можно заменить на CONTROL с SS_ETCHEDFRAME или SS_ETCHEDHORZ или... Зашёл я посмотреть стили контролов на MSDN, а там ссылка на DrawEdge - дескать, то же получите с контролом, что при рисовании этой ф-ей. А я раньше-то её копипастил и не задумывался, а тут прокрутил справку пониже - Батюшки мои! - она диагонали чертит!!!

И вот я быстренько набросал прогу посмотреть эти диагонали. Конечно, сначала криво набросал. Поэтому, разбираясь, обвесил её разными движками-флажками. Но даже всё выпрямив, так и не понял затеи Microsoft. Диагонали у них работают, но работают так плохо, что не понятно, что это - фича, бага или пасхальное яйцо?


Я поиграл с флагами и размерами - это ни на что не похоже: то она вместо правого угла привязывает линию к левому, то вообще не рисует, а угол диагональности - не только не диагональный, но и не 45 градусов, а как ей придумается. 

Граждане товарищи! Кто видел эти диагонали в жизни? Кто мне расскажет? Ну, хоть за пузырь? Ну прикольно же!