В мультизадачной среде, которой является операционная система IBM OS/2 Warp, одновременно могут происходить многие события. Приложения могут работать параллельно и независимо, что в целом повышает производительность системы. Однако возможность мультизадачной обработки накладывает определенные требования на приемы работы с такими устройствами, как мышь и клавиатура.
Программа, запущенная под управлением операционной системы MS-DOS , может монопольно использовать мышь и клавиатуру, так как она работает в одиночестве. Весьма распространенный способ ввода с клавиатуры в программах MS-DOS заключается в том, что программа вызывает функцию getch (или аналогичную), останавливающую работу программы до тех пор, пока пользователь не нажмет какую-нибудь клавишу. После ввода программа продолжает свое выполнение.
Очевидно, что в мультизадачной среде такой способ ввода применять нельзя, так как одновременно могут работать несколько приложений и каждому из них может потребоваться ввести что-нибудь с клавиатуры. Вопрос - какое приложение должно выполнять ожидание в данном случае?
Аналогичная трудность возникает и при работе с мышью. Пользователь может перемещать курсор мыши внутри окон, созданных разными приложениями. Более того, пользователь может начинать ту или иную операцию, выполняемую с помощью мыши, в окне одного приложения, а заканчивать - в окне другого приложения.
Например, пусть мы запустили два приложения. Можно установить курсор мыши в окно первого приложения, нажать левую клавишу мыши, затем, не отпуская клавишу, переместить курсор мыши в окно второго приложения и там отпустить клавишу мыши. При этом в окне первого приложения произошло одно событие (пользователь нажал левую клавишу мыши), а в окне второго - другое (пользователь отпустил клавишу мыши). Очевидно, что использование традиционных для MS-DOS способов работы с мышью в среде Presentation Manager (если бы такое было возможно) может привести к большим проблемам при попытке приложений определить, что же все-таки пользователь сделал с курсором и клавишами мыши.