007wan |
Отправлено: 27 Мая, 2019 - 11:17:26
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Я замучился искать константы в браузере. Не могу найти уже.
Ссылка из первой темы external на 6 странице. Не нашел. В поиске "#define ES_NUMBER 0" не помогло.
(Добавление)
И где найти стили Edit? я нашел стили только "функциональные" вот А мне надо стили "красоты" для контрола. Именно изменить рамку эдита
(Добавление)
Что бы рамка была "впуклая"
(Добавление)
Утопленной рамкой эдит.
(Добавление)
А вообще можно ли для эдита прикрепить стрелочки вверх и вниз треугольные, я видел такой контрол где-то
(Добавление)
А можно ли и как-то модифицировать это? А то показывает не точно. Сравнивал с гаджетом винды.Узнать ЦП (Отобразить)CODE:external(INT, "GetSystemTimes", "GetSystemTimes", "Kernel32.dll");
int idle[2], idle2[2];
int kernel[2], kernel2[2];
int user[2], user2[2];
loop()
{
GetSystemTimes(address(#idle2[0]), address(#kernel2[0]), address(#user2[0]));
sleep(1400); // подобрать значение
GetSystemTimes(address(#idle[0]), address(#kernel[0]), address(#user[0]));
int sys = (user[0] - user2[0]) + (kernel[0] - kernel2[0]);
int cpu = (sys - idle[0] + idle2[0]) * 100 / sys;
if(cpu<=100)textout(0, 300, 300, "Загрузка цп "+format(cpu)+"%", 2);
} |
|
|
007wan |
Отправлено: 27 Мая, 2019 - 14:12:45
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Код (Отобразить)CODE:#define CB_ADDSTRING 323
#define CB_DELETESTRING 324
#define CB_FINDSTRING 332
#define CB_GETCURSEL 327
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "GetFocus", "GetFocus", "User32.dll" );
int i, button1, button2, combo1, combo2, row;
string combo1_text[4]={"qwe", "rty", "asd", "123"}; // список строк для комбо1
string combo2_text[6]={"Строка1", "Строка2", "string1", "string2", "987", "654"}; // список строк для комбо2
char c[255];
//////////
createdialog(0);
showdialog(0, "Диалог", 258, 234, 250, 300, 1, 1);
//////////
loop() sleep(10);//Убрать после теста
function getmessage(0, WM_CREATE)
{
button1=CreateWindow(0, "BUTTON", "Добавить в список", 8192+1342177280, 130, 10, 100, 40, gethwnd(0), 0, 0, 0);
button2=CreateWindow(0, "BUTTON", "Удалить из списка", 8192+1342177280, 130, 60, 100, 40, gethwnd(0), 0, 0, 0);
combo1=CreateWindow(0, "COMBOBOX", "", 64+2097152+1342177280, 10, 10, 110, 120, gethwnd(0), 0, 0, 0);
// добавление строк в combo1 из массива combo1_text
for(i=0; i<sizearray(combo1_text); i++)
{
strcpy(#c[0], combo1_text[i]);
sendmessage(CB_ADDSTRING, 0, address(#c[0]), formatiw(combo1));
}
combo2=CreateWindow(0, "COMBOBOX", "", 3+64+2097152+1342177280, 10, 150, 110, 120, gethwnd(0), 0, 0, 0);
// добавление строк в combo2 из массива combo2_text
for(i=0; i<sizearray(combo2_text); i++)
{
strcpy(#c[0], combo2_text[i]);
sendmessage(CB_ADDSTRING, 0, address(#c[0]), formatiw(combo2));
}
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==button1) // если нажата 'Добавить в список'
{
GetWindowText(combo1, address(#c[0]), sizearray(c)); // получаем введённый текст
if(sendmessage(CB_FINDSTRING, 1, address(#c[0]), formatiw(combo1))==-1) // ищем есть ли он в списке
{
SetWindowText(combo1, ""); // удаляем текст из поля
sendmessage(CB_ADDSTRING, 1, address(#c[0]), formatiw(combo1)); // добавляем строку в список
}
else
{
if(messageboxyn("Такая строка уже есть в списке"+formatic(13)+formatic(10)+"Всё равно добавить строку?")!=-1)
{
SetWindowText(combo1, "");
sendmessage(CB_ADDSTRING, 1, address(#c[0]), formatiw(combo1));
}
}
}
if (message.lparam==button2) // если нажата 'Удалить из списка'
{
// получить номер выбранной строки и удалить строку
sendmessage(CB_DELETESTRING, sendmessage(CB_GETCURSEL, 1, 0, formatiw(combo1)), 0, formatiw(combo1));
}
if (message.lparam==combo2) // если выбрана строка combo2
{
row=sendmessage(CB_GETCURSEL, 1, 0, formatiw(combo2)); // узнаём номер выбранной строки
if(row>-1)
{
textbkcolor(255, 65280);
textout(0, 380, 480, "Выбранная строка: "+combo2_text[row], 2);
}
}
} Как отдельный эдит сделать из этого примера с утопленной рамкой? где combo1 |
|
|
Zireael |
Отправлено: 27 Мая, 2019 - 14:28:42
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Утопленной рамкой эдит.
CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define WS_EX_CLIENTEDGE 512
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int edit;
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 300, 1, 1);
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
edit=CreateWindow(WS_EX_CLIENTEDGE, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 25, gethwnd(0), 0, 0, 0);
} |
|
|
Zireael |
Отправлено: 28 Мая, 2019 - 11:38:32
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать, что бы при редактировании если число больше 100, то либо 4 символ не введется, либо число в эдите изменится на 100.
code (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define ES_NUMBER 8192
#define EM_SETSEL 177
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
int edit1;
char buf[99];
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 300, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_NUMBER, 10, 10, 100, 20, gethwnd(0), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==edit1) // если edit редактируется
{
if(GetWindowText(edit1, address(#buf[0]), sizearray(buf))) // получаем текст edit'а'
{
textout(0, 300, 300, format(#buf[0]), 1);
if(formatsn(format(#buf[0]))>100) // если больше 100
{
SetWindowText(edit1, "100"); // меняем текст на 100
sendmessage(EM_SETSEL, size(format(#buf[0])), size(format(#buf[0])), formatiw(edit1)); // ставим курсор в конец текста
}
}
}
} |
|
|
Kibor |
Отправлено: 28 Мая, 2019 - 11:56:49
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan пишет: Но текст нужно, что бы редактировался до появления в эдите
CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define ES_NUMBER 8192
#define EM_SETSEL 177
#define EM_LIMITTEXT 197
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "SendMessage", "SendMessageA", "User32.dll" );
int edit1;
char buf[99];
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 300, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_NUMBER, 10, 10, 100, 20, gethwnd(0), 0, 0, 0);
SendMessage(edit1, EM_LIMITTEXT, 3, 0);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==edit1) // если edit редактируется
{
if(GetWindowText(edit1, address(#buf[0]), sizearray(buf))) // получаем текст edit'а'
{
textout(0, 300, 300, format(#buf[0]), 1);
if(formatsn(format(#buf[0]))>100) // если больше 100
{
SetWindowText(edit1, "100"); // меняем текст на 100
sendmessage(EM_SETSEL, size(format(#buf[0])), size(format(#buf[0])), formatiw(edit1)); // ставим курсор в конец текста
}
}
}
} |
|
|
007wan |
Отправлено: 28 Мая, 2019 - 12:07:54
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor , Спасибо. Нашел функцию GetFocus и Set-
Как убрать фокус со всего? Тоесть значение 0 должно стоять по сути, но там пишут, что значения в виде null не принимаются. Я хочу убрать фокус со всего, но боюсь этого невозможно.
(Добавление)
В принципе это не обязательно, но вместоКод1 (Отобразить)CODE: for (int b=0; b<sizearray(Object_Checkbox); b++)
{
Status_Checkbox[b] = SendMessage(Object_Checkbox[b], BM_GETSTATE, 0, 0);
if (Status_Checkbox[b] == 8)
{
Status_Checkbox[b] = 0;
}
if (Status_Checkbox[b] == 9)
{
Status_Checkbox[b] = 1;
}
WritePrivateProfileString ("Default", "Object_Checkbox"+format(b), format(Status_Checkbox[b]), PathSaveSettings);
} Можно было быКод2 (Отобразить)CODE: for (int b=0; b<sizearray(Object_Checkbox); b++)
{
Status_Checkbox[b] = SendMessage(Object_Checkbox[b], BM_GETSTATE, 0, 0);
SetFocus(0);
WritePrivateProfileString ("Default", "Object_Checkbox"+format(b), format(Status_Checkbox[b]), PathSaveSettings);
} |
|
|
|