Можно ли использовать TrackPopupMenu из вторичного потока? - PullRequest
1 голос
/ 29 июня 2011

Можно ли использовать TrackPopupMenu из вторичного потока?Я пытаюсь использовать его с флагами TPM_NONOTIFY и TPM_RETURNCMD.

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

Тот же код при вызове из основного потока / потока графического интерфейса работает отлично.

1 Ответ

2 голосов
/ 12 сентября 2011

Вам необходимо запустить его из того же потока, которому принадлежит окно, к которому прикреплено меню.

Правило потоков в Windows гласит, что окна имеют сходство с потоком, который создает окно.Поскольку TrackPopupMenu получает дескриптор окна, вы можете предположить, что он должен вызываться из потока этого окна.

На практике в Windows (и во всех платформах GUI, с которыми я когда-либо сталкивался), все, что связано с GUI, должно происходитьв основной теме.

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