powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Рисование в стиле XP
12 сообщений из 12, страница 1 из 1
Рисование в стиле XP
    #32772503
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть необходимость нарисовать Panel в виде обыкновенной формы, т.е. заголовок, кнопочка "закрыть" и т.п. Т.е. что-то типа "форма на форме"...

Если кто сталкивался с чем-либо подобным - милости прошу...
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32772811
Фотография ctmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачай чтонить вроде инфраджистика и погляди рефлектором ;)) они там юзают WinAPI вызовы родной виндовой библиотеки тем.

Наилучшие!
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32773057
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. YesЕсть необходимость нарисовать Panel в виде обыкновенной формы, т.е. заголовок, кнопочка "закрыть" и т.п. Т.е. что-то типа "форма на форме"...

Если кто сталкивался с чем-либо подобным - милости прошу...

на счет кнопочек закрыть не знаю, но заголовок можна так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
protected override CreateParams CreateParams 
		{
			get 
			{
				
				CreateParams cp = base.CreateParams;
			
				cp.Style |=(int)WindowStyles.WS_CAPTION   ;

				return cp;
			}
		}


думаю как-то можна и с кнопками сделать...
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32773673
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не совсем понимаю, как это использовать....
Можно попросить небольшой примерчик?
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32774122
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создаешь свой класс наследованный от Panel. Ну а потом используй как обыкновенную панель.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class CaptionPanel:Panel
{
 protected override CreateParams CreateParams 
{
get 
{

CreateParams cp = base.CreateParams;

cp.Style |=(int)WindowStyles.WS_CAPTION   ;

return cp;
}
}
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  class Form1: Form
{

 CaptionPanel panel  = new CaptionPanel();
  public Form1()
{ 
  InitializeComponents();
  panel.Size = ...
  panel.Location = ...
  this.Controls.Add(panel);

}
}
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32777471
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А где "обитает" WindowStyles? Что-то никак не могу его найти...
Соответственно ошибка выскакивает:
Код: plaintext
The type or namespace name 'WindowStyles' could not be found (are you missing a using directive or an assembly reference?)
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32777654
Vladimir Voloshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если по поводу
Dr. Yes... Т.е. что-то типа "форма на форме"...

Если кто сталкивался с чем-либо подобным - милости прошу...

то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Panel panel = new Panel();
  panel.SetBounds(20, 20, 120, 120);
  panel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
  panel.Parent = this;
  EmbeddedForm embeddedForm = new EmbeddedForm();
  embeddedForm.TopLevel = false;
  embeddedForm.FormBorderStyle = FormBorderStyle.None;
  embeddedForm.Dock = DockStyle.Fill;
  embeddedForm.Parent = panel;
  embeddedForm.Show();

поставь только FormBorderStyle какой надо

надотолько подумать как запретить перетаскивать фому по панели
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32777846
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. YesА где "обитает" WindowStyles? Что-то никак не могу его найти...
Соответственно ошибка выскакивает:
Код: plaintext
The type or namespace name 'WindowStyles' could not be found (are you missing a using directive or an assembly reference?)


WindowStyles это такой мой enums, который соответсвует константам стилей окна в виндовсе, вот он:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public enum WindowStyles : uint
{
	WS_OVERLAPPED       = 0x00000000,
	WS_POPUP            = 0x80000000,
	WS_CHILD            = 0x40000000,
	WS_MINIMIZE         = 0x20000000,
	WS_VISIBLE          = 0x10000000,
	WS_DISABLED         = 0x08000000,
	WS_CLIPSIBLINGS     = 0x04000000,
	WS_CLIPCHILDREN     = 0x02000000,
	WS_MAXIMIZE         = 0x01000000,
	WS_CAPTION          = 0x00C00000,
	WS_BORDER           = 0x00800000,
	WS_DLGFRAME         = 0x00400000,
	WS_VSCROLL          = 0x00200000,
	WS_HSCROLL          = 0x00100000,
	WS_SYSMENU          = 0x00080000,
	WS_THICKFRAME       = 0x00040000,
	WS_GROUP            = 0x00020000,
	WS_TABSTOP          = 0x00010000,
	WS_MINIMIZEBOX      = 0x00020000,
	WS_MAXIMIZEBOX      = 0x00010000,
	WS_TILED            = 0x00000000,
	WS_ICONIC           = 0x20000000,
	WS_SIZEBOX          = 0x00040000,
	WS_POPUPWINDOW      = 0x80880000,
	WS_OVERLAPPEDWINDOW = 0x00CF0000,
	WS_TILEDWINDOW      = 0x00CF0000,
	WS_CHILDWINDOW      = 0x40000000
}

...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32779686
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А где можно посмотреть все эти константы... Мне, например, хотелось бы получить панельку с изменяемыми границами и заголовком как у BorderStyle=ToolBox...
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32780402
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. YesА где можно посмотреть все эти константы... Мне, например, хотелось бы получить панельку с изменяемыми границами и заголовком как у BorderStyle=ToolBox...
ну названия есть в мсдн, а значения можешь в хедере посмотреть WinUser.h
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32780776
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу заставить работать стиль WS_EX_TOOLWINDOW с Panel.
Посему решил остановить свой выбор на WS_TILEDWINDOW - в принципе, он мне очень хорошо подходит. Вот только хотелось бы убрать (или заменить) иконку в заголовке этих окон, а также их заголовки...

К сожалению, у меня получается только сделать заголовки одинаковые для всех окон... :(

Очень прошу помочь мне написать конструктор, который бы позволял менять заголовок соответствующего окна и убирал бы (или заменял на нужную иконку)....
...
Рейтинг: 0 / 0
Рисование в стиле XP
    #32780784
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заметил одну интересную (и не очень хорошую к тому же) особенность:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class CPanel:Panel
{
	protected override CreateParams CreateParams 
	{
		get 
		{

			CreateParams cp = base.CreateParams;
			
			cp.Style |=(int)(0x00CF0000);
			
			return cp;
		}
	}
}

Если на такую панель добавить TextBox, то в нем невозможно мышкой выделять фрагмент текста и устанавливать курсор мышкой в любой фрагмент текста!!! С клавиатурой все работает нормально...

Пытался добавить на эту панель обыкновенную панель, а уже на нее textBox - все равно не помогает...

Как с этим бороться?!!!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Рисование в стиле XP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]