Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » вопрос по external и др

Страниц (22): В начало « ... 14 15 16 17 18 19 20 [21] 22 »
 

201. Zireael - 25 Апреля, 2019 - 06:11:01 - перейти к сообщению
Получить все ключи секции в ini, исправил, не все ключи находило.
CODE:
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");

int length;
char key_ini[99999], value[999];
string path="C:\123.ini"; // путь к ini
string date="19.04.2019"; // секция

int x=GetPrivateProfileString (date, 0, 0, address (#key_ini[0]), sizearray(key_ini), path); // получить все ключи
if(x)
{
length=0;
for(int i=0; length<=x; i++)
{
if(GetPrivateProfileString (date, format(#key_ini[length]), 0, address (#value[0]), sizearray(value), path)) // получить значение ключа
{
messagebox(format(#key_ini[length])+" "+format(#value[0]));
}
length=length+size(#key_ini[length])+1;
}
}
202. 007wan - 25 Апреля, 2019 - 07:16:31 - перейти к сообщению
Zireael , О, спасибо.
203. 007wan - 26 Апреля, 2019 - 05:41:55 - перейти к сообщению
Можно, пожалуйста код, где Edit размером 200х100, для которого ограничен ввод символов на 70. Но еще дополнительно имеет скроллер вертикальный и горизонтальный, а то у меня не переводит строчку при Ентер.
CODE:
Object_Edit1 = CreateWindow(0, "EDIT", "", WS_HSCROLL | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 295, 215, 200, 100, gethwnd(1), 0, 0, 0);

(Добавление)
Проблема вот:
 007wan пишет:
у меня не переводит строчку при Ентер.
204. Zireael - 26 Апреля, 2019 - 05:54:40 - перейти к сообщению
 Цитата:
код, где Edit размером 200х100, для которого ограничен ввод символов на 70.

CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_HSCROLL 1048576
#define WS_VSCROLL 2097152
#define ES_AUTOHSCROLL 128
#define ES_AUTOVSCROLL 64
#define ES_MULTILINE 4
#define ES_WANTRETURN 4096
#define EM_SETLIMITTEXT 197
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );

int Object_Edit1;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);

loop()sleep(1);

function getmessage(0, WM_CREATE)
{
Object_Edit1 = CreateWindow(0, "EDIT", "", ES_WANTRETURN | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 10, 10, 200, 100, gethwnd(0), 0, 0, 0);
sendmessage(EM_SETLIMITTEXT, 10, 0, formatiw(Object_Edit1)); // ограничение в 10 символов
}
205. 007wan - 26 Апреля, 2019 - 06:34:25 - перейти к сообщению
Zireael , Спасибо, но теперь из файла не читает все строчки, а только первую.
Вот что в файле:
Сохранил текст первый раз в файл (Отобразить)

Сохранил второй раз (Отобразить)
206. Zireael - 26 Апреля, 2019 - 06:44:10 - перейти к сообщению
В ini нельзя сохранить многострочный текст.
207. 007wan - 26 Апреля, 2019 - 06:46:42 - перейти к сообщению
Zireael , Насчет побитовых функций. я думаю можно при значении галочек 8 или 9 через for заменить на 1 или 0, либо убрать фокус со всех галочек, когда нажата любая галочка, а потом уже сохранить в файл.
(Добавление)
Но пока не нашел как убрать фокус.
208. Zireael - 26 Апреля, 2019 - 06:54:31 - перейти к сообщению
Зачем что-то заменять, 0 - галка не выбрана, всё остальное выбрана.
209. 007wan - 26 Апреля, 2019 - 06:58:25 - перейти к сообщению
Zireael , Я когда сохраняю в файл значения, то все значения галочек равны либо 1, либо 0, кроме последней нажатой - окна либо 8, либо 9. А при запуске программы все галочки загружаются как надо, кроме одной, которая была выбрана последней. ОН ставит либо 8, либо 9 значение, но SendMEssage посылает значение этой галочки, например, 8, т.е "выключена", но он всёравно ставит ее "чекнутой"
(Добавление)
А как мне переделать из sendmessage в SendMessage такие строчки
CODE:

sendmessage(CB_ADDSTRING, 0, address(#Bute_Combobox1[0]), formatiw(Object_Combobox1));
sendmessage(EM_LIMITTEXT, 70, 0, formatiw(Object_Edit1));
Status_Combobox1 = sendmessage(CB_GETCURSEL, 0, 0, formatiw(Object_Combobox1));
sendmessage(LB_SETHORIZONTALEXTENT, Size[0], 0, formatiw(Object_Listbox1));
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(Object_Listbox1));
count = sendmessage(LB_GETCOUNT, 0, 0, formatiw(Object_Listbox1));
sendmessage(LB_SETTOPINDEX, count-1, 0, formatiw(Object_Listbox1));

Для вас это покажется смешным, но у меня почти все сообщения SendMessage и я хочу, что бы все такие оставались : )
210. Zireael - 26 Апреля, 2019 - 07:15:14 - перейти к сообщению
 Цитата:
как мне переделать из sendmessage в SendMessage

 Цитата:
sendmessage(CB_ADDSTRING, 0, address(#Bute_Combobox1[0]), formatiw(Object_Combobox1));

CODE:
SendMessage(Object_Combobox1, CB_ADDSTRING, 0, address(#Bute_Combobox1[0]));

Powered by ExBB FM 1.0 Final