Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/35: Рейтинг темы: голосов - 35, средняя оценка - 4.66
 Аватар для Tarik20
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243

Своя кнопка в заголовке

12.05.2013, 10:47. Показов 7452. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как добавить свою кнопку в заголовок как на рисунке:
Название: capture_05122013_094400.png
Просмотров: 870

Размер: 1.9 Кб
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2013, 10:47
Ответы с готовыми решениями:

Дополнительная кнопка в заголовке окна
Добрый день! Подскажите, пожалуйста, как можно добавить кнопку в заголовке окне (возле кнопок свернуть/развернуть/закрыть). Пользуюсь C++...

Своя кнопка
Как сделать свою кнопку, т.е. чтобы было одно изображение, при наведении второе и при нажатии 3.

Своя треугольная кнопка
Решил попробовать изменить шаблон стандартной кнопки. (Template -> Edit Copy) Нарисовал свою форму кнопки с помощью Pen. В виде...

17
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.05.2013, 11:11
Лучший ответ Сообщение было отмечено как решение

Решение

лехко...
Добавляем кнопку в заголовок окна

Автор: Tercio Ferdinando Gaudencio Filho

Приведённый здесь код создаёт кнопку в заголовке окна, создаёт MenuItem в системном меню и создаёт подсказку(Hint) в кнопке. Поместите код в Ваш Unit и замените "FrmMainForm" на Ваше имя формы, а так же некоторые кусочки кода, ткст подсказки и т.д.

Совместимость: Delphi 3.x (или выше)

Delphi
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
... 
 
  private 
    { Private declarations } 
    procedure WMNCPAINT          (var msg: Tmessage); message WM_NCPAINT; 
    procedure WMNCACTIVATE       (var msg: Tmessage); message WM_NCACTIVATE; 
    procedure WMNCMOUSEDOWN      (var msg: Tmessage); message WM_NCLBUTTONDOWN; 
    procedure WMNCMOUSEMOVE      (var Msg: TMessage); message WM_NCMOUSEMOVE; 
    procedure WMMOUSEMOVE        (var Msg: TMessage); message WM_MOUSEMOVE; 
    procedure WMLBUTTONUP        (var msg: Tmessage); message WM_LBUTTONUP; 
    procedure WNCLBUTTONDBLCLICK (var msg: Tmessage); message WM_NCLBUTTONDBLCLK; 
    procedure WMNCRBUTTONDOWN    (var msg: Tmessage); message WM_NCRBUTTONDOWN; 
    procedure WMNCHITTEST        (var msg: Tmessage); message WM_NCHITTEST; 
    procedure WMSYSCOMMAND       (var msg: Tmessage); message WM_SYSCOMMAND; 
 
... 
 
var 
... 
  Pressed         : Boolean; 
  FocusLost       : Boolean; 
  Rec             : TRect; 
  NovoMenuHandle  : THandle; 
  PT1             : TPoint; 
  FHintshow       : Boolean; 
  FHint           : THintWindow; 
  FHintText       : String; 
  FHintWidth      : Integer; 
 
... 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMSYSCOMMAND(var Msg: TMessage); 
begin 
  if Msg.WParam=LongInt(NovoMenuHandle) then 
    //********************************************* 
    //Кнопка была нажата! Добавьте сюда Вашу функцию 
    //********************************************* 
  inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMNCHITTEST(var Msg: TMessage); 
var 
  Tmp : Boolean; 
begin 
  if Pressed then 
  begin 
    Tmp:=FocusLost; 
    PT1.X := Msg.LParamLo - FrmMainForm.Left; 
    PT1.Y := Msg.LParamHi - FrmMainForm.Top ; 
    if PTInRect(Rec, PT1) then 
      FocusLost := False 
    else 
      FocusLost := True; 
    if FocusLost <> Tmp then 
      InvalidateRect(FrmMainForm.Handle, @Rec, True); 
  end; 
  inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMLBUTTONUP(var Msg: TMessage); 
var 
  Tmp : Boolean; 
begin 
  ReleaseCapture; 
  Tmp     := Pressed; 
  Pressed := False; 
  if Tmp and PTInRect(Rec, PT1) then 
  begin 
    InvalidateRect(FrmMainForm.Handle, @Rec, True); 
    FHintShow := False; 
    FHint.ReleaseHandle; 
    //********************************************* 
    //Кнопка была нажата! Добавьте сюда Вашу функцию 
    //********************************************* 
  end 
  else 
    inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WNCLBUTTONDBLCLICK(var Msg: TMessage); 
begin 
  PT1.X := Msg.LParamLo - FrmMainForm.Left; 
  PT1.Y := Msg.LParamHi - FrmMainForm.Top ; 
  if not PTInRect(Rec, PT1) then 
    inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMNCRBUTTONDOWN(var Msg: TMessage); 
begin 
  PT1.X := Msg.LParamLo - FrmMainForm.Left; 
  PT1.Y := Msg.LParamHi - FrmMainForm.Top ; 
  if not PTInRect(Rec, PT1) then 
    inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMNCMOUSEDOWN(var Msg: TMessage); 
begin 
  PT1.X := Msg.LParamLo - FrmMainForm.Left; 
  PT1.Y := Msg.LParamHi - FrmMainForm.Top ; 
  FHintShow := False; 
  if PTInRect(Rec, PT1) then 
  begin 
   Pressed   := True; 
   FocusLost := False; 
   InvalidateRect(FrmMainForm.Handle, @Rec, True); 
   SetCapture(TWinControl(FrmMainForm).Handle); 
  end 
  else 
  begin 
   FrmMainForm.Paint; 
   inherited; 
  end; 
end; 
 
//------------------------------------------------------------------------------ 
 
//That function Create a Hint 
procedure TFrmMainForm.WMNCMOUSEMOVE(var Msg: TMessage); 
begin 
  PT1.X := Msg.LParamLo - FrmMainForm.Left; 
  PT1.Y := Msg.LParamHi - FrmMainForm.Top ; 
  if PTInRect(Rec, PT1) then 
  begin 
    FHintWidth  := FHint.Canvas.TextWidth(FHintText); 
    if (FHintShow = False) and (Length(Trim(FHintText)) <> 0) then 
      FHint.ActivateHint( 
        Rect( 
          Mouse.CursorPos.X, 
          Mouse.CursorPos.Y + 20, 
          Mouse.CursorPos.X + FHintWidth + 10, 
          Mouse.CursorPos.Y + 35 
          ), 
        FHintText 
      ); 
      FHintShow := True; 
  end 
  else 
  begin 
    FHintShow := False; 
    FHint.ReleaseHandle; 
  end; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMMOUSEMOVE(var Msg: TMessage); 
begin 
  FHintShow := False; 
  FHint.ReleaseHandle; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMNCACTIVATE(var Msg: TMessage); 
begin 
  InvalidateRect(FrmMainForm.Handle, @Rec, True); 
  inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.WMNCPAINT(var Msg: TMessage); 
begin 
  InvalidateRect(FrmMainForm.Handle, @Rec, True); 
  inherited; 
end; 
 
//------------------------------------------------------------------------------ 
 
procedure TFrmMainForm.FormPaint(Sender:TObject); 
var 
  Border3D_Y, Border_Thickness, Btn_Width, 
  Button_Width, Button_Height  : Integer; 
  MyCanvas                      : TCanvas; 
begin 
  MyCanvas        := TCanvas.Create; 
  MyCanvas.Handle := GetWindowDC(FrmMainForm.Handle); 
  Border3D_Y      := GetSystemMetrics(SM_CYEDGE); 
  Border_Thickness:= GetSystemMetrics(SM_CYSIZEFRAME); 
  Button_Width    := GetSystemMetrics(SM_CXSIZE); 
  Button_Height   := GetSystemMetrics(SM_CYSIZE); 
 
  //Создаём квадратную кнопку, но если Вы захотите создать кнопку другого размера, то
  //измените эту переменную на Вашу ширину. 
  Btn_Width  := Border3D_Y  + Border_Thickness + Button_Height - (2 * Border3D_Y) - 1; 
 
  Rec.Left   := FrmMainForm.Width - (3 * Button_Width + Btn_Width); 
  Rec.Right  := FrmMainForm.Width - (3 * Button_Width + 03); 
  Rec.Top    := Border3D_Y  + Border_Thickness - 1; 
  Rec.Bottom := Rec.Top     + Button_Height - (2 * Border3D_Y); 
  FillRect(MyCanvas.Handle,Rec,HBRUSH(COLOR_BTNFACE+1)); 
  If not Pressed or Focuslost Then 
    DrawEdge(MyCanvas.Handle, Rec, EDGE_RAISED, BF_SOFT or BF_RECT) 
  Else If Pressed and Not Focuslost Then 
    DrawEdge(MyCanvas.Handle, Rec, EDGE_SUNKEN, BF_SOFT or BF_RECT); 
 
  //It draw a the application icon to the button. Easy to change. 
  DrawIconEX(MyCanvas.Handle, Rec.Left+4, Rec.Top+3, Application.Icon, 8, 8, 0, 0, DI_NORMAL); 
 
  MyCanvas.Free; 
end; 
 
... 
 
procedure TFrmMainForm.FormCreate(Sender: TObject); 
 
... 
 
  InsertMenu(GetSystemMenu(Handle,False), 4, MF_BYPOSITION+MF_STRING, NovoMenuHandle,pchar('TEXT OF THE MENU')); 
  Rec             := Rect(0,0,0,0); 
  FHintText       := 'Put the text of your Hint HERE'; 
  FHint           := THintWindow.Create(Self); 
  FHint.Color     := clInfoBk;  //Вы можете изменить бэкграунд подсказки
 
...
Источник: http://delphi7.org/lit2/393.php
Осталась мелочь - оформить это все на С++ .

Есть еще Visual C++ - Кнопки в заголовке окна, но чёт в Вынь7 кнопок не видно, хотя на нажатие реагирует.



ну и
Дополнительная кнопка в заголовке окна
3
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.05.2013, 12:53
Цитата Сообщение от LK Посмотреть сообщение
Совместимость: Delphi 3.x (или выше)
А точнее ниКакая )

Добавлено через 48 секунд
Цитата Сообщение от LK Посмотреть сообщение
Есть еще Visual C++ - Кнопки в заголовке окна, но чёт в Вынь7 кнопок не видно, хотя на нажатие реагирует.
Ото ж ...

В Win7 окнах большинство таких трюков либо не работает либо выглядит калечно.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33397 / 21507 / 8236
Регистрация: 22.10.2011
Сообщений: 36,904
Записей в блоге: 12
12.05.2013, 13:53
Цитата Сообщение от LK Посмотреть сообщение
но чёт в Вынь7 кнопок не видно
Аналогично и приведенный по последней ссылке Дельфийский код не показывает доп. кнопку. А тот, что отцитирован здесь - просто вешает форму намертво, ни изменить положение, ни изменить размеры нельзя. Тестировалось на Win7 + Delphi XE2...

А вот код, приведенный в Delphi Heaven прекрасно добавляет в заголовок окна кнопку:


, и оставляет окно полностью работоспособным. Так что уж если переводить - то тот код, который работает...
2
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.05.2013, 14:26
Цитата Сообщение от Avazart Посмотреть сообщение
А точнее ниКакая
- ссылка на источник добавлена как раз для тех, кто в танке.
Цитата Сообщение от UI Посмотреть сообщение
уж если переводить
- информация, предоставляемая на форумах, далеко не всегда имеет тип "взял - и использовал", гораздо чаще - это направление думания, и сей тезис подтверждает последующее обсуждение .
0
 Аватар для Whatson2
8 / 8 / 1
Регистрация: 06.09.2014
Сообщений: 52
17.04.2015, 12:01
У некоего товарища Rodrigo Ruz ("Road to Delphi") есть бесплатная библиотечка VCL Styles Utils. Там есть Vcl.Styles.NC.pas файл (NC - no client area). Описание можно почитать в интернете.
Его достаточно добавить в проект и в опциях: "Delphi Compiler -> Search Path" указать папку с Vcl.Styles.NC.pas и Vcl.Styles.Utils.SystemMenu.pas, также указать путь к папке с Detours файлами DDetours.pas, GenericsCast.pas и InstDecode.pas.
Перед тем, как использовать .pas файлы, необходимо генерировать .hpp: выделяем .pas файл в дереве проектов двойным кликом и жмём "Alt + F9" -> в папке рядом с .pas появляется .hpp.
После всего, можно создавать кнопки в загаловке (проверено в XE2):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    NCControls = new TNCControls(this);
    TNCButton *but;
    for (int i = 0; i <= 5; i++) {
        but = new TNCButton(NCControls);
        NCControls->AddToList(but);
        NCControls->ShowSystemMenu = true;
        TVarRec args[1] = {i + 1};
        NCControls->List->Items[i]->Name       = Format(L"NCButton%d", args, 1);
        NCControls->List->Items[i]->Hint       = Format(L"Hint for NCButton%d", args, 1);
        NCControls->List->Items[i]->ShowHint   = true;
        NCControls->List->Items[i]->Caption    = L"Btn" + IntToStr(i+1);
        NCControls->List->Items[i]->Style      = TNCButton::nsPushButton;
        NCControls->List->Items[i]->ImageStyle = TNCButton::isGrayHot;
        NCControls->List->Items[i]->AlignWithMargins = false;
        //NCControls->List->Items[i]->Images     = ImageList1;
        //NCControls->List->Items[i]->ImageIndex = i;
        NCControls->List->Items[i]->BoundsRect = Rect(30+(i*110), 5, 90+(i*110), 25);
        NCControls->List->Items[i]->OnClick    = NULL;
    }
тонкости
Удалять кнопки в runtime-е так просто не получиться. Удалять из дельфийского класса TObjectList<>, в котором храняться кнопки, из под Builder-а у меня получилось только добавив в .pas конкретный метод удаления.
2
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.04.2015, 12:24
Ну так, а ссылку на либу?
1
 Аватар для Whatson2
8 / 8 / 1
Регистрация: 06.09.2014
Сообщений: 52
17.04.2015, 13:53
Конечно!
А вот сам сайт (новость от August 24, 2014)
Без серьёзных знаний Delphi в C++ Builder-е сложновато жить.
2
0 / 0 / 1
Регистрация: 15.02.2013
Сообщений: 27
18.01.2017, 22:02
Цитата Сообщение от Whatson2 Посмотреть сообщение
У некоего товарища Rodrigo Ruz ("Road to Delphi") есть бесплатная библиотечка VCL Styles Utils. Там есть Vcl.Styles.NC.pas файл (NC - no client area). Описание можно почитать в интернете.
Его достаточно добавить в проект и в опциях: "Delphi Compiler -> Search Path" указать папку с Vcl.Styles.NC.pas и Vcl.Styles.Utils.SystemMenu.pas, также указать путь к папке с Detours файлами DDetours.pas, GenericsCast.pas и InstDecode.pas.
Перед тем, как использовать .pas файлы, необходимо генерировать .hpp: выделяем .pas файл в дереве проектов двойным кликом и жмём "Alt + F9" -> в папке рядом с .pas появляется .hpp.
После всего, можно создавать кнопки в загаловке (проверено в XE2):
Спасибо) библиотеку переписали, судя по всему.

пример для кнопки меню в строке заголовка (c попапом)
xe4, VCL Styles Utils версии вчерашнего дня

C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::FormCreate(TObject *Sender) {
NCControls = new TNCControls(this);
NCControls->ShowSystemMenu = true;
NCControls->ButtonsList->Add();
NCControls->ButtonsList->Items[0]->ShowHint   = false;
NCControls->ButtonsList->Items[0]->Caption    = L"Меню";
NCControls->ButtonsList->Items[0]->Style      = TNCButton::nsSplitTrans;
NCControls->ButtonsList->Items[0]->BoundsRect = Rect(30, 5, 80, 25);
NCControls->ButtonsList->Items[0]->DropDownMenu = PopupMenu1;
NCControls->ButtonsList->Items[0]->OnClick    = NCClick;
}
0
0 / 0 / 0
Регистрация: 05.12.2018
Сообщений: 4
05.12.2018, 23:21
Простите за некропост, но как его установить в c++ builder? У меня XE8.

Цитата Сообщение от Whatson2 Посмотреть сообщение
У некоего товарища Rodrigo Ruz ("Road to Delphi") есть бесплатная библиотечка VCL Styles Utils. Там есть Vcl.Styles.NC.pas файл (NC - no client area). Описание можно почитать в интернете.
Его достаточно добавить в проект и в опциях: "Delphi Compiler -> Search Path" указать папку с Vcl.Styles.NC.pas и Vcl.Styles.Utils.SystemMenu.pas, также указать путь к папке с Detours файлами DDetours.pas, GenericsCast.pas и InstDecode.pas.
Перед тем, как использовать .pas файлы, необходимо генерировать .hpp: выделяем .pas файл в дереве проектов двойным кликом и жмём "Alt + F9" -> в папке рядом с .pas появляется .hpp.
После всего, можно создавать кнопки в заголовке (проверено в XE2)
Либо в этой инструкции чего-то не хватает, либо я совсем тупой.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.12.2018, 00:46
Забей это извращение пихать кнопку в заголовок.
1
0 / 0 / 0
Регистрация: 05.12.2018
Сообщений: 4
06.12.2018, 03:58
Avazart, не хочется лишнюю кнопку на форме делать. Некрасиво будет.
0
06.12.2018, 12:31

Не по теме:

Цитата Сообщение от wserfer Посмотреть сообщение
Некрасиво будет.
Не стану спорить с извращенцем...

0
 Аватар для Whatson2
8 / 8 / 1
Регистрация: 06.09.2014
Сообщений: 52
06.12.2018, 20:17
wserfer, теме уже 3.5 года, тем более phobos7 через 2 года уточнил, что "библиотеку переписали, судя по всему."
И третье - самое главное - есть замечательная Qt с её css стилизацией. Имхо, Embarcadero не стоит использовать.
0
0 / 0 / 0
Регистрация: 05.12.2018
Сообщений: 4
07.12.2018, 01:20
Цитата Сообщение от Whatson2 Посмотреть сообщение
wserfer, теме уже 3.5 года, тем более phobos7 через 2 года уточнил, что "библиотеку переписали, судя по всему."
Теме уже 3.5, а нормального решения так и нет. Дело не в том, что код не работает, а в том, что библиотека не подключается. Об этом я и спросил.

Не по теме:


Цитата Сообщение от Whatson2 Посмотреть сообщение
есть замечательная Qt с её css стилизацией. Имхо, Embarcadero не стоит использовать
Цитата Сообщение от Avazart Посмотреть сообщение
Забей это извращение пихать кнопку в заголовок.
Этот форум застрял в нулевых? Не помню, чтобы я спрашивал, что мне нужно юзать.

0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.12.2018, 20:04
Цитата Сообщение от wserfer Посмотреть сообщение
Этот форум застрял в нулевых? Не помню, чтобы я спрашивал, что мне нужно юзать.
А Вы в каком месте застряли? Когда объясняли что нужно главным образом уделять внимание логике/ф-ционалу программы, а не кнопочки лепить куда непоподя?

Я считаю за заголовок должна отвечать система и программист не должен туда лезть своими руками.
Результаты могут быть неожиданными например при смене темы виндовс или же вообще при упрощённых настройках типа "аля XP стайл".

Можно конечно изменить тип окна, убрать стандартный бордюр и заголовок и рисовать это "все руками" но в таком случае получите приложение-"урод" который и зимой и летом ...
0
08.12.2018, 01:42

Не по теме:

Avazart, я делаю приложения, в основном, для себя. Исключительно "as is". Никого их использовать не заставляю, деньги за это не требую. Так в чем проблема?

0
106 / 93 / 44
Регистрация: 26.07.2015
Сообщений: 197
08.12.2018, 09:37
alphaskins http://www.alphaskins.com/index.php прекрасно справляется с рисованием кнопок в заголовке и есть подробная инструкция по установке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2018, 09:37
Помогаю со студенческими работами здесь

Своя кнопка выбора
Нужно сделать свою кнопку выбора элементов. Есть кнопка с тремя точками которая все делает (открывает нужный справочник, двойным кликом...

Своя кнопка в чужом окне
Здравствуйте Господа!!! Хочу внедрить свою кнопку в чужой процесс , при помощи DLL , итак делаю .dll в DLL_PROCESS_ATTACH пишу так - ...

Своя кнопка на панель mvb6
Как создать свой инструмент на панели Microsoft Visual Studio 6 Только не из стандартных инструментов, а путём добавления через Add in...

Кнопка в заголовке формы
Подскажите, как сделать кнопку в заголовке? Пишу программу и хочу красиво ее оформить.

Доп кнопка в заголовке окна
Подскажите пожалуйста, как нарисовать дополнительную кнопку в заголовке окна.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru