217.118.66.101 Постановка задачи: имеется окно, к нему направляются сообщения. В этом же процессе создается поток, который должен иметь возможность получать сообщения, направляемые окну. Если создать поток и вызывать в нем PeekMessage(.. hWnd ..), где hWnd - хэндл главного окна приложения, то сообщения не хватаются, т.к.: "PeekMessage retrieves messages for any window that belongs to the current thread" Чтобы предупредить вопросы "нахрена вообще такое надо??" отвечу - пишу библиотеку, которая должна обрабатывать события от мыши. Библиотека должна легко комбинироваться с существующими графич. библиотеками (MFC, VCL и др.) А в MFC, VCL процедура обработки сообщений окна скрыта под капотом поэтому модифицировать ее под свои нужды не представляется возможным. Какие предложения будут?
Я же тебе уже советовал убрать из библиотеки зависимость от ввода. На крайняк сделай метод установки новой позиции, типо SetPos(x, y), хоть это тоже кривовато. Пускай само приложение решает, что ему делать, и как у него организуется ввод.
217.118.66.101 >Я же тебе уже советовал убрать из библиотеки зависимость от ввода. тссс...))) Может есть выходы. А то очень неудобно будет юзать библиотеку. По кривому я всегда успею сделать. Я даже нашел что-то похожее на то, что мне нужно. Ф-ция AttachThreadInput(). Удалось приаттачить свой поток к главному. Но сообщения все равно не ловятся.
Это как раз не криво, а нормально. Не дело библиотеки лезть в ввод. А если таких библиотек будет много, и все будут туда лезть? А если в приложении сделана хитрая обработка сообщений, они не будут мешать друг другу? Как раз логичнее в цикле вызвать метод библиотеки, чем затем разгребать проблемы.
Что-то слышал о перехватчике сообщений (Hook_что_то_там), например Spy++ так работает. Ничего другого не знаю.
217.118.66.101 >А если таких библиотек будет много Исключено. На приложение создается один экземпляр класса движка. Зачем может понадобится больше я даже представить не могу. >А если в приложении сделана хитрая обработка сообщений, они не будут мешать друг другу? А вот это действительно вопрос... Я озадачился. Пожалуй что придется таки вынести ввод наружу.