原创 [OBS] 信號和槽 —— 底層事件推送

信號是底層用來傳遞消息給UI的。 UI提前連接好相關信號和槽函數,OBS底層發生某些事件時,會推送信號給UI。   槽函數的簽名格式 // userdata : tanslate user's data // params : any p

原创 [OBS] 插件的設計和開發

OBS使用了插件的設計,極大的增強了擴展性,本文做簡要介紹。   每個插件就是一個動態鏈接庫(dll),OBS應用程序啓動後,會在指定路徑下遍歷和動態加載所有dll,並嘗試從dll中獲取插件相關的導出接口。一些插件的公共函數都定義在該頭文

原创 [MFC] 界面閃爍若干種解決辦法

界面閃爍原因,可以參考這裏 總結了工作中使用過的如下幾種方法 ,具體原理就不說了,如果有相應的UI開發經驗 應該很容易懂,不懂的話根據我提供的關鍵字自己搜索一下具體原理。1、雙緩衝 這個是最基本的  不詳說了 可自己搜索相關信息2、OnE

原创 [MFC] 幾種子控件半透明效果的實現辦法

什麼是“控件半透明效果” ? 如下圖所示,美圖秀秀中間的四個按鈕,邊緣四個角都是透明的,呈現出橢圓效果: 熟悉MFC開發的都知道 雖然四個按鈕的邊緣是橢圓的 實際上橢圓之外的角落 也屬於子控件的窗口區域  即:如下圖所示 雖然子控件的

原创 [OBS] 渲染 source,scene,transition,filter

渲染transition或scene:不管是否需要transition,scene的渲染都是通過transition封裝調用的。 transition相關的變量: struct obs_source { uint64_t tra

原创 [D3D11] 在遊戲畫面中添加彈幕的實現原理

使用場景: 主播在直播遊戲的時候,如果遊戲是全屏模式,主播無法看到直播軟件中的聊天消息。 如果添加了遊戲彈幕,可以在全屏遊戲的時候 在遊戲界面中看到聊天消息。   實現原理: 1. 編寫自己的dll和注入dll的代理程序,將dll注入到遊

原创 [OBS] 構建browser source(cef瀏覽器源)的步驟

1. 下載安裝CMAKE https://cmake.org/   2. 下載obs-browser和obs-studio源碼 https://github.com/obsproject/obs-browser https://githu

原创 [Debug] VisualStudio 數據斷點 監控指定內存的寫操作

功能描述: 在vs中添加一個數據斷點 設置指定的內存地址和內存長度後 如果代碼中有對這段內存的寫操作 vs會自動斷點到對應的代碼中 注意:與普通斷點不同的是 添加數據斷點需要在啓動Debug運行程序後 纔可以添加(因爲添加時要設置內存地址

原创 [MFC] 無法響應OnMouseLeave事件的若干種解決辦法

問題背景》 UI邏輯中 經常有這樣的應用場景:在鼠標進入窗口區域時做一些操作 離開窗口區域時做一些清理操作 舉例:鼠標進入窗口區域時 彈出tooltips  離開窗口區域時 隱藏tooltips 但是OnMouseLeave並不一定就會響

原创 若干種窗口畫面的捕獲方法

在直播項目中 需要捕獲某個窗口的畫面並共享 總結了如下幾種場景中窗口的捕獲方法   1、dc拷貝(BitBlt、PrintWindow) 這是最基本的方法 直接拿到窗口dc 然後從dc中拷貝窗口畫面 可優先使用PrintWindow 因爲

原创 [Debug] VisualStudio 遠程調試

(一) 試用場景  想在遠程機上調試代碼 但遠程機無開發環境 (二) 步驟 1、將本地如下路徑的文件夾,拷貝到遠程機(實際路徑 根據自己安裝的VS而定)      D:\Program Files (x86)\Microsoft V

原创 [MFC] WS_EX_LAYERED 實現透明異形窗口(酷狗歌詞、360加速球、窗口邊緣陰影)

關鍵詞:WS_EX_LAYERED、 UpdateLayeredWindow  PC應用不少都有透明的異形窗口  比如以下程序的效果: 酷狗音樂播放器的歌詞窗口(窗口除了歌詞內容 其他都是透明的) 360桌面加速球 窗口邊緣陰影(窗

原创 [OBS] 分析libobs幾個主要的線程

There are three primary threads spawned by libobs on initialization: obs_graphics_thread for rendering video libobs/obs

原创 [MFC] 無邊框窗口的Resize拖動效果的實現(上)

衆所周知:當窗口是Resizing類型時 會自帶resize效果(鼠標懸停在窗口邊緣時 會有resize光標 點擊拖動可以修改窗口的寬高) 但是 實際的窗口程序因爲考慮到界面美化 通常需要去掉自帶的border 這樣窗口就沒有自帶的re

原创 [http] WinInet發送或接收函數超時的bug & 解決辦法

項目中有http的IO操作 使用了WinInet進行網絡數據的發送和接收  但是使用中發現 WinInet的讀寫函數(HttpSendRequest和InternetReadFile)經常會卡住 函數很久纔會返回 有時甚至不返回 衆所周