neba2101 |
Отправлено: 24 Ноября, 2021 - 20:01:40
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
В редакторе DialogEditor сделал кнопку и поле edit.
Как кодом заменить текст в поле edit?
Так текст заменится только после перезапуска диалога (если диалог с сохранением настроек).
CODE:
loop()
{
if(flag_button0[0]>0) // если нажата кнопка
{
text_edit0[0]="Заменить на этот";
flag_button0[0] = 0; // обнулить флаг нажатия кнопки
}
sleep(10);
}
Разобрался
CODE:SetWindowText(edit0[0], "Заменить на этот"); (Отредактировано автором: 24 Ноября, 2021 - 20:12:27) |
|
|
Zireael |
Отправлено: 09 Декабря, 2021 - 10:58:45
|
Эксперт
Покинул форум
Сообщений всего: 4462
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: В поле edit вставляется или печатается текст только по размеру самого edit-а. Текст который не влез просто удаляется
Нужно добавить ES_AUTOHSCROLL.
Цитата: #define ES_AUTOHSCROLL 0x0080
edit0[0] = CreateWindow(0, "EDIT", text_edit0[0], WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, 40, 24, 80, 20, gethwnd(0), 0, 0, 0); |
|
|
Zireael |
Отправлено: 10 Декабря, 2021 - 12:21:08
|
Эксперт
Покинул форум
Сообщений всего: 4462
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Добавить/удалить строку в ListBox (Отобразить)CODE:#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define LB_ADDSTRING 0x0180
#define LB_INSERTSTRING 0x0181
#define LB_DELETESTRING 0x0182
#define LB_GETCURSEL 0x0188
#define LB_SETCURSEL 0x0186
#define LB_GETCOUNT 0x018B
#define LBS_NOTIFY 0x0001
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
int button0[2];
int edit0;
int listbox0;
int flag_listbox0 = 0;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()
{
sleep(10);
}
function getmessage(0, WM_CREATE)
{
edit0 = CreateWindow(0, "EDIT", "Текст", WS_BORDER | WS_VISIBLE | WS_CHILD, 150, 10, 130, 20, gethwnd(0), 0, 0, 0);
button0[0] = CreateWindow(0, "BUTTON", "Добавить пункт", WS_VISIBLE | WS_CHILD, 150, 40, 130, 24, gethwnd(0), 0, 0, 0);
button0[1] = CreateWindow(0, "BUTTON", "Удалить пункт", WS_VISIBLE | WS_CHILD, 150, 70, 130, 24, gethwnd(0), 0, 0, 0);
char c_listbox[999];
listbox0=CreateWindow(0, "LISTBOX", "", WS_BORDER | WS_CHILD | WS_VISIBLE | LBS_NOTIFY, 10, 10, 130, 250, gethwnd(0), 0, 0, 0);
strcpy(#c_listbox[0], "Пункт1");
sendmessage(LB_ADDSTRING, 0, address(#c_listbox[0]), formatiw(listbox0));
strcpy(#c_listbox[0], "Пункт2");
sendmessage(LB_ADDSTRING, 0, address(#c_listbox[0]), formatiw(listbox0));
strcpy(#c_listbox[0], "Пункт3");
sendmessage(LB_ADDSTRING, 0, address(#c_listbox[0]), formatiw(listbox0));
sendmessage(LB_SETCURSEL, flag_listbox0, 0, formatiw(listbox0));
}
function getmessage(0, WM_COMMAND)
{
int count_string;
char text_edit[999];
if(message.lparam == listbox0)
{
flag_listbox0 = sendmessage(LB_GETCURSEL, 0, 0, formatiw(listbox0));
return;
}
if(message.lparam == button0[0])
{
if(GetWindowText(edit0, address(#text_edit[0]), 999))
{
sendmessage(LB_ADDSTRING, 0, address(#text_edit[0]), formatiw(listbox0));
}
return;
}
if(message.lparam == button0[1])
{
sendmessage(LB_DELETESTRING, flag_listbox0, 0, formatiw(listbox0));
count_string=sendmessage(LB_GETCOUNT, 0, 0, formatiw(listbox0));
if(count_string<=flag_listbox0)flag_listbox0 = count_string-1;
sendmessage(LB_SETCURSEL, flag_listbox0, 0, formatiw(listbox0));
return;
}
} |
|
|
neba2101 |
Отправлено: 18 Января, 2022 - 20:33:37
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Zireael пишет: Цитата: В поле edit вставляется или печатается текст только по размеру самого edit-а. Текст который не влез просто удаляется
Нужно добавить ES_AUTOHSCROLL.
Цитата: #define ES_AUTOHSCROLL 0x0080
edit0[0] = CreateWindow(0, "EDIT", text_edit0[0], WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, 40, 24, 80, 20, gethwnd(0), 0, 0, 0);
Было бы отлично, если бы вы это добавили это в DialogEditor |
|
|
|