Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (14): В начало « 5 6 7 8 [9] 10 11 12 13 » В конец    

> Описание: Продолжение
Nikanr
Отправлено: 18 Ноября, 2019 - 17:08:10
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019  
Репутация: 5




Можно как-нибудь выводить AppendMenu по центру, если хватает длины диалога, но не хватает пунктов меню?) На уме только пробелы в имени
 
 Top
Nikanr
Отправлено: 18 Ноября, 2019 - 20:09:11
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019  
Репутация: 5




И можно ссылку на то, как скрыть значок программы из панели задач?
(Добавление)
Сорь что захламляю тему, не подумав пишу) Нашел как решать обе проблемы
 
 Top
Zireael
Отправлено: 19 Ноября, 2019 - 01:11:23
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
как мне переменовать ТЕКУЩУЮ вкладку

1. Из обработчика WM_NOTYFI убери лишний код. Похоже что не успевает все события обработать.
CODE:
function getmessage(0, WM_NOTIFY)
{
Selected_Tab = sendmessage(TCM_GETCURSEL, 0, 0, formatiw(Object_Tab1));
}

2. В WM_COMMAND добавь ретурны. Нет смысла лишние проверять.
CODE:
function getmessage(0, WM_COMMAND)
{
if (message.lparam == Object_Button1)
{
// тут код
return;
}
if (message.lparam == Object_Button2)
{
// тут код
return;
}
// остальное аналогично
}

3. Убрать точки с запятыми после фигурных скобок.
4. С первого раза непонятно видимо, повторю:
 Цитата:
size(#text_tab_c[0])
Исправить на sizearray(text_tab_c)

5. Зачем ставить флаг TCIF_IMAGE, если иконки не используются?

Теперь, по поводу вопроса. Вот структура:
 Цитата:
int TCITEMA[7] = {TCIF_TEXT, 0, 0, address(#Buffer1[0]), sizearray(Buffer1), 0, 0}

В ней записан адрес массива Buffer1, а текст для вкладки копируется в Buffer2.
 Цитата:
strcpy(#Buffer2[0], format(#Text_Tab[0]));

Так может стоит копировать текст туда, откуда он будет браться, а не куда попало.
А вообще проще сразу получить текст из списка в Buffer1 и ничего, никуда копировать не придётся.

Кнопку 'Выбрать' можно убрать. Если в списке была выбрана строка, то сразу выполнить нужные действия.
 
 Top
007wan
Отправлено: 19 Ноября, 2019 - 09:02:39
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
Из обработчика WM_NOTYFI убери лишний код. Похоже что не успевает все события обработать.

Это лишний код?
CODE:
function getmessage(0, WM_NOTIFY)
{
if(addressi(message.lparam) == Object_Tab1)
{
if(addressi(message.lparam+8) == NM_CLICK || addressi(message.lparam+8) == TCN_SELCHANGE)
{
Selected_Tab = sendmessage(TCM_GETCURSEL, 0, 0, formatiw(Object_Tab1));
sendmessage(TCM_GETITEMA, 1, address(#TCITEMA[0]), formatiw(Object_Tab1));//это
//если получили текст текущей вкладки при переключении вкладок, показывать нужные контроллы ShowWindow SW_SHOW & SW_HIDE
return;
}
}
}

тут всего одна строчка дополнительная и всё и скоро еще прибавится код.
 Zireael пишет:
Зачем ставить флаг TCIF_IMAGE, если иконки не используются?
Иконки пока не нарисовал и не придумал. В будущем ширина вкладки будет учитываться и иконка(или нет, если он уже дает ширину с иконками).
 Zireael пишет:
Кнопку 'Выбрать' можно убрать. Если в списке была выбрана строка, то сразу выполнить нужные действия.
А можно по двойному щелчку по строчке?

PS:Остальное вроде как поменял. Можно взглянуть (Есть ошибки при запуске, изменил как всё было написано). Яндекс.Жиск.

Напомню суть скрипта: WM_NOTYFY (при переключении вкладки) определяет текст ТЕКУЩЕЙ вкладки, а потом исходя из текста показывает или скрывает нужные контроллы.
(Добавление)
 Zireael пишет:

Теперь, по поводу вопроса. Вот структура:
Ты же сам говорил, что в буфер записывается последний текст СОЗДАННОЙ вкладки, т.е создали первую вкладку записался ей текст, потом вторую вкладку и он заменился текст. А Как узнать текст текущей вкладки я так и не понял.
(Добавление)
Я конечно единственное что я понял так это, что текст вкладок содержится в структуре TCITEMA, а как получить не ясно.
 
 Top
Zireael
Отправлено: 19 Ноября, 2019 - 10:31:18
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Есть ошибки при запуске

И даже пишет где ошибка, в sizearray.
 Цитата:
А Как узнать текст текущей вкладки

 Цитата:
int TCITEMA[7] = {TCIF_TEXT, 0, 0, address(#Buffer1[0]), sizearray(Buffer1), 0, 0}
sendmessage(TCM_GETITEMA, 1, address(#TCITEMA[0]), formatiw(tab)); // текст второй вкладки
// текст второй вкладки будет в массиве Buffer1

Что тут непонятного? Без разницы что было в массиве до этого, хоть вообще пустой, отправили TCM_GETITEMA, указав номер вкладки, текст запишется в массив. Если TCM_SETITEMA, то установит текст вкладки, который записан в массиве.
 Цитата:
что текст вкладок содержится в структуре TCITEMA

Нет его там.
 
 Top
007wan
Отправлено: 19 Ноября, 2019 - 11:02:51
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Zireael , Последние вопросы и они вам не понравятся)
Есть код)
CODE:
Selected_Tab = sendmessage(TCM_GETCURSEL, 0, 0, formatiw(Object_Tab1));
sendmessage(TCM_SETCURSEL, Selected_Tab+1, 0, formatiw(Object_Tab1));

Вопросы: почему TCM_SETCURSEL не отправляет сообщение WM_NOTIFY, мы же назначили(выбрали вкладку), что не так?
Как вызвать WM_NOTIFY принудительно?

Логика такая: вызываем TCM_SETCURSEL, значит нужно узнать текст вкладки, а если текст такой-то, то показать нужные контроллы И что бы мне не писать лишний код, можно просто вызвать WM_NOTIFY(по идеи я думал он сам будет вызываться, а оказалось нет)
 
 Top
Zireael
Отправлено: 19 Ноября, 2019 - 11:20:32
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




Что мешает вызвать функцию, которая выполнит нужный код.
CODE:
sendmessage(TCM_SETCURSEL, Selected_Tab+1, 0, formatiw(Object_Tab1));
func(); // вызвать нужную функцию
 
 Top
007wan
Отправлено: 19 Ноября, 2019 - 11:27:34
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
Что мешает вызвать функцию, которая выполнит нужный код.
CODE:
sendmessage(TCM_SETCURSEL, Selected_Tab+1, 0, formatiw(Object_Tab1));
func(); // вызвать нужную функцию
Ой,)
(Добавление)
Zireael , Вот как я примерно хотел, но работает коряво, очень)

При переключении вкладок должен получать норме вкладки и текст, а т.к он не срабатывает или не успевает, то контроллы не убираются и нужные не показываются.
Яндекс.Диск
Так что я не знаю что теперь делать, похожу всё время на которое я потратил Табам в бездну-_-
(Добавление)
Не забудь убрать messagebox WM_NOTIFY
 
 Top
Zireael
Отправлено: 19 Ноября, 2019 - 12:52:04
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
а т.к он не срабатывает или не успевает

Так сложно удалить несколько строчек кода?
 Цитата:
function getmessage(0, WM_NOTIFY)
{
if(addressi(message.lparam) == Object_Tab1)
{
if(addressi(message.lparam+8) == NM_CLICK || addressi(message.lparam+8) == TCN_SELCHANGE)
{
Selected_Tab = sendmessage(TCM_GETCURSEL, 0, 0, formatiw(Object_Tab1));
Show_Controls(0, 1);
messagebox(1);
return;
}
}
}

CODE:
function getmessage(0, WM_NOTIFY)
{
Selected_Tab = sendmessage(TCM_GETCURSEL, 0, 0, formatiw(Object_Tab1));
Show_Controls(0, 1);
}
 
 Top
007wan
Отправлено: 19 Ноября, 2019 - 12:57:58
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
Так сложно удалить несколько строчек кода?
Я думал не эти) Но какая разница в данном случаи? Всёравно при переключении не вызывается эта функция так что -_-
(Добавление)
Может я какой-то событие не учёл? Хотя вроде всё...
 
 Top
Страниц (14): В начало « 5 6 7 8 [9] 10 11 12 13 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by