我正在編寫一個封裝了一些媒體基礎功能的庫。我希望能夠通過回調網絡攝像頭與系統連接/斷開連接的方式通知圖書館用戶。 MSDN describes how to know when a camera is disconencted,但它使用消息循環讓你知道這一點。我不太瞭解Windows消息循環,但是我在this MSDN article中讀到的內容告訴我必須有一個窗口才能有消息循環,這對於庫是不可接受的。使用Windows消息循環來接收我正在寫的庫中的事件
所以,我有幾個問題:
我可以在一個新的線程創建一個消息循環,並接收由第一鏈接描述的通知消息? (我希望它在一個新線程中,以便它不會阻止庫用戶的線程,那麼庫用戶調用
setCameraChangeCallback(...)
,這會啓動內部的消息循環。)如果是這樣,我應該使用哪些創建消息循環的函數?我可以在不創建任何窗口的情況下執行此操作嗎?這是一個圖書館,所以如果一個圖書館用戶名爲
setCameraChangeCallback(...)
並且突然出現一個窗口,那將會非常奇怪。再次,對如何做到這一點的解釋(函數名稱,使用的特定參數等)非常受歡迎。我的庫可以在Windows應用程序中沒有問題的情況下使用嗎?這意味着使用我的庫的Windows應用程序可能已經創建了一個窗口,並且它自己的消息循環正在運行。我的消息循環在單獨的線程中運行會干擾庫用戶的消息循環嗎?如果是這樣,如何避免這種情況?
是否有什麼阻止我創建兩個或多個帶有消息循環的線程,每個線程都被註冊以獲取相機更改事件的通知?