Всем привет! Запнулся на фигне - в моей проге DLL выступает в роли бэкграундной апликации, котороя ждет команды от главного приложения. Проблеммы две: 1. Как организовать цыкл обратки сообщений внутри DLL, чтобы не загружать процессор? 2. Как лучще передовать сообщения из главной проги в DLL (кроме Pipe's)? Сорри за глупые воросы...
ATX GetMessage не загружает процессор. Только нельзя иметь обработчик сообщений в DLL и в основном процессе одновременно, т.к. они будут "воровать" друг у друга сообщения. А каким тут образом можно использовать пайпы??? Нужно экспортировать из DLL функцию и вызывать её из главного приложения, когда нужно что-то передать или принять.
n0name Интересно, зачем это делать, да ещё и в отдельном треде, если уже есть один цикл обработки сообщений? Причём основной обработчик всё равно будет "воровать" сообщения этого окна, т.е. некоторые сообщения могут мистическим образом "теряться". Если без треда, то такое может быть полезно для создания модальных диалогов.
Quantum Ну например для создание отдельного окна. Ну почему могут терятся, создаю окно в том же потоке что и цикл выборки сообщений, и всё нормально работает.
Я могу делать так: 1. В DLL регю класс окна 2. Создаю процедуру окна с петлей обработки сообщений 3. Определяю тип сообщений для DLL типа - WM_USER + ??? 4. Передовать из главного приложения сообщение в DLL Будет такое дело работать?
ATX 3. UINT RegisterWindowMessage( LPCTSTR lpString // address of message string ); that is guaranteed to be unique throughout the system А уже RegisterWindowMessage вернёт свободное сообщение типа WM_USER + ???