Теперь переменные
Цитата:
message.x - координата мыши X
message.y - координата мыши Y
message.wparam - определяет дополнительную информацию о сообщении. Точное значение зависит от значения члена структуры message
message.lparam - определяет дополнительную информацию о сообщении. Точное значение зависит от значения члена структуры message
message.y - координата мыши Y
message.wparam - определяет дополнительную информацию о сообщении. Точное значение зависит от значения члена структуры message
message.lparam - определяет дополнительную информацию о сообщении. Точное значение зависит от значения члена структуры message
локальные для каждой функции событий.
Раньше такой код
CODE:
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int b1, b2;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
while(window ("Диалог")==0)sleep(10);
win w=window ("Диалог");
loop()
{
w=window ("Диалог");
textout(1, w.left, w.top, " Не обновляли ", 0);
sleep(1);
}
function getmessage(0, WM_CREATE)//Создаем контролы при создание окна
{
int hwnd=gethwnd(0);
//Создание кнопок
b1=CreateWindow(0, "BUTTON", "Первая кнопка", 1342177280, 10, 10, 120, 30, hwnd, 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Ворая кнопка", 1342177280, 10, 50, 120, 30, hwnd, 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1)messagebox ("Первая кнопка");
if (message.lparam==b2)messagebox ("Ворая кнопка");
}
function getmessage(0, WM_LBUTTONDOWN)//Отлавливаем клик правой кнопки мыши всплывающее меню
{
messagebox("1 "+format(message.x));
looptime(2000){}
messagebox("2 "+format(message.x));
}
function getmessage(0, 15)//WM_PAINT Отлавливаем обновление окна
{
textout(1, w.left, w.top, " Обновили окно ", 0);
sleep(100);
}
int b1, b2;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
while(window ("Диалог")==0)sleep(10);
win w=window ("Диалог");
loop()
{
w=window ("Диалог");
textout(1, w.left, w.top, " Не обновляли ", 0);
sleep(1);
}
function getmessage(0, WM_CREATE)//Создаем контролы при создание окна
{
int hwnd=gethwnd(0);
//Создание кнопок
b1=CreateWindow(0, "BUTTON", "Первая кнопка", 1342177280, 10, 10, 120, 30, hwnd, 0, 0, 0);
b2=CreateWindow(0, "BUTTON", "Ворая кнопка", 1342177280, 10, 50, 120, 30, hwnd, 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if (message.lparam==b1)messagebox ("Первая кнопка");
if (message.lparam==b2)messagebox ("Ворая кнопка");
}
function getmessage(0, WM_LBUTTONDOWN)//Отлавливаем клик правой кнопки мыши всплывающее меню
{
messagebox("1 "+format(message.x));
looptime(2000){}
messagebox("2 "+format(message.x));
}
function getmessage(0, 15)//WM_PAINT Отлавливаем обновление окна
{
textout(1, w.left, w.top, " Обновили окно ", 0);
sleep(100);
}
мог вести себя не корректно, в том случае если пришло событие, к примеру клик мыши и в этой функции необходимо заюзать переменные message.x и message.у. То в случае если код в этой функции долго выполнялся и эти переменные использовались в конце кода, то вызов другого события посреди выполнения функции события мыши перезаписывал эти переменные и в конце функции они имели значения с другого getmessage.
К примеру
CODE:
function getmessage(0, WM_LBUTTONDOWN)//Отлавливаем клик правой кнопки мыши всплывающее меню
{
messagebox("1 "+format(message.x));
looptime(2000){}//В это время кликаем по кнопке и выполнится WM_COMMAND и переменные перзапишутся.
messagebox("2 "+format(message.x));//Тут уже было бы не то значение что в первом сообщение
}
function getmessage(0, WM_COMMAND)
{//Тут перезапишутся переменные
if (message.lparam==b1)messagebox ("Первая кнопка");
if (message.lparam==b2)messagebox ("Ворая кнопка");
}
{
messagebox("1 "+format(message.x));
looptime(2000){}//В это время кликаем по кнопке и выполнится WM_COMMAND и переменные перзапишутся.
messagebox("2 "+format(message.x));//Тут уже было бы не то значение что в первом сообщение
}
function getmessage(0, WM_COMMAND)
{//Тут перезапишутся переменные
if (message.lparam==b1)messagebox ("Первая кнопка");
if (message.lparam==b2)messagebox ("Ворая кнопка");
}
Устранил. Все переменные на каждое событие изолированы. Локальные. Другим событием не перезапишутся.