ATL寫的DLL中呼叫MFC對話方塊

2022-02-06 00:20:39 字數 913 閱讀 4812

專案需求,製作bho並且要求有個按鈕。bho使用atl實現,按鈕我想使用mfc的dialg上放置按鈕的方式。1、先將atl工程改成支援

mfc,見:或是在建立工程是直接選上suppot mfc。

2、新增dialog資源,然後在繼承於iobjectwithsiteimpl介面的bho類裡新增上dialog成員,並在某處使用dialog.create初使化,

在setsite中或其它地方使用showwindow切換顯示dialog。

幾點注意的地方:

1、如果此 dll 相對於 mfc dll 是動態鏈結的,

//  則從此 dll 匯出的任何調入

//  mfc 的函式必須將 afx_manage_state 巨集新增到

//  該函式的最前面。

////  例如:

////  extern "c" bool pascal export exportedfunction()

// 

////  此巨集先於任何 mfc 呼叫

//  出現在每個函式中十分重要。這意味著

//  它必須作為函式中的第乙個語句

//  出現,甚至先於所有物件變數宣告,

//  這是因為它們的建構函式可能生成 mfc

//  dll 呼叫。

2、#include 和#include 要注意先後順序,否則會出現

參見:幾乎不用mfc,導致我花了三個小時在研究乙個斷言,而這個斷言是因為我在呼叫showwindow之前沒有進行初使化(domodal(模式

)或者create(無模式))導致的,而我還以為是我在atl中使用mfc的方法不對,最後主管一語中的,他說你先找個普通的dll然後試

圖在其中呼叫乙個對話方塊看那邊是否正常。結果我在普通的dll裡也出現這個錯誤,然後去網上搜一搜,才發現犯了這個低階錯誤,

狂汗……

MFC中呼叫C 編寫的DLL

一 使用 clr 編譯 mfc 可執行檔案或規則 dll 1 開啟 專案屬性 對話方塊,方法是右鍵單擊 解決方案資源管理器 中的專案並選擇 屬性 2 展開 配置屬性 旁邊的節點並選擇 常規 在右側窗格中的 專案預設值 下,將 公共語言執行庫支援 設定為 公共語言執行庫支援 clr 3 在相同的窗格中...

關於MFC中DLL的製作和呼叫

這部分內容,和上面的內容差不多,但主要出自 vc 深入詳解 其中更深入地對dll的呼叫進行了分析和優化。上面的內容是最原始最基礎的製作和匯入匯出原理,而以下則是在那基礎上的進一步優化,新增了乙個標頭檔案。而在實際從vc中建立工程時,一切都是便利的,已經包含了的,標頭檔案是現成的。只需要新增到呼叫dl...

在C 中呼叫C 寫的DLL

這裡兩個問題,一是如何將c 編譯成dll,二是在c 和c 中呼叫這個dll 1,寫c 的dll,參照以下link,它說的是c 中的dll呼叫,所以肯定成功 2,寫乙個c 呼叫上面寫的dll 2.1將以上的dll拷貝到debug release目錄,然後寫c 程式如下 using system usi...