將MFC Grid control封裝為DLL的做法及其在DLL中的使用方法
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
MFCGrid control是一款非常優秀的網格控件,支持非常豐富的界面元素,如下圖:
因而在數據庫程序及報表程序應用較為廣泛,其源碼可以在下面下載到:
MFC Gridcontrol的作者并沒有將其封裝為DLL,因為在程序的多個模塊復用這個控件比較麻煩(需要在多個工程中加入其源碼),因此最好將其封裝為一個DLL。今天有同事反映在DLL的對話框中無法使用封裝好的MFC Grid control,于是上網查了下資料,晚上摸索了一下,解決了這個問題。
MFC Grid control的作者在設計該控件并沒考慮到在DLL中使用該控件,因此在其控件類CGridCtrl類的構造函數注冊窗口類時指定該窗口類的窗口過程所屬的應用實例句柄皆為主程序的程序句柄(一般為exe程序),因此在DLL中無法顯示。因此要解決該問題,就必須將注冊窗口類函數改寫,將應用實例句柄傳給控件類。具體注冊函數為:
[cpp] view plaincopy