Страница 1 из 1

Вертикальный заголовок окна

Добавлено: 15 сен 2005, 20:13
Folko
Как можно сделать вертикальный заголовок у окна средствами 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

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

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

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

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

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

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

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

Добавлено: 20 сен 2005, 00:44
bombur
напр.,

http://www.datamekanix.com/

см. CSizingControlBarCF::NcPaintGripper()