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

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

101. 007wan - 01 Апреля, 2019 - 09:13:20 - перейти к сообщению
Я не могу понять что куда в этих переменных HMENU, HMENU2, HMENU3, result;
В своем коде уже присутствуют такие, но я хочу добавить меню вызывающееся при клике правой кнопки. Пожалуйста. Можете дать код, где уже есть:
1)Вкладка "Меню", а при наведении на нее вверху, показывается "Настройки".
2)При клике правой кнопки, показывает окно, где содержит 2 вкладки:
- Размер окна(+еще 2 параметра: Минимальный и Максимальный)
- Прозрачность(25,50,75,100)
Я уже находил эти примеры, но проблема в другом, я запутался и не могу совместить свой код, где есть вкладка настройки с переменными, где нужно вставить код "клик по правой кнопки мыши). Поэтому прошу вас сделать вместе код, где есть уже это и то вместе, что бы мне разобраться.
(Добавление)
Просто в моем коде еще и переменные переименованы и мне сложно соединить 2 куска
102. Zireael - 01 Апреля, 2019 - 19:05:10 - перейти к сообщению
code (Отобразить)
103. 007wan - 02 Апреля, 2019 - 07:12:33 - перейти к сообщению
Zireael , Спасибо, Просто ЛУЧШИЙ!
(Добавление)
Zireael , Не работает меню, которое вызывается при нажатии на правую кнопку мыши. Я сделал вот что:
CODE:
function getmessage(0, WM_COMMAND)
CODE:
function getmessage(0, WM_RBUTTONDOWN)
CODE:
function getmessage(0, WM_CREATE)

сделал коментами через "/*" до "*/" в результате вставил вместо них, то, что выше и запустил. Работает только настройки.
(Добавление)
Переменные так же все скопировал.
(Добавление)
В результате все блоки мои сейчас выглядят так:
CODE:
function getmessage(0, WM_RBUTTONDOWN)
{
MainWindow = window ("диалог");

result_menu=TrackPopupMenu(HMENU1, TPM_RETURNCMD, message.x+MainWindow.leftclient, message.y+MainWindow.topclient, 0, formatwi(MainWindow), 0);
if(result_menu == 111)
{
messagebox("Выбран пункт Размер окна, Минимальный" );
return;
}

if(result_menu == 222)
{
messagebox("Выбран пункт Размер окна, Максимальный" );
return;
}

if(result_menu == 333)
{
messagebox("Выбран пункт Прозрачность, 25" );
return;
}

if(result_menu == 444)
{
messagebox("Выбран пункт Прозрачность, 50" );
return;
}

if(result_menu == 555)
{
messagebox("Выбран пункт Прозрачность, 75" );
return;
}

if(result_menu == 666)
{
messagebox("Выбран пункт Прозрачность, 100" );
return;
}

}

(Добавление)
CODE:
function getmessage(0, WM_CREATE)
{
HMENU = CreateMenu();
AppendMenu(HMENU, MF_POPUP, 999, "Настройки" );
SetMenuInfo(HMENU, address(#MENUINFO[0]));
SetMenu(gethwnd(0), HMENU);

HMENU1 = CreatePopupMenu();
HMENU2 = CreatePopupMenu();
HMENU3 = CreatePopupMenu();

AppendMenu(HMENU2, MF_STRING, 111, "Минимальный" );
AppendMenu(HMENU2, MF_STRING, 222, "Максимальный" );

AppendMenu(HMENU3, MF_STRING, 333, "25" );
AppendMenu(HMENU3, MF_STRING, 444, "50" );
AppendMenu(HMENU3, MF_STRING, 555, "75" );
AppendMenu(HMENU3, MF_STRING, 666, "100" );

AppendMenu(HMENU1, MF_POPUP, HMENU2, "Размер окна" );
AppendMenu(HMENU1, MF_POPUP, HMENU3, "Прозрачность" );

Object_Button1 = CreateWindow(0, "BUTTON", "", WS_VISIBLE | WS_CHILD, 10, 10, 120, 20, gethwnd(0), 0, 0, 0);
Object_Button2 = CreateWindow(0, "BUTTON", "", WS_VISIBLE | WS_CHILD, 140, 10, 250, 20, gethwnd(0), 0, 0, 0);
Object_Listbox1 = CreateWindow(0, "LISTBOX", "", LBS_OWNERDRAWVARIABLE | WS_BORDER | WS_HSCROLL | WS_VSCROLL | LBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE, 400, 10, 200, 200, gethwnd(0), 0, 0, 0);

EnableWindow(Object_Button2, 0);
}

(Добавление)
CODE:
function getmessage(0, WM_COMMAND)
{

if(loword(message.wparam) == 999)
{
MainWindow = window ("диалог");
showdialog(1, "Настройки", MainWindow.left+100, MainWindow.top+100, 600, 500, 0, 1);

sendmessage(EM_LIMITTEXT, 70, 0, formatiw(Object_Edit1));

SendMessage(Object_Checkbox1, BM_SETCHECK, formatsn(format(#Load_Checkbox1[0])), 0);
SendMessage(Object_Checkbox2, BM_SETCHECK, formatsn(format(#Load_Checkbox2[0])), 0);
SendMessage(Object_Checkbox3, BM_SETCHECK, formatsn(format(#Load_Checkbox3[0])), 0);
SendMessage(Object_Checkbox4, BM_SETCHECK, formatsn(format(#Load_Checkbox4[0])), 0);
SendMessage(Object_Checkbox5, BM_SETCHECK, formatsn(format(#Load_Checkbox5[0])), 0);
SendMessage(Object_Edit1, WM_SETTEXT, 0, format(#Load_Edit1[0]), 0);

enabletimer(1);
}}
104. Zireael - 02 Апреля, 2019 - 17:50:48 - перейти к сообщению
 Цитата:
Не работает меню, которое вызывается при нажатии на правую кнопку мыши.

В моём примере работает. Ищите где ошибка у вас.
 Цитата:
MainWindow = window ("диалог" );

Окно хоть найдено? Может 'диалог' с заглавной буквы.
105. 007wan - 03 Апреля, 2019 - 07:06:21 - перейти к сообщению
 Zireael пишет:
MainWindow = window ("диалог" );

Окно хоть найдено? Может 'диалог' с заглавной буквы.

У меня окно вообще не "диалог" называется, а по другому и оно везде стоит.
Теперь хочу спросиь: визуальное окно или resettextout() могут сбрасывать меню которое вызывается через ПКМ
(Добавление)
Почему отличаются? int MENUINFO[7] = {28, 16, 134217728, 0, 0, 0, 0};(этот предыдущий) и int MENUINFO[7]={28, MIM_STYLE, 0, 0, 0, 0, 0};(этот тот, котоырй скинул)
106. Zireael - 03 Апреля, 2019 - 18:11:52 - перейти к сообщению
 Цитата:
У меня окно вообще не "диалог" называется, а по другому и оно везде стоит.

Тогда чего удивляться что не показывается меню? Окно не найдено, структура не заполнена, обращение к MainWindow.leftclient ничего не даст.
 Цитата:
Почему отличаются? int MENUINFO[7]

 Цитата:
MNS_NOTIFYBYPOS
Menu owner receives a WM_MENUCOMMAND message instead of a WM_COMMAND message when the user makes a selection.
Владелец меню получает сообщение WM_MENUCOMMAND вместо сообщения WM_COMMAND, когда пользователь делает выбор.

Разные сообщения отправляются при выборе пункта меню.
 Цитата:
визуальное окно или resettextout() могут сбрасывать меню которое вызывается через ПКМ

Закомментируйте эти 2 строчки и проверьте.
107. 007wan - 04 Апреля, 2019 - 07:12:12 - перейти к сообщению
 Zireael пишет:

Тогда чего удивляться что не показывается меню? Окно не найдено, структура не заполнена, обращение к MainWindow.leftclient ничего не даст.
Затупил и короче не дописал, что здесь я всегда, где название диалога пишу "диалог", а уменя в коде другое название и я его заменил, но всеравно не работает
(Добавление)
Еще при вставке в список LBS_OWNERDRAWVARIABLE текст, который добавляетсячерез addlist в списке остается невидимым, но кликабельным.
108. 007wan - 04 Апреля, 2019 - 10:18:15 - перейти к сообщению
Ладно, я переделаю код. Задам фундамент кода будет то, что ты скидывал...
(Добавление)
Нашел проблему! оказалось, что при добавлении функции
CODE:
function getmessage(0, WM_SETCURSOR)
Не срабатывает меню, которое вызывается ПКМ.
Вопрос: возможно ли исправить? Или как-то повлиять на содержимое так, что бы оно работало и с меню?
Код WM_SETCURSOR (Отобразить)

(Добавление)
ДА, кстати, когда обе функции активны они обе как раз и не работают, хотя я думал, что какая-то из них будет функционировать все таки
(Добавление)
 007wan пишет:
LBS_OWNERDRAWVARIABLE
Убираю опцию и текст снова показывается. Раньше не замечал, пока не заметил, что при запуске вставляет пустые слова, но они невидимы и кликабельны, т.к при нажатии виден указатель + еще полоса прокрутки вниз опускается.
109. Zireael - 04 Апреля, 2019 - 19:14:33 - перейти к сообщению
Придётся без WM_SETCURSOR и LBS_OWNERDRAWVARIABLE, т. к. кибор не умеет возвращать значения что сообщение обработано.
110. 007wan - 05 Апреля, 2019 - 05:12:29 - перейти к сообщению
List Box
-------------------
Как мне с помощью эти функций сделать, что бы при каждом добавлении строчки в Listbox сохранял это в файл? И считается ли это правильным, потому что строчки могут быть добавляться очень быстро или очень медленно, что может не успевать проделывать всю работу, то как лучше? Еще вроде можно как-то добавить колонки в этот список. Вроде через LB_DIR message

Powered by ExBB FM 1.0 Final