Прототип функции такой(UASM\Pascal\C):
Code: Select all
InputBox Proto Buffer:Ptr, Caption:Ptr, Prompt:Ptr, Default:Ptr, Flags:Dword, BufferSize:Dword, RedrawProc:Ptr
Code: Select all
Function InputBox(Buffer: Pointer; Caption, Prompt, Default: PChar; Flags, BufferSize: Dword; RedrawProc: Proc) : LongBool;
Code: Select all
unsigned long __stdcall InputBox(void* Buffer, char* Caption, char* Prompt, char* Default,
unsigned long Flags, unsigned long BufferSize, void* RedrawProc)
- Buffer — по этому адресу будет записано возвращаемое значение
Caption — заголовок окна InputBox-а
Prompt — сообщение отображаемое в окне и предлагающее пользователю ввести данные
Default — значение по умолчанию, отображается в текстовом поле
Flags — опции, флаги
BufferSize — размер буфера под возвращаемое значение
RedrawProc — процедура перерисовки окна, вызывается при активации родительского окна
Flags = [MOUSE|SCREEN|PARENT][NUMBER|STRING]:
- IBF_STRING = 0 — в буфер будет записана строка
IBF_NUMBER = 1 — в буфер будет записано число
IBF_MOUSE_REL = 0 — относительно положения указателя мыши
IBF_SCREEN_REL = 8 — относительно экрана
IBF_PARENT_REL = 16 — относительно родительского окна
- IBE_NO_ERROR = 0 — успешно, нет ошибки
IBE_NUMBER_OVERFLOW = 1 — переполнение при вводе числа
Code: Select all
Var
Err: LongBool;
X: LongInt;
Txt: Array[0..10] Of Char;
// Ввод числа в переменную X
Err := InputBox(@X, 'Input', 'Enter value', '-100', IBF_NUMBER, SizeOf(X), @On_Redraw);
If Not Err Then // Если нет ошибки
DoSomething; // продолжаем работу
Else // иначе
InputBoxError(Err); // обрабатываем ошибку
// Ввод строки в буфер Txt, Flags = 0, но можно вместо нуля написать IBF_STRING
InputBox(@Txt, 'Input', 'Enter string', 'my text', 0, SizeOf(Txt), @On_Redraw);
Размер шрифта зависит от системной настройки.
Вот так выглядят примеры Можно проверить, как это работает, есть сборка уже вместе с InputBox, в ней есть папка "$$$_TEST_$$$", там примеры, использующие InputBox.
Исходники примеров в TEST_SRC.7z:
- один на ассемблере собирается с помощью UASM
другой на C — с помощью BCC32