Nikanr |
Отправлено: 20 Октября, 2019 - 19:22:35
|
Специалист
Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019
Репутация: 5
|
Можно константу на заранее включенный RadioBox? Не получается его создать сразу включенным
(Добавление)
Пример кода Zirael давал:
CODE:external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
while(window ("Диалог")==0)sleep(10);
win w=window ("Диалог");
int b0=CreateWindow(0, "BUTTON", "Check0", 9+1342177280, 20, 10, 70, 20, formatwi(w), 0, 0, 0);
int b1=CreateWindow(0, "BUTTON", "Check1", 9+1342177280, 20, 30, 70, 20, formatwi(w), 0, 0, 0);
int b2=CreateWindow(0, "BUTTON", "Check2", 9+1342177280, 20, 50, 70, 20, formatwi(w), 0, 0, 0);
textbkcolor(255, 65280);
loop()sleep(1);
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b0)textout(0, 200, 150, "0", 1);
if (message.lparam==b1)textout(0, 200, 150, "1", 1);
if (message.lparam==b2)textout(0, 200, 150, "2", 1);
}
(Отредактировано автором: 20 Октября, 2019 - 19:36:57) |
|
|
Zireael |
Отправлено: 20 Октября, 2019 - 19:30:39
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: заранее включенный RadioBox
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define BS_AUTORADIOBUTTON 9
#define BM_SETCHECK 241
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int b0, b1, b2;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
textbkcolor(255, 65280);
loop()sleep(10);
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b0)textout(0, 200, 150, "0", 1);
if (message.lparam==b1)textout(0, 200, 150, "1", 1);
if (message.lparam==b2)textout(0, 200, 150, "2", 1);
}
function getmessage(0, WM_CREATE)
{
b0=CreateWindow(0, "BUTTON", "Check0", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 20, 10, 70, 20, gethwnd(0), 0, 0, 0);
b1=CreateWindow(0, "BUTTON", "Check1", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 20, 30, 70, 20, gethwnd(0), 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Check2", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 20, 50, 70, 20, gethwnd(0), 0, 0, 0);
sendmessage(BM_SETCHECK, 1, 0, formatiw(b1));
} |
|
|
007wan |
Отправлено: 26 Октября, 2019 - 19:11:07
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Уважаемый, прошу вас, очень, нужно у ListBox'а задать любые строчки, в любом порядке, но не все, а отдельные цвет строчек и текста,очень нужно, умоляю.
Пример, первая строчка будет обычная, а вторая с серым фоном и красным текстом, другие - ниже - зеленые и феолетовые.
(Добавление)
Только не DLL, а просто функционально. |
|
|
007wan |
Отправлено: 27 Октября, 2019 - 08:52:36
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Подскажите, создается ли в Киборе Toolbar? Если да, то можно пример, пожалуйста.
(Добавление)
Скажите, пожалуйста. Вот если создать кнопку со стилем BS_AUTOCHECKBOX.
При нажатии на эту кнопку меняется статус (ставится галочка или убирается), как предотвратить это сообщение? Т.е что бы при нажатии на галочку она не ставилась и не убиралась когда нужно, но зато выполнялся код WM_COMMAND message.lparam (Нажали на кнопку). Тоесть, мне нужно, что бы при нажатии на галочку, она не меняла свои свойства, это значит, что она не будет галочка ставится или убираться, когда она поставлена, но сообьщение при нажатии на галочку открывался диалог.
Например, нажали галочку, она не ставится и не убирается если стоит, но мы же нажали на ёё, значит открывается диалог, в котором кнопка, жмём на эту кнопку и диалог закрывается и галочка ставится.
(Добавление)
Иными словам: При нажатии на галочку, что бы она (галочка) не ставилась, а если стоит, то не убирается, но зато открывается диалог с кнопкой, жмём кнопку и диалог закрывается и галочка ставится с помощью SendMessage |
|
|
Zireael |
Отправлено: 27 Октября, 2019 - 11:11:26
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: что бы при нажатии на галочку она не ставилась и не убиралась
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define BS_3STATE 5
#define BM_SETCHECK 241
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int check1;
createdialog(0);
showdialog(0, "Диалог",300, 300, 300, 200, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
check1=CreateWindow(0, "BUTTON", "Галка", BS_3STATE | WS_CHILD | WS_VISIBLE, 20, 10, 70, 20, gethwnd(0), 0, 0, 0);
//sendmessage(BM_SETCHECK, 1, 0, formatiw(check1)); // выбрать галку
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==check1)
{
messagebox("Нажата галка");
return;
}
} |
|
|
007wan |
Отправлено: 27 Октября, 2019 - 11:37:03
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: что бы при нажатии на галочку она не ставилась и не убиралась
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define BS_3STATE 5
#define BM_SETCHECK 241
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int check1;
createdialog(0);
showdialog(0, "Диалог",300, 300, 300, 200, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
check1=CreateWindow(0, "BUTTON", "Галка", BS_3STATE | WS_CHILD | WS_VISIBLE, 20, 10, 70, 20, gethwnd(0), 0, 0, 0);
//sendmessage(BM_SETCHECK, 1, 0, formatiw(check1)); // выбрать галку
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==check1)
{
messagebox("Нажата галка");
return;
}
} О, спасибо!
(Добавление)
Zireael , Еще такой вопрос: У меня галочки создаются через For все галочки имеют стили BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, но мне нужно последней сделать не BS_AUTOCHECKBOX, а BS_3STATE, как это сделать?
Были решения такие как:
1)Создавать не через for(Больше строчек кода).
2)Указать стиль через SetWindowLong(Не подходит, т.к нужно указать изначально все стили BS_3STATE для всех галочек).
Есть более умные решения?
Код (Отобразить)CODE: for (int a=0; a<sizearray(Object_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox1[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 20, 40+step1, 300-step1, 20, gethwnd(1), 0, 0, 0);
SendMessage(Object_Checkbox[a], WM_SETFONT, Object_Font1, 1);
step1 = step1+20;
} |
|
|
Zireael |
Отправлено: 27 Октября, 2019 - 11:43:50
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: нужно последней сделать не BS_AUTOCHECKBOX, а BS_3STATE, как это сделать
Цитата: sizearray(Object_Checkbox)
CODE:sizearray(Object_Checkbox)-1
И последнюю галку создать после цикла. |
|
|
|