PDA

Просмотр полной версии : Вертикальный заголовок окна



Folko
15.09.2005, 20:13
Как можно сделать вертикальный заголовок у окна средствами WinAPI.
Я пробовал так, но что-то не так делаю:

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{switch(msg)
{case WM_PAINT:
{HDC hdc = GetDC(hwnd);
RECT *Re = new RECT;
Re->bottom = 400;
Re->top = 0;
Re->left = 350;
Re->right = 400;
DrawCaption(hwnd,hdc,Re,DC_GRADIENT);
ReleaseDC(hwnd,hdc);
delete Re;
return 0;
}
case WM_DESTROY:
{PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hwnd,msg,wParam,lParam);

Может я не там его рисую. Стиль окна WS_BORDER. Окно у меня 400х500

Romeo
16.09.2005, 11:25
WM_PAINT посылается системой при для перерисовки клиентской части окна. Тебе нужно ловить WM_NCPAINT. Подробности в MSDN.

Eugie
19.09.2005, 14:14
Сомневаюсь, что DrawCaption в принципе способна отрисовать вертикальный заголовок. Точнее - уверен, что не может, т.к. не вижу параметра, отвечающего за направление текста.

Вообще, если интересно, как может быть реализована DrawCaption, см. http://reactos.com/doxygen/lib/nonclient_8c-source.html#l01106

Народ разрабатывает свою ОС (ReactOS), совместимую с Windows (маньяки ;))

Folko
19.09.2005, 21:39
Если нельзя с помощью DrawCaption, в чем я убедился после нескольких часов тщетных попыток,то чем можно? Или нужно все вырисовывать вручную?

Eugie
19.09.2005, 21:50
Думаю, придется все делать вручную. Как это делается в принципе - см. по указанной выше ссылке. Вертикальные заголовки там тоже не предусмотрены, но код в целом поучительный, на его основе можно сделать то, что тебе надо.

Folko
19.09.2005, 21:59
Придется глубже вникать в WinAPI, я думал это проще делается. WinAPI начал изучать 2 недели назад. Когда-нибудь я его все же это сделаю, рано или поздно, так или иначе

bombur
20.09.2005, 00:44
напр.,

http://www.datamekanix.com/

см. CSizingControlBarCF::NcPaintGripper()