создание окна в дочернем потоке в vc ++ - PullRequest
0 голосов
/ 13 января 2011

Я хочу создать окно и показать некоторые изображения (например, анимацию на основе SetTimer()) для окна, созданного с помощью функции CreateWindow().Но он должен быть создан в отдельном потоке и должен оставаться в живых, пока пользователь не закроет это.Я пытался, но безуспешно.

EDITED

Я только что погуглил, нашел эту ссылку Как создать Windows в многопоточном приложении , но яхочу знать, когда вызовут Window Procedure.если он вызывается системой, то как я могу вызвать его из моего child thread.

Ответы [ 2 ]

1 голос
/ 14 января 2011

Windows (представленная HWND) в Windows имеет сходство потоков.Их WindowProc всегда вызывается в контексте потока, с которым они созданы.

Таким образом, они являются удобным способом сериализации вызовов между потоками, поскольку API-интерфейсы PostMessage и SendMessage можно вызывать из любого потока в приложении., но WindowProc будет выполняться в контексте исходного потока создания.

Поскольку WM_TIMER сообщения, публикуемые в очереди сообщений, представляют собой механизм, с помощью которого работает SetTimer, опять же, вы должны быть осторожны при вызове SetTimer вмногопоточное приложение - сообщения таймера будут обрабатываться вызывающим потоком (если параметр hwnd равен NULL) или потоком окна.

В результате вы также должны быть осторожны, чтобы помещать цикл сообщений в каждыйпоток, который может создавать окна или хочет обрабатывать таймеры.

1 голос
/ 13 января 2011

Держите ваш пользовательский интерфейс в главном потоке Windows.Установка таймера с помощью Windows API не требует дополнительной нити (так как ваш WndProc получит сообщение таймера WM_TIMER).

Даже если у вас есть длительное задание, которое может потребовать использования дополнительного потока, оставьте окно в главном потоке, выполните свою работу в рабочем потоке и отправьте сообщение в основной поток с помощьюобновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...