MVS編寫MFC應用程式知識點總結

2021-09-22 02:24:24 字數 1682 閱讀 8710

hinstance和hwnd的區別:二者都是表示控制代碼,前者是應用程式的控制代碼,後者是視窗的控制代碼。程序中的每個dll模組被全域性唯一的32位元組的hinstance控制代碼標識,只有在特定的程序內部有效,控制代碼代表了dll模組在虛擬空間中的其實位址。在win32中,hinstance和hmodule的值是相同的,這兩種型別可以替代使用。

stdcall 是c++標準呼叫方式,winapi巨集和callback巨集來指定函式的呼叫方式為stdcall

exteern 「c」:為了解決c\c++的相容問題,通用性更強。

應用程式呼叫dll的第二種方法:(ipaddfun)getprocaddress(hdll,makeintresource(1));其中makeintresource直接通過.def檔案中為函式制定的順序訪問。makeintresource是乙個通過序號獲取函式名的巨集//需要看具體的**理解,暫未確定是這樣。

dll程式入口函式dllmain:注意大小寫是區別的(僅匯出資源的dll可以沒有dllmain函式)。函式原型引數的意義:hmoudule引數:指定向dll本身的例項控制代碼;ul_reason_for_call引數:指明了dll被呼叫的原因,可以有以下4個取值:1、dll_process_attach:當dll被程序第一次呼叫時,導致dllmain函式呼叫,如果同乙個程序後來再次呼叫此dll時,作業系統只會增加dll的使用次數。

dllmain函式:windows在載入dll的時候,需要乙個入口函式,就如同控制台或dos程式需要main函式、win32程式需要winmain函式一樣,windows在找不到dllmain的時候,系統會從其他執行庫中引入乙個不做任何操作的預設的dllmain函式版本,並不意味著dll可以放棄dllmain函式,就像是預設的建構函式一樣。dllmain函式在dll被載入和解除安裝時被呼叫,在單個現成的啟動終止時,dllmain函式也被呼叫,ul_reason_for_call指明了被呼叫的原因。原因有4種。

apientry定義為——stdcall,他以為著這個函式以標準pascal的方式進行呼叫,也就是winapi方式;程序中的每個dll模組被全域性唯一的32位元組的hinstance和hmodule的值是相同的,這兩種型別可以替換使用,這就是函式引數hmodule的來歷。

getprocaddress(hdll,makeintresource(1)),他直接通過.def檔案中為add函式指定的順序號訪問add函式,makeintresource是通過序號獲取函式的巨集。

編譯dll檔案的時候會提示無法啟動程式dll,但是dll和lib檔案可以生成。

psam卡生成過程金鑰和加密資料之間若是加上psam卡產生隨機數則會產生不響應錯誤。

產生隨機數指令過程理解:壓縮指令2位元組變成1位元組,可能壓縮後返回的字元指標可與ascll表對應,也可能不可以與ascll碼對應,都可以使用輸出函式進行輸出,沒有規定的輸出亂碼,之後選擇把沒有對應ascll表的壓縮字元再次拉伸而進行相關操作,這裡(psam卡介面開發)需要拉伸返回的壓縮指令提取字元陣列表示的十六進製制隨機數。

外部認證中有乙個隨機數要從cpu生成,卡片預設有乙個操作是使用cpu內部乙個最近生成的隨機數和外部認證指令裡面的乙個隨機數,生成金鑰,和由psam卡生成的在外部認證使用到的金鑰對比,結果正確則由卡片返回9000

動態庫的迴圈呼叫的過程中,要是迴圈呼叫的動態庫都使用的是當前檔案呼叫,則,當前檔案為剛開始的呼叫的dll動態庫

做外部認證的時候,需要用到psam進行資料加密,要是找不到psam卡的金鑰檔案,新增一二級分散因子,同時指令的長度位元組邊長。

MFC相關知識點

本部落格內容 一 mfc訊息對映機制 二 mfc單文件框架講述 三 mfc的基本類有哪些 四 windows程式執行 五 sendmessage 和postmessage的異同 參考 mfc是windows下的乙個類庫,主要是封裝了win32 api函式,並設計了一套方便的訊息對映機制。具體實現方法...

Sphinx應用程式編寫

pocketsphinx api核心理念 pocketsphinx api 被設計是為了減輕編寫語音識別功能應用程式。由於使用抽象類,所以在源 和二進位制檔案相容方面,更能保持穩定。因為它完全可重入,所以在同一程序中擁有多個編碼器也不會出現問題。在執行時,新的語言模型的介面 在sphinxbase ...

如何編寫應用程式

每次要編寫嵌入式應用程式的時候總是不知道該如何入手,於是簡單的研究了下現在普遍的掃碼支付模組的sdk開發結構。拿到乙個專案需求時,我們需要看下該專案分為幾個模組,每個模組之間又是以什麼形式連線的。模組化會使程式結構清晰,維護也會方便很多。比如說掃碼支付模組就分為三個部分,底層core部分,mqtt功...