Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как стилизовать окно


Автор: st4lk3r0k 12.6.2013, 23:50
Доброго времени суток smile

Как и нписанно в названии темы, мне интересно узнать, как делаются стили окон, как например у всех продуктов Adobe, iTunes, Steam, Opera, Chrome, итд...
Гуглом пользовался, но неудачно :(

Чтобы лучше было понятно, чего я собственно хочу, вот эскиз:
user posted image

Окно, будет масштабируемым, поэтому картинку использовать не получится :(

Добавлено через 4 минуты и 57 секунд
Чуть не забыл, софтина, пишется под винду на Visual Studio 2012, использую WinApi

Автор: VSB 13.6.2013, 00:50
Ой, намучаешься ты с чистым WinApi. Лучше бы Qt либо C#+WPF

Автор: Dem_max 13.6.2013, 06:07
Окна рисуются кастомно через WM_NCPAINT
http://msdn.microsoft.com/en-us/library/windows/desktop/dd145212(v=vs.85).aspx

Автор: st4lk3r0k 13.6.2013, 07:37
Цитата(VSB @  13.6.2013,  00:50 Найти цитируемый пост)
Ой, намучаешься ты с чистым WinApi. Лучше бы Qt либо C#+WPF 

Дык в том и смысл smile а как ещё учится?


Цитата(Dem_max @  13.6.2013,  06:07 Найти цитируемый пост)
Окна рисуются кастомно через WM_NCPAINT
http://msdn.microsoft.com/en-us/library/wi...2(v=vs.85).aspx 

О! Пасиб! Будем копать в ту сторону.

Кста, а по WM_NCPAINT, никто хороших уроков не знает? (можно на инглише smile)

Автор: Dem_max 13.6.2013, 08:53
Какие нафиг уроки, приходит сообщение начинаешь отрисовывать не клиентсую область собственно как WM_PAINT

Автор: st4lk3r0k 13.6.2013, 09:13
Цитата(Dem_max @  13.6.2013,  08:53 Найти цитируемый пост)
Какие нафиг уроки, приходит сообщение начинаешь отрисовывать не клиентсую область собственно как WM_PAINT 


Уроки по отрисовки smile

к примеру, нашел такой код:
Код

case WM_NCPAINT:
   {
       HDC hdc;
       RECT rect;
       HBRUSH b;
       HPEN pe;

       hdc=GetDCEx(hwnd,(HRGN)wParam,DCX_WINDOW|DCX_CACHE|DCX_INTERSECTRGN|DCX_LOCKWINDOWUPDATE);
       GetWindowRect(hwnd,&rect);
       b=CreateSolidBrush(RGB(0,180,180));
       SelectObject(hdc,B)/>;
       pe=CreatePen(PS_SOLID, 1, RGB(90, 90, 90));
       SelectObject(hdc,pe);
       Rectangle(hdc,0,0,(rect.right-rect.left),(rect.bottom-rect.top));
       DeleteObject(pe);
       DeleteObject(B)/>;

       ReleaseDC(hwnd,hdc);
       RedrawWindow(hwnd,&rect,(HRGN)wParam,RDW_UPDATENOW);
       return 0;

   }


а где устанавливается, что рисуется именно рамка окна, непонятно :(

вот по этойбы теме чегонить почитать...

Автор: st4lk3r0k 13.6.2013, 10:30
Можно поставить вопрос несколько иначе smile
Может ктонибудь скинуть код, который создаст окошко в форме эллипса (с антиалиасингом) и чтобы окошко отбрасывало тень smile без использования картинок ;) 

я пытался найти примеры, но видимо хреново подбираю слова для поиска :(

Автор: Amp 13.6.2013, 10:46
Цитата(st4lk3r0k @  13.6.2013,  10:30 Найти цитируемый пост)
Может ктонибудь скинуть код, который создаст окошко в форме эллипса (с антиалиасингом) и чтобы окошко отбрасывало тень smile без использования картинок ;) 

А у кого из озвученных приложений окно нестандартной формы? У всех либо системные декорации с кастомизированным заголовком (Opera, Chrome), либо отсутствие декорация и отрисовка фейковых в прямоугольной клиентской области (Steam, iTunes). 

По поводу эллипсов и треугольничков с тенями можешь почитать"Layered Windows".

Автор: st4lk3r0k 13.6.2013, 11:02
Цитата(Amp @  13.6.2013,  10:46 Найти цитируемый пост)
А у кого из озвученных приложений окно нестандартной формы? У всех либо системные декорации с кастомизированным заголовком (Opera, Chrome), либо отсутствие декорация и отрисовка фейковых в прямоугольной клиентской области (Steam, iTunes). 


Верно, но мне хочется немного сильнее закруглить края и заставить окошко отбрасывать тень, впринципе все smile


Цитата(Amp @  13.6.2013,  10:46 Найти цитируемый пост)
По поводу эллипсов и треугольничков с тенями можешь почитать"Layered Windows". 


Вот именно про "Layered Windows" я нифига полезного найти и несмог (с примерами).

Автор: st4lk3r0k 14.6.2013, 10:39
Я так понмаю, из вас тоже никто ничего полезного по "Layered Windows" в сети не видел? Мнебы хоть простенький пример масштабируемого окошка, чтобы начать двигаться в нужном направлении...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)