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

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
Folko
Сообщения: 8
Зарегистрирован: 23 авг 2005, 16:43
Откуда: Minsk, Belarus

15 сен 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
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

16 сен 2005, 11:25

WM_PAINT посылается системой при для перерисовки клиентской части окна. Тебе нужно ловить WM_NCPAINT. Подробности в MSDN.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

19 сен 2005, 14:14

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

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

Народ разрабатывает свою ОС (ReactOS), совместимую с Windows (маньяки ;) )
Folko
Сообщения: 8
Зарегистрирован: 23 авг 2005, 16:43
Откуда: Minsk, Belarus

19 сен 2005, 21:39

Если нельзя с помощью DrawCaption, в чем я убедился после нескольких часов тщетных попыток,то чем можно? Или нужно все вырисовывать вручную?
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

19 сен 2005, 21:50

Думаю, придется все делать вручную. Как это делается в принципе - см. по указанной выше ссылке. Вертикальные заголовки там тоже не предусмотрены, но код в целом поучительный, на его основе можно сделать то, что тебе надо.
Folko
Сообщения: 8
Зарегистрирован: 23 авг 2005, 16:43
Откуда: Minsk, Belarus

19 сен 2005, 21:59

Придется глубже вникать в WinAPI, я думал это проще делается. WinAPI начал изучать 2 недели назад. Когда-нибудь я его все же это сделаю, рано или поздно, так или иначе
bombur
Сообщения: 5
Зарегистрирован: 18 сен 2005, 23:59

20 сен 2005, 00:44

напр.,

http://www.datamekanix.com/

см. CSizingControlBarCF::NcPaintGripper()
Ответить