Создание Windows в потоках

Любой поток может создать окно. Поток, создающий окно, владеет окном и связанной с ним очередью сообщений. Поэтому поток должен предоставить цикл сообщений для обработки сообщений в своей очереди сообщений. Кроме того, в этом потоке необходимо использовать MsgWaitForMultipleObjects или MsgWaitForMultipleObjectsEx , а не другие функции ожидания, чтобы он обрабатывал сообщения. В противном случае система может стать взаимоблокировкой, когда поток отправляет сообщение во время ожидания.

Функцию AttachThreadInput можно использовать, чтобы разрешить набору потоков использовать одно и то же входное состояние. Предоставляя общий доступ к входным состояниям, потоки разделяют свою концепцию активного окна. Таким образом, один поток всегда может активировать окно другого потока. Эта функция также полезна для совместного использования состояния фокуса, захвата мыши, состояния клавиатуры и состояния окна Z-порядка между окнами, созданными различными потоками, с общим состоянием ввода.

Сведения о создании окон см. в разделе Классы Windows.