Друзья подскажите пожалуйста, как отловить от что мы нажали на эдит , затем вышли из него , как бы фокус с него пропал, нужно вызвать в этот момент событие,
Задумка после ввода пользователем текста передать его в переменную.
1. ivantu - 31 Марта, 2021 - 08:49:16 - перейти к сообщению
2. Kibor - 31 Марта, 2021 - 11:16:09 - перейти к сообщению
CODE:
#define WS_MINIMIZEBOX 131072
#define WS_MAXIMIZEBOX 65536
#define WS_VISIBLE 268435456
#define WS_CAPTION 12582912
#define WS_SYSMENU 524288
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define COLOR_APPWORKSPACE 12
#define WM_LBUTTONDOWN 513
#define WM_COMMAND 273
#define WM_CREATE 1
#define WM_LBUTTONDOWN 513
external(INT, "RegisterClass", "RegisterClassA", "User32.dll" );
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "UnregisterClass", "UnregisterClassA", "User32.dll");
////////////////////
int edit1;
int WinProc=address("WindowProc");
char Class[8]={'m', 'y', 'c', 'l', 'a', 's', 's', 0};
int PWNDCLASS[10];//Структура WNDCLASS
int CLASS=address(#PWNDCLASS[0]);//Указатель на структуру класа
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру
writeaddress(WinProc, address(#PWNDCLASS[1]));//Указываем адрес функции WindowProc
writeaddress(COLOR_APPWORKSPACE, address(#PWNDCLASS[7]));//Указываем цвет диалога
writeaddress(address(#Class[0]), address(#PWNDCLASS[9]));//Указываем указатель на название класа
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать клас"); goto er;}
int Win=CreateWindow(0, address(#Class[0]), "Основное окно",
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
10, 10, 500, 500, 0, 0, 0, 0);
/////////////////////
loop()sleep(10);
er:;
//Тут можно создавать контролы для окна, поскольку оно одно и мы можем указать родительским окном для контролов message.hwnd
function getmessage(WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 21, message.hwnd, 0, 0, 0);
}
function getmessage(WM_COMMAND)
{
if(message.lparam == edit1)
{
beep(1000, 100);//Сигнал когда что то вводим или передаем фокус
}
}
function getmessage(WM_CLOSE)
{
UnregisterClass(address(#Class[0]), 0);
goto global er;
}
#define WS_MAXIMIZEBOX 65536
#define WS_VISIBLE 268435456
#define WS_CAPTION 12582912
#define WS_SYSMENU 524288
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define COLOR_APPWORKSPACE 12
#define WM_LBUTTONDOWN 513
#define WM_COMMAND 273
#define WM_CREATE 1
#define WM_LBUTTONDOWN 513
external(INT, "RegisterClass", "RegisterClassA", "User32.dll" );
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "UnregisterClass", "UnregisterClassA", "User32.dll");
////////////////////
int edit1;
int WinProc=address("WindowProc");
char Class[8]={'m', 'y', 'c', 'l', 'a', 's', 's', 0};
int PWNDCLASS[10];//Структура WNDCLASS
int CLASS=address(#PWNDCLASS[0]);//Указатель на структуру класа
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру
writeaddress(WinProc, address(#PWNDCLASS[1]));//Указываем адрес функции WindowProc
writeaddress(COLOR_APPWORKSPACE, address(#PWNDCLASS[7]));//Указываем цвет диалога
writeaddress(address(#Class[0]), address(#PWNDCLASS[9]));//Указываем указатель на название класа
if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать клас"); goto er;}
int Win=CreateWindow(0, address(#Class[0]), "Основное окно",
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
10, 10, 500, 500, 0, 0, 0, 0);
/////////////////////
loop()sleep(10);
er:;
//Тут можно создавать контролы для окна, поскольку оно одно и мы можем указать родительским окном для контролов message.hwnd
function getmessage(WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 21, message.hwnd, 0, 0, 0);
}
function getmessage(WM_COMMAND)
{
if(message.lparam == edit1)
{
beep(1000, 100);//Сигнал когда что то вводим или передаем фокус
}
}
function getmessage(WM_CLOSE)
{
UnregisterClass(address(#Class[0]), 0);
goto global er;
}
3. ivantu - 31 Марта, 2021 - 14:02:22 - перейти к сообщению
спасибо, сначала испугался , много букв, потом глянул по моей теме одна строка ))
(Добавление)
Следом по теме Edit , можно ограничить минимальное число 0, максимальное где то видел как делается а вот с минимальным не попадалось.
(Добавление)
Следом по теме Edit , можно ограничить минимальное число 0, максимальное где то видел как делается а вот с минимальным не попадалось.
4. ivantu - 31 Марта, 2021 - 23:12:19 - перейти к сообщению
Все разобрался.