將海康視頻sdk源碼封裝成控件

         近日有一個客戶想要做一個視頻控件,指明要用海康的視頻服務器,並提供給我一個SDK演示程序,是一個對話框,上面佈滿了大大小小的按鈕、菜單等控件,我拿過來一看,好,有十多萬行源碼,好在客戶要求的功能不多,只有一個錄像功能。

       我就在源碼裏面刪控件,最後總算弄得非常簡單明瞭。後面的問題來了,如何把這個對話框封裝成控件呢,根據我的經驗,在控件中可以嵌入對話框程序,網上也有例子,但那是在ActiveX控件工程中添加的對話框,要把一個對話框應用程序的例子中的對話框加到ActiveX控件中,還不太好加,何況這個對話框程序中有上百個小的對話框。

       單單把這些對話框資源導到ActiveX控件中,就夠折騰一氣的,導完了,一編譯,出現了非常少見的資源編譯錯誤,無法解決。沒辦法,只得一個一個把需要的對話框添加到工程中,一步一編譯。

    接下來是對App類的改造,把原先在對話框App中的代碼,以及包含的頭文件都加到控件的App中,在控件類中加入主對話框做爲成員變量,編譯通過了,運行的時候,出現內存錯誤,然後斷到一個創建主對話框的MFC源碼處,接下來反覆下斷點,甚至註釋掉主對話框中幾乎所有的成員函數,程序一如即往地出現內存錯誤,所有的斷點都斷不下來,即使是把控件類中的主對話框成員變量去掉,還是一樣,這幾乎是我職業生涯中最迷茫的一刻。

    後來我放棄了,轉而把對話框程序原封不動地添加到控件工程中,而把對話框App生成實例的那一句話註釋掉,結果就OK了,之後就是一步步測試,出現視頻畫面,調整各控件大小,封裝基本操作,做成控件的方法。

      一切都想不到的順利,僅僅到最後,將GDI+應用到控件中時,把初始化和註銷代碼放到控件的App類中,無法註冊控件,上網查,看到有牛人說,把這部分代碼放到控件類中就行。一試,果然OK。至此,一個符合客戶初步需求的控件就這樣誕生了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章