Zireael |
Отправлено: 31 Августа, 2019 - 19:55:15
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать иконку на диалог(был вопрос). Только сделать ее круглой, а то он закрашивает ее в квадрат, что не очень. Или сделать прозрачный фон.
Вообще ico с прозрачностью, фон вокруг круга не закрашивайте.
(Добавление)
Цитата: Я хочу изменить только фон
Ещё костыль:
code (Отобразить)CODE:#define PS_NULL 5
#define BLACK_COLOR 0
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "TransparentBlt", "TransparentBlt", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
int DC, Comp, bitmap;
int brush, brush2, pen;
int b0[2], edit;
createdialog(0);
showdialog(0, "Dialog", 100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
brush=CreateSolidBrush(65280); // цвет фона диалога
pen=CreatePen(PS_NULL, 0, 0);
brush2=CreateSolidBrush(BLACK_COLOR);
DC=GetDC(gethwnd(0));
Comp=CreateCompatibleDC(DC);
bitmap=CreateCompatibleBitmap(DC, 300, 300);
SelectObject(Comp, bitmap);
SelectObject(Comp, pen);
SelectObject(Comp, brush);
Rectangle(Comp, 0, 0, 300, 300);
SelectObject(Comp, brush2);
b0[0]=CreateWindow(0, "BUTTON", "Кнопка1", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0); // создать кнопку
rectangle(10, 10, 80, 25); // вызывать для каждого контрола, передавать координаты контрола
b0[1]=CreateWindow(0, "BUTTON", "Кнопка2", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 50, 100, 30, gethwnd(0), 0, 0, 0);
rectangle(10, 50, 100, 30);
edit=CreateWindow(0, "EDIT", "edit", WS_BORDER | WS_CHILD | WS_VISIBLE, 120, 10, 100, 20, gethwnd(0), 0, 0, 0);
rectangle(120, 10, 100, 20);
}
function rectangle(int posX, int posY, int posX2, int posY2)
{
Rectangle(Comp, posX, posY, posX+posX2, posY+posY2);
}
CREATE_TIMER(0, 100)
{
TransparentBlt(DC, 0, 0, 300, 300, Comp, 0, 0, 300, 300, BLACK_COLOR);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==b0[0])messagebox("Нажата кнопка1");
if(message.lparam==b0[1])messagebox("Нажата кнопка2");
} |
|
|
007wan |
Отправлено: 01 Сентября, 2019 - 10:42:51
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Ещё костыль: Почему?
(Добавление)
Zireael пишет: Цитата: Как сделать иконку на диалог(был вопрос). Только сделать ее круглой, а то он закрашивает ее в квадрат, что не очень. Или сделать прозрачный фон.
Вообще ico с прозрачностью, фон вокруг круга не закрашивайте.
(Добавление)
Цитата: Я хочу изменить только фон
Ещё костыль:
code (Отобразить)CODE:#define PS_NULL 5
#define BLACK_COLOR 0
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "TransparentBlt", "TransparentBlt", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
int DC, Comp, bitmap;
int brush, brush2, pen;
int b0[2], edit;
createdialog(0);
showdialog(0, "Dialog", 100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
brush=CreateSolidBrush(65280); // цвет фона диалога
pen=CreatePen(PS_NULL, 0, 0);
brush2=CreateSolidBrush(BLACK_COLOR);
DC=GetDC(gethwnd(0));
Comp=CreateCompatibleDC(DC);
bitmap=CreateCompatibleBitmap(DC, 300, 300);
SelectObject(Comp, bitmap);
SelectObject(Comp, pen);
SelectObject(Comp, brush);
Rectangle(Comp, 0, 0, 300, 300);
SelectObject(Comp, brush2);
b0[0]=CreateWindow(0, "BUTTON", "Кнопка1", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0); // создать кнопку
rectangle(10, 10, 80, 25); // вызывать для каждого контрола, передавать координаты контрола
b0[1]=CreateWindow(0, "BUTTON", "Кнопка2", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 50, 100, 30, gethwnd(0), 0, 0, 0);
rectangle(10, 50, 100, 30);
edit=CreateWindow(0, "EDIT", "edit", WS_BORDER | WS_CHILD | WS_VISIBLE, 120, 10, 100, 20, gethwnd(0), 0, 0, 0);
rectangle(120, 10, 100, 20);
}
function rectangle(int posX, int posY, int posX2, int posY2)
{
Rectangle(Comp, posX, posY, posX+posX2, posY+posY2);
}
CREATE_TIMER(0, 100)
{
TransparentBlt(DC, 0, 0, 300, 300, Comp, 0, 0, 300, 300, BLACK_COLOR);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==b0[0])messagebox("Нажата кнопка1");
if(message.lparam==b0[1])messagebox("Нажата кнопка2");
} Спасибо. Не смог сделать фон диалога для своей программы, потому что надо учитывать еще много контролов+еще нарисованный прямоугольник в центре, который двигается при прокрутки ролика мыши, поэтому я решил это использовать для этого:Код (Отобразить)CODE:#define PS_NULL 5
#define BLACK_COLOR 0
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "TransparentBlt", "TransparentBlt", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
int DC, Object_CompatibleDC1, bitmap;
int brush, brush2, pen;
int b0[2], edit;
createdialog(0);
showdialog(0, "Dialog", 100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
brush=CreateSolidBrush(255); // цвет фона диалога
pen=CreatePen(PS_NULL, 0, 0);
brush2=CreateSolidBrush(BLACK_COLOR);
DC=GetDC(gethwnd(0));
Object_CompatibleDC1=CreateCompatibleDC(DC);
bitmap=CreateCompatibleBitmap(DC, 300, 300);
SelectObject(Object_CompatibleDC1, bitmap);
SelectObject(Object_CompatibleDC1, pen);
SelectObject(Object_CompatibleDC1, brush);
Rectangle(Object_CompatibleDC1, 15, 15, 105, 50);
SelectObject(Object_CompatibleDC1, brush2);
b0[0]=CreateWindow(0, "BUTTON", "Стоп", WS_BORDER | WS_CHILD | WS_VISIBLE, 20, 20, 80, 25, gethwnd(0), 0, 0, 0);
rectangle(20, 20, 80, 25);
}
function rectangle(int posX, int posY, int posX2, int posY2)
{
Rectangle(Object_CompatibleDC1, posX, posY, posX+posX2, posY+posY2);
}
CREATE_TIMER(0, 100)
{
TransparentBlt(DC, 0, 0, 300, 300, Object_CompatibleDC1, 0, 0, 300, 300, BLACK_COLOR);
}
(Добавление)
А то, что код выше там ничего лишнего нету? просто зачем функции, где во весь размер диалога 300, 300 растягивать что-то? ведь я то работаю только с кнопкой, котоаря явно не во весь диалог |
|
|
007wan |
Отправлено: 01 Сентября, 2019 - 12:13:43
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: просто зачем функции, где во весь размер диалога 300, 300 растягивать что-то?
Если рамка будет только вокруг одной кнопки, то можно и меньшего размера создать изображение. Не помню где-то был код рамки вокруг контрола через элементы external и через image & for
(Добавление)
Форум плохо ищет! |
|
|
Zireael |
Отправлено: 01 Сентября, 2019 - 12:17:36
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Форум плохо ищет!
Основная проблема что не ищет текст под спойлером.
Цитата: код рамки
https://kibor-bot.com/forum/topi...51539#1558651539 |
|
|
007wan |
Отправлено: 01 Сентября, 2019 - 12:42:19
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
007wan пишет: Zireael пишет: Ещё костыль: Почему?
(Добавление)
Zireael пишет: Цитата: Как сделать иконку на диалог(был вопрос). Только сделать ее круглой, а то он закрашивает ее в квадрат, что не очень. Или сделать прозрачный фон.
Вообще ico с прозрачностью, фон вокруг круга не закрашивайте.
(Добавление)
Цитата: Я хочу изменить только фон
Ещё костыль:
code (Отобразить)CODE:#define PS_NULL 5
#define BLACK_COLOR 0
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "TransparentBlt", "TransparentBlt", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
int DC, Comp, bitmap;
int brush, brush2, pen;
int b0[2], edit;
createdialog(0);
showdialog(0, "Dialog", 100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
brush=CreateSolidBrush(65280); // цвет фона диалога
pen=CreatePen(PS_NULL, 0, 0);
brush2=CreateSolidBrush(BLACK_COLOR);
DC=GetDC(gethwnd(0));
Comp=CreateCompatibleDC(DC);
bitmap=CreateCompatibleBitmap(DC, 300, 300);
SelectObject(Comp, bitmap);
SelectObject(Comp, pen);
SelectObject(Comp, brush);
Rectangle(Comp, 0, 0, 300, 300);
SelectObject(Comp, brush2);
b0[0]=CreateWindow(0, "BUTTON", "Кнопка1", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0); // создать кнопку
rectangle(10, 10, 80, 25); // вызывать для каждого контрола, передавать координаты контрола
b0[1]=CreateWindow(0, "BUTTON", "Кнопка2", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 50, 100, 30, gethwnd(0), 0, 0, 0);
rectangle(10, 50, 100, 30);
edit=CreateWindow(0, "EDIT", "edit", WS_BORDER | WS_CHILD | WS_VISIBLE, 120, 10, 100, 20, gethwnd(0), 0, 0, 0);
rectangle(120, 10, 100, 20);
}
function rectangle(int posX, int posY, int posX2, int posY2)
{
Rectangle(Comp, posX, posY, posX+posX2, posY+posY2);
}
CREATE_TIMER(0, 100)
{
TransparentBlt(DC, 0, 0, 300, 300, Comp, 0, 0, 300, 300, BLACK_COLOR);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==b0[0])messagebox("Нажата кнопка1");
if(message.lparam==b0[1])messagebox("Нажата кнопка2");
} Спасибо. Не смог сделать фон диалога для своей программы, потому что надо учитывать еще много контролов+еще нарисованный прямоугольник в центре, который двигается при прокрутки ролика мыши, поэтому я решил это использовать для этого: Код (Отобразить)CODE:#define PS_NULL 5
#define BLACK_COLOR 0
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "TransparentBlt", "TransparentBlt", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
int DC, Object_CompatibleDC1, bitmap;
int brush, brush2, pen;
int b0[2], edit;
createdialog(0);
showdialog(0, "Dialog", 100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
brush=CreateSolidBrush(255); // цвет фона диалога
pen=CreatePen(PS_NULL, 0, 0);
brush2=CreateSolidBrush(BLACK_COLOR);
DC=GetDC(gethwnd(0));
Object_CompatibleDC1=CreateCompatibleDC(DC);
bitmap=CreateCompatibleBitmap(DC, 300, 300);
SelectObject(Object_CompatibleDC1, bitmap);
SelectObject(Object_CompatibleDC1, pen);
SelectObject(Object_CompatibleDC1, brush);
Rectangle(Object_CompatibleDC1, 15, 15, 105, 50);
SelectObject(Object_CompatibleDC1, brush2);
b0[0]=CreateWindow(0, "BUTTON", "Стоп", WS_BORDER | WS_CHILD | WS_VISIBLE, 20, 20, 80, 25, gethwnd(0), 0, 0, 0);
rectangle(20, 20, 80, 25);
}
function rectangle(int posX, int posY, int posX2, int posY2)
{
Rectangle(Object_CompatibleDC1, posX, posY, posX+posX2, posY+posY2);
}
CREATE_TIMER(0, 100)
{
TransparentBlt(DC, 0, 0, 300, 300, Object_CompatibleDC1, 0, 0, 300, 300, BLACK_COLOR);
}
(Добавление)
А то, что код выше там ничего лишнего нету? просто зачем функции, где во весь размер диалога 300, 300 растягивать что-то? ведь я то работаю только с кнопкой, котоаря явно не во весь диалог Серьезно. У меня эта функция не работает. Кнопку не делает прозрачной и даже красный фон не рисует. Всё скопировал до деталей. |
|
|
007wan |
Отправлено: 01 Сентября, 2019 - 12:53:39
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: У меня эта функция не работает.
Какая эта? Обе были. Я исправил, походу пока верные значения в функцию rectangle не введешь, не нарисует прямоугольник, тперь пашет. спасибо.
(Добавление)
А можно ли в файле очистить секцию [Default] например, но не всю, а только те ключи, которые нужно, а не все ключи и секции.
(Добавление)
Ключ обозначаются: Цитата:
01.09.2019
=
текст1
текст2
текст3
....
|
|
|
|