Приоритетные и фоновые окна
Каждый процесс может иметь многопоточное выполнение, и каждый поток может создавать окна. Поток, создавший окно, с которым пользователь в настоящее время работает, называется приоритетным потоком, а окно называется
приоритетным окном (foreground window). Все другие потоки являются фоновыми, а созданные ими окна называются фоновыми окнами (background windows).Каждый поток имеет приоритетный уровень, который определяет количество ПРОЦЕССОРНОГО ВРЕМЕНИ, которое поток занимает. Хотя прикладная программа может устанавливать приоритетный уровень своих потоков, обычно приоритетный поток имеет немного более высокий приоритетный уровень, чем фоновые потоки. Приоритетный поток, поскольку он имеет более высокий приоритет, занимает большее количество ПРОЦЕССОРНОГО ВРЕМЕНИ, чем фоновые потоки. Приоритетный поток имеет обычный базовый приоритет 9; фоновый поток имеет обычный базовый приоритет 7.
Пользователь устанавливает приоритетное окно, щелкая мышью по окну или, используя комбинацию клавиш
ALT+TAB или ALT+ESC. Чтобы получить дескриптор приоритетного окна, используйте функцию GetForegroundWindow. Чтобы проверить, является ли окно вашего приложения приоритетным окном, сравните дескриптор, возвращенный функцией GetForegroundWindow с дескриптором окна вашего приложения.Прикладная программа устанавливает приоритетное окно, используя функцию
SetForegroundWindow.Windows NT 4.0 и ранее, Windows 95:
Если новое приоритетное окно - окно верхнего уровня, Windows активизирует его; иначе он активизирует связанное окно верхнего уровня.Windows 98/Me/2000/XP: Система ограничивает число процессов, которые могут устанавливать приоритетное окно. Процесс может установить приоритетное окно, только в том случае, если имеет место одно из ниже перечисленных условий:
Windows 2000/XP: процесс, который может устанавливать приоритетное окно, может давать возможность другому процессу установить приоритетное окно, вызывая функцию
AllowSetForegroundWindow или вызывая функцию BroadcastSystemMessage с флажком BSF_ALLOWSFW. Приоритетный процесс может блокировать вызовы SetForegroundWindow, при помощи вызова функции LockSetForegroundWindow.