Zireael |
Отправлено: 25 Апреля, 2019 - 14:11:01
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Получить все ключи секции в 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;
}
} |
|
|
007wan |
Отправлено: 26 Апреля, 2019 - 13:41:55
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Можно, пожалуйста код, где 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 пишет: у меня не переводит строчку при Ентер. |
|
|
Zireael |
Отправлено: 26 Апреля, 2019 - 13:54:40
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: код, где 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 символов
} |
|
|
007wan |
Отправлено: 26 Апреля, 2019 - 14:34:25
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Спасибо, но теперь из файла не читает все строчки, а только первую.
Вот что в файле:
Сохранил текст первый раз в файл (Отобразить) Цитата: [Default]
Object_Combobox1=1
Object_Checkbox1=1
Object_Checkbox2=1
Object_Checkbox3=1
Object_Checkbox4=1
Object_Checkbox5=1
Object_Checkbox6=1
Object_Checkbox7=1
Object_Checkbox8=1
Object_Edit1=12//первая строчка она читаема для функции
345//вторая строчка
Сохранил второй раз (Отобразить) Цитата: [Default]
Object_Combobox1=1
Object_Checkbox1=1
Object_Checkbox2=1
Object_Checkbox3=1
Object_Checkbox4=1
Object_Checkbox5=1
Object_Checkbox6=1
Object_Checkbox7=1
Object_Checkbox8=1
Object_Edit1=первая строчка//новый текст она читаема для функции
вторая//новый текст
третья//новый текст
червертая//новый текст
пятая//новый текст
шестая//новый текст
седьмая//новый текст
...//новый текст
345//старый кусок текст от первого сохранения
(Отредактировано автором: 26 Апреля, 2019 - 14:35:42) |
|
|
007wan |
Отправлено: 26 Апреля, 2019 - 14:58:25
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
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 и я хочу, что бы все такие оставались : ) |
|
|
Zireael |
Отправлено: 26 Апреля, 2019 - 15:15:14
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как мне переделать из sendmessage в SendMessage
Цитата: sendmessage(CB_ADDSTRING, 0, address(#Bute_Combobox1[0]), formatiw(Object_Combobox1));
CODE:SendMessage(Object_Combobox1, CB_ADDSTRING, 0, address(#Bute_Combobox1[0])); |
|
|
|