007wan |
Отправлено: 03 Ноября, 2019 - 10:56:53
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Первый пост:
Цитата: Только текст и сами вкладки и механизм переключение
Цитата: как сделать зависимость: количество символов = ширина вкладки+Учитывая иконки вкладки слева перед текстом
GetTextExtentPoint32A - вычисляет ширину и высоту указанной строки текста.
Так тогда еще идея только была фундоментальной, на стадии обдумывания, а сейчас всё додумал. Может мне второй пост создать? Хотя наверное бесполезно... Цитата: GetTextExtentPoint32A - вычисляет ширину и высоту указанной строки текста.
Блин сложно.
Ну можно пожалуйста реализовать идею, БУДУ очень благодарен, ведь ты молодец, потому что все коды пишешь с руки, а не берешь откуда-то с интернета и я тебя за это уважаю.
---
Ну пожалуйста можно реализовать идею такую. Она не полная, там еще кучу нужно добавить, а я потом покажу что вышло у меня и возможно кто-то захочет так же...
Суть идеи:
При запуске кода будет создаваться одна вкладка "Пустая вкладка"(ёё текст можно будет в дальнейшем изменить, как и иконку, но раз это пустая вкладка - значит иконки нету) количество букв в слове любом при создании вкладки повлияет на ширину вкладки и повлияет на расположении вкладок промежуточных(то есть они переместятся, т.к ширина другой изменилась).
Что в пустой ЛЮБОЙ вкладки: ListBox с названиями имён(слов), при выборе которых создаются контроллы, а сам Listbox
- удаляется именно для "Пустой активной вкладки", как и выбранная строчка в Listbox, выбранная строчка в Listbox , например, "Вкладка 1" это имя назначается вкладке той, которая сейчас активна и в которой была выбрана строчка в Listbox и создаются контроллы(для каждой вкладки разные, а именно в зависимости: какую строчку в Listbox выбрали, то и такие будут контроллы. Максимально из Listbox можно выбрать 1 строчку, не больше(тоесть не должны повторяться вкладки)
Далее будет меню сверху: "Файл--->Создать процесс", при нажатии создается пустая вкладка.
(Добавление)
Zireael , Ну пожалуйста
(Добавление)
Zireael , Вообщем ФИНАЛЬНАЯ версия Таба, которого я задумал, я даже готов тебе заплатить 500 руб., если ты хочешь, но когда придет стипендия.
1)Рельеф таба остается таким же каким ты мне его давал на первой странице.
2)Добавится зависимость: Размер вкладки при создании будет по длин вкладки будет определяется по ширине букв и количеству букв названии вкладки.
3)Добавятся иконки на вкладки слева. Перед текстом. У пустых вкладок иконки не будут отображаться.
4)Добавятся "х" в правом верхнем углу вкладки, при этом добавится эффекты наведения, нажатия на крестики(может даже квадраты будут выделятся, а в них "х").
5)Добавится "+" возле последней добавленной вкладки(Всего 3 вкладки, когда создано 3 вкладки "+" убирается).
6)Добавится при наведении на неактивные вкладки и активные будет меняться фон наведенной вкладки(изменятся тусклость или другим цветом). Короче эффекты.
7)Сгруппировать переменные и добавить новые(пока эти):
-позиция таба(всего. даже со вкладками)
По мере всего, я наверное буду просить его чуть-чуть переделать, но не полностью это точно.
(Добавление)
8)Что бы контроллы из CreateWindow были на табе, а таб был прозрачным для этих контроллов |
|
|
007wan |
Отправлено: 04 Ноября, 2019 - 09:09:30
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Почему начинает мигать круг, когда его добавляю в таб?
CODE:Ellipse(hdc, 300, 0, 270, 30);
Хотя всё остальное не мигает.
(Добавление)
Можно пожалуйста Таб дорисовать: Добавить кнопки "х" и "+", пожалуйста
Код (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define PS_SOLID 0
#define PS_NULL 5
#define SRCCOPY 13369376
#define TRANSPARENT 1
#define DT_CENTER 1
#define RUSSIAN_CHARSET 204
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "RoundRect", "RoundRect", "Gdi32.dll");
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "PtInRect", "PtInRect", "User32.dll");
external(INT, "BitBlt", "BitBlt", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll");
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll");
external(INT, "DrawText", "DrawTextA", "User32.dll");
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll");
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll");
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "Ellipse", "Ellipse", "Gdi32.dll");
#definefile "C:\Users\Home\Desktop\kibor_set\Constants.txt";
int h_font, old_font;
int mouseX, mouse_Y;
int hdc, hdc_mem, hdc_bitmap;
int pen, brush1, brush2, brush_fon, old_pen, old_brush;
pen = CreatePen(PS_NULL, 0, 0);
brush_fon = CreateSolidBrush(14013909);
brush1 = CreateSolidBrush(4307199);
brush2 = CreateSolidBrush(3309517);
int current_tab = 0;
int rect_tab[3][4];
rect_tab[0][0]=25; rect_tab[0][1]=10; rect_tab[0][2]=150; rect_tab[0][3]=40;
rect_tab[1][0]=155; rect_tab[1][1]=10; rect_tab[1][2]=235; rect_tab[1][3]=40;
//rect_tab[2][0]=240; rect_tab[2][1]=15; rect_tab[2][2]=255; rect_tab[2][3]=30;//240 10 320 40
string text_tab[3] = {"Новая вкладка", "Открыто1", "+"};
int image_width = 600;
int image_height = 500;
createdialog(0);
showdialog(0, "BALLOON BOT", 200, 200, 515, 500, 1, 1);
enabletimer(0);
//-----------------------------------------------------------------------------------------------------------------------------------------------------
loop()
{
sleep(10);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(0, WM_CREATE)
{
hdc = GetDC(gethwnd(0));
hdc_mem = CreateCompatibleDC(hdc);
hdc_bitmap = CreateCompatibleBitmap(hdc, image_width, image_height);
SelectObject(hdc_mem, hdc_bitmap);
SetBkMode(hdc_mem, TRANSPARENT);
h_font = CreateFont(-14, 0, 0, 0, 500, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, "Comic Sans MS");
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(0, WM_MOVE)
{
pause(100);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_TIMER(0, 30)
{
if(getkeystate(1))
{
while(getkeystate(1))
{
sleep(10);
}
for(int tab_=0; tab_<sizearray(rect_tab); tab_++)
{
getmouse(mouseX, mouse_Y, formatiw(gethwnd(0)));
if(PtInRect(address(#rect_tab[tab_][0]), mouseX, mouse_Y))
{
current_tab=tab_;
break;
}
}
}
paint();
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function paint()
{
old_pen = SelectObject(hdc_mem, pen);
old_brush = SelectObject(hdc_mem, brush_fon);
Rectangle(hdc_mem, 0, 0, image_width+1, image_height+1);
SelectObject(hdc_mem, old_brush);
for(int i=0; i<sizearray(rect_tab); i++)
{
if(i == current_tab)
{
old_brush = SelectObject(hdc_mem, brush1);
}
else
{
old_brush = SelectObject(hdc_mem, brush2);
}
RoundRect(hdc_mem, rect_tab[i][0], rect_tab[i][1], rect_tab[i][2], rect_tab[i][3], 10, 10);
SelectObject(hdc_mem, old_brush);
SetTextColor(hdc_mem, 0);
old_font = SelectObject(hdc_mem, h_font);
DrawText(hdc_mem, text_tab[i], size(text_tab[i]), address(#rect_tab[i][0]), DT_CENTER);
SelectObject(hdc_mem, old_font);
}
old_brush = SelectObject(hdc_mem, brush1);
RoundRect(hdc_mem, 10, 30, 500, 250, 10, 10);
RoundRect(hdc_mem, 240, 15, 255, 30, 10, 10);
Ellipse(hdc_mem, 300, 0, 270, 30);
SelectObject(hdc_mem, old_brush);
SelectObject(hdc_mem, old_pen);
BitBlt(hdc, 0, 0, image_width, image_height, hdc_mem, 0, 0, SRCCOPY);
}
//----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
Zireael |
Отправлено: 04 Ноября, 2019 - 09:41:18
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Добавить кнопки "х" и "+"
И в чём проблема? Нарисовать прямоугольник Rectangle и написать текст DrawText.
Или нарисовать линии MoveToEx и LineTo. Не забыть создать перо CreatePen и выбрать его SelectObject.(Отредактировано автором: 04 Ноября, 2019 - 09:50:43) |
|
|
007wan |
Отправлено: 04 Ноября, 2019 - 10:10:29
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: Добавить кнопки "х" и "+"
И в чём проблема? Нарисовать прямоугольник Rectangle и написать текст DrawText.
Или нарисовать линии MoveToEx и LineTo. Не забыть создать перо CreatePen и выбрать его SelectObject.
Не проблема, а просто сложно очень. Я пока не совсем разбираюсь в этих функция, ну пожалуйста, пройдет 2 года, пока я буду сидеть и зависать. |
|
|
007wan |
Отправлено: 04 Ноября, 2019 - 10:13:16
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Я еще не могу разобраться и думаю как сделать, что бы перемещалась "+" в зависимости от созданных вкладок и "вкладки" перемещались(по Х) в зависимости от ширины других вкладок, а их ширина будет зависить от букв(названии этих вкладок) - Для меня это сложно.
(Добавление)
Zireael пишет: Цитата: сложно очень
Сложно скопировать строку и подставить свои значения? Это нет, я думаю пока по другой части.
(Добавление)
Ну пожалуйста, я сейчас пока еще занят с другим делом и я не могу на 5 минут сосредоточиться и в Киборе что-то писать, потому что пока времени не хватает.
(Добавление)
НУ пожалуйста прошу вам, помогите! |
|
|
|