Петля обработки сообщения в DLL !?

Тема в разделе "WASM.BEGINNERS", создана пользователем ATX, 8 ноя 2006.

  1. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Всем привет!

    Запнулся на фигне - в моей проге DLL выступает в роли бэкграундной апликации, котороя ждет команды от главного приложения.
    Проблеммы две:
    1. Как организовать цыкл обратки сообщений внутри DLL, чтобы не загружать процессор?
    2. Как лучще передовать сообщения из главной проги в DLL (кроме Pipe's)?

    Сорри за глупые воросы...
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ATX
    GetMessage не загружает процессор. Только нельзя иметь обработчик сообщений в DLL и в основном процессе одновременно, т.к. они будут "воровать" друг у друга сообщения.

    А каким тут образом можно использовать пайпы??? Нужно экспортировать из DLL функцию и вызывать её из главного приложения, когда нужно что-то передать или принять.
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Создаешь отдельный тред для окна и будет всё в ажуре =)
     
  4. LazzY

    LazzY New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2006
    Сообщения:
    123
    насоздавай ивэнтов и жди их в отдельном потоке ддлки по WaitForMultipleObjects
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    n0name
    Интересно, зачем это делать, да ещё и в отдельном треде, если уже есть один цикл обработки сообщений? Причём основной обработчик всё равно будет "воровать" сообщения этого окна, т.е. некоторые сообщения могут мистическим образом "теряться". Если без треда, то такое может быть полезно для создания модальных диалогов.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Quantum
    Ну например для создание отдельного окна. Ну почему могут терятся, создаю окно в том же потоке что и цикл выборки сообщений, и всё нормально работает.
     
  7. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Я могу делать так:
    1. В DLL регю класс окна
    2. Создаю процедуру окна с петлей обработки сообщений
    3. Определяю тип сообщений для DLL типа - WM_USER + ???
    4. Передовать из главного приложения сообщение в DLL

    Будет такое дело работать?
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    ATX
    3. UINT RegisterWindowMessage(
    LPCTSTR lpString // address of message string
    );
    that is guaranteed to be unique throughout the system
    А уже RegisterWindowMessage вернёт свободное сообщение типа WM_USER + ???