❶ C語言的學習
學習C語言,我想應當首先手頭有一本入門教材,如果有條件用計算機的話,在計算機上安裝TC程序。
前面的基本內容我想你自己會學好學會的,關鍵就是在指針以後的內容比較復雜抽象,需要下一番功夫才行呀。
如果有什麼問題可以在網上線我留言。QQ360795604
❷ GetProcAddress()調用動態連接庫
非MFC DLL成立的
一個DLL必須有一個入口點,如用C語言編寫的應用程序,你必須有一個WinMain函數。非MFC DLL中的DllMain是一個預設的入口函數,你不需要編寫自己的DLL入口函數,使用的默認項功能可以使正確的初始化調用動態鏈接庫。如果應用程序的DLL需要分配額外的內存或資源,或需要為每個進程或線程初始化和清理操作,DLL項目。 CPP文件DllMain()函數按照下面的格式書寫。
:BOOL APIENTRY的DllMain(HANDLE HMODULE,DWORD ul_reason_for_call,LPVOID lpReserved)
{
開關(ul_reason_for_call)
{
情況下DLL_PROCESS_ATTACH:
.......
情況下,DLL_THREAD_ATTACH:
......
情況下DLL_THREAD_DETACH:
......
情況下,DLL_PROCESS_DETACH:
......
}
返回TRUE;
}
參數,hMoudle動態庫被稱為傳遞給一個指針,指向一個句柄(實際上,它是一個指針到一個段_DGROUP選擇器);
ul_reason_for_call是一個說明的動態庫的被轉移到該標志的原因,進程或線程時,當載入或卸載一個動態鏈接庫的操作系統調用入口函數,和動態鏈接庫調用所有可能的值是:
(1)DLL_PROCESS_ATTACH:進程被調用,或者調用載入庫DLL鏈接到當前的進程的地址空間並初始化;
(2)DLL_THREAD_ATTACH:當前進程創建一個新的線程,DLL被稱為新線程的身體內;
(3)DLL_PROCESS_DETACH:調用DLL過程終止,DLL被卸載;
(4)DLL_THREAD_DETACH:調用的DLL線程終止,DLL被卸載;
lpReserved為保留參數。
你想輸出函數,變數,C + +的類或其他DLL中的函數可以調用VC的關鍵字_declspec(dllexport)的。
2,MFC AppWizard的dll的方式,規則DLL和擴展DLL建立
在MFC應用程序向導dll文件生成DLL文件的方法有三種:靜態鏈接到MFC常規DLL動態鏈接到MFC的規則DLL和MFC擴展DLL,創建一個DLL,創建一個DLL,可以根據實際情況選擇。
靜態鏈接到MFC的規則DLL靜態鏈接到MFC常規DLL的區別:前者使用MFC靜態鏈接庫生成的DLL文件長度,一般不採用這種方式的長度後者MFC動態鏈接庫,生成的DLL文件動態鏈接到MFC的規則DLL函數的輸出應該從以下語句:
AFX_MANAGE_STATE(AfxGetStaticMoleState())/ /這句話是用來切換MFC模塊狀態
MFC擴展DLL特性被用於創建派生類中的MFC DLL只用MFC類庫編寫的應用程序。擴展DLL的規則DLL,它不具有CWinApp繼承類的對象,編譯器默認情況下,DLL的DllMain()作為DLL的初始化入口函數,就可以初始化函數,代碼如下:
/> BOOL WINAPI APIENTRY的DllMain(HINSTANCE hinstDll,DWORD原因,LPVOID flmpload)
{
開關(原因)
{
...... ......... / /初始化代碼;
}
回歸真實;
}
的參數hinstDll的存儲的DLL的句柄原因參數指定調用函數的原因,lpReserved系統保留的參數。隱式鏈接是一個非零的值,一個明確的鏈接值是零。
動態鏈接庫調用
動態鏈接庫調用可分為兩種:一種是隱式調用,調用。
調用方式生成所需要的動態鏈接庫,在使用DLL的LIB文件添加到應用工程時間的函數,隱式調用,只需要解釋後,直接由函數名來調用DLL輸出功能,方法和程序,在該函數中被調用。隱式調用不需要調用載入庫(),和自由的圖書館()。程序員創建一個DLL文件,鏈接器會自動生成相應的LIB導入文件。此文件包含每個DLL導出函數的符號名和一個可選的識別號碼,但不包含實際的代碼。 LIB文件作為替換DLL文件被編譯到應用程序項目。
當編譯應用程序的程序員隱式調用的應用程序,調用函數與LIB文件的導出符號相匹配,這些符號或標識號被寫入到LIB文件中還包含相應的DLL文件名生成EXE文件中。 (但不是完整的路徑名),鏈接器也可以存放在裡面的EXE文件。根據此信息,當應用程序運行時需要載入的DLL文件時,Windows載入的DLL動態鏈接到DLL函數,然後通過符號名或標識號。所有的應用程序調用的DLL文件將被載入的應用程序EXE文件載入到內存中。
2,顯式調用
要求的方式或MFC應用程序中使用載入庫AfxLoadLibrary明確提出動態鏈接庫調,並指定該DLL的路徑作為參數。 LoadLibary返回HINSTANCE參數,使用這個參數,當應用程序調用GetProcAddress函數。當完成導入的動態鏈接庫,然後使用GetProcAddress()來獲取要引入的函數的符號名或標識號轉換為地址的DLL的功能,那麼你可以喜歡使用的應用程序自定義要調用的函數的功能介紹。在退出應用程序,應提供的免費圖書館或MFC AfxFreeLibrary可釋放動態鏈接庫。
顯式地調用允許程序員來決定何時載入或不載入DLL文件,在操作系統載入應用程序所有不必要的應用程序引用的DLL載入到內存中,只要一個DLL,然後將其載入,這樣就可以減少使用的應用程序在最初的負載和內存消耗的時間。在這個過程中載入的DLL,Windows將按照搜索順序來定位DLL:
(1)包含EXE文件的目錄;
②進程的當前工作目錄; >
③Windows系統目錄中;
④Windows目錄;
⑤列在Path環境變數中的目錄。摘要
在Windows操作系統中使用的動態鏈接庫(DLL)有許多優點,最重要的一點是多個應用程序,甚至用不同語言編寫的應用程序程序可以共享一個DLL文件,實現資源的「共享」,大大降低了執行應用程序代碼,更有效地利用內存使用DLL的另一個優點是作為一個獨立的程序模塊,封裝性,獨立性,當一個DLL文件軟體需要升級,開發人員只需要相應的DLL文件DLL中的函數可以改變,如果你不的參數,程序代碼並不需要重新編譯。在編程時,軟體開發和維護的效率大大提高,這是非常有用的。
❸ VB MFC
首先要命明確3個概念,
1、Visual Basic(VB)是由微軟公司開發的包含協助開發環境的事件驅動編程語言。它源自於BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(RAD)系統,可以輕易的使用DAO、RDO、ADO連接資料庫,或者輕松的創建ActiveX控制項。程序員可以輕松的使用VB提供的組件快速創建一個應用程序。VB的中心思想就是要便於程序員使用,無論是新手或者專家。VB使用了可以簡單創建應用程序的GUI系統,但是又可以開發相當復雜的程序。VB的程序是一種基於窗體的可視化組件安排的聯合,並且增加代碼來指定組建的屬性和方法。因為默認的屬性和方法已經有一部分定義在了組件內,所以程序員不用寫多少代碼就可以完成一個簡單的程序。過去的版本裡面VB程序的性能問題一直被放在了桌面上,但是隨著計算機速度的飛速增加,關於性能的爭論已經越來越少。
2、Microsoft Visual C++是Microsoft公司推出的開發Win32環境程序,面向對象的可視化集成編程系統。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發多種程序等優點,而且通過簡單的設置就可使其生成的程序框架支持資料庫介面、OLE2,WinSock網路、3D控制界面。
它以擁有「語法高亮」,IntelliSense(自動編譯功能)以及高級除錯功能而著稱。比如,它允許用戶進行遠程調試,單步執行等。還有允許用戶在調試期間重新編譯被修改的代碼,而不必重新啟動正在調試的程序。其編譯及建置系統以預編譯頭文件、最小重建功能及累加連結著稱。這些特徵明顯縮短程式編輯、編譯及連結的時間花費,在大型軟體計劃上尤其顯著。
3、微軟基礎類庫(英語:Microsoft Foundation Classes,簡稱MFC)是一個微軟公司提供的類庫(class libraries),以C++類的形式封裝了Windows API,並且包含一個應用程序框架,以減少應用程序開發人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內建控制項和組件的封裝類。
Visual C++包含MFC應用程序向導,可用於兼容MFC的應用程序[1]。在ATL程序中也可以手動添加MFC支持[2]。在向導中有各種選項以定製生成的程序的功能,例如界面風格、語種、資料庫開發支持、列印支持、自動化支持、ActiveX支持、網路支持、基於HTML的幫助文檔支持等等。
在COM開發方面,相對於ATL來說,MFC的組件比較大,代碼不夠短小精悍,但是支持的功能也比較多,例如有對ActiveX Document的封裝類[3]。
在界面開發方面,MFC提供對消息循環的封裝,使用消息映射來避免虛函數的開銷。MFC也提供常用Windows通用控制項的封裝類。
MFC擴展DLL的介面使得MFC程序可以直接調用MFC擴展DLL中的MFC類。MFC也支持在標准DLL中被使用。
綜上,這三者的關系,VB,VC屬於IDE(集成開發環境),在VC中可以開發基於MFC類庫的程序,還可以開發基於windows SDK的應用程序,等等。
不知以上是否能夠讓你有所了解。
你要選擇的話,不光是要考慮開發工具的可操作性,應該還要考慮你所應用的系統的系統性,兼容性,簡單來說VB入門易上手快,VC需要相當C++的基礎,MFC的話就還需要MFC的基礎了,你懂的。
❹ 基於MFC在DLL中繼承CWnd類後的調用問題
樓上的,你拷貝一大堆,不知道你在說什麼。。。汗
創建含有基於MFC擴展的類的DLL,需要使用 Mfc Extension Dll 動態庫
看看你創建DLL工程時候的設置
集中MFCDLL的差別一個是宏定義,一個是入口函數。主要目的是為了保證資源句柄的正確切換,和LIB的鏈接。
修改配置來的麻煩,你重新構建一個DLL工程,然後把先前的文件都加進去即可
❺ Windows編程與mfc有什麼區別
一、依靠軟體不同:
1、Windows編程:
很多軟體都可以編程。具有代表性的計算機語言有Java、BASIC、C、C++、VB、VF、SQL。
2、mfc:
以C++類的形式封裝了Windows API,並且包含一個應用程序框架。
二、作用不同:
1、Windows編程:
編程的目的是為了使計算機能夠理解人的意圖,使得計算機能夠根據人的指令一步一步去工作,將需解決問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,完成某種特定的任務。
2、mfc:
利用mfc可以編輯,編譯,調試,而不是使用多種工具輪換操作,靈活性較大。
(5)mfc擴展編程擴展閱讀
MFC中最重要的封裝是對Win32 API的封裝,因此,理解Windows Object和MFC Object (C++對象,一個C++類的實例)之間的關系是理解MFC的關鍵之一。
高級語言按照一定的語法規則,由表達各種意義的運算對象和運算方法構成。使用高級語言編寫序的優點是:編程相對簡單、直觀、易理解、不容易出錯;高級語言是獨立於計算機的,因而用高級語言編寫的計算機程序通用性好,具有較好的移植性。
❻ 我是學VC6.0的
VC6從入門到精通-基礎篇 VC6從入門到精通-VC與INTERNET Visual C++ 使用指南
Visual C++知識庫 Visual C++ MFC入門教程 Visual C++ 6 參考大全
跟我學 VISUAL C++ 6.0 Visual C++ 6.0語言參考手冊 Visual Lisp開發人員手冊
Visual C++ 從入門到精通 Visual J++ 6.0 WFC 類庫手冊 Visual InterDev 從入門到精通
Visual C++ 6.0用戶開發手冊 VC編程指南 VC++6.0 類庫參考手冊
VC++database編程大全 VC6.0 運行庫參考手冊 Visual C++6.0運行庫參考手冊
VC++6.0模板庫手冊 VC++面向對象入門 VC新手學堂
Visual C++ 6.0預處理器參考手冊 VC5.0開發人員參考手冊 VC6中文版程序員開發指南
Visual J++ 6.0 WFC類庫參考手冊一 VC6 模板庫參考手冊 VC++編程指南
Visual J++ 6.0 WFC類庫參考手冊二 VC6.0 MFC類庫參考手冊 VC6從入門到精通-VC與資料庫管理
MS VC++ 6.0 MFC類庫參考手冊 一 MS VC++ 6.0 MFC類庫參考手冊 二 走進Visual C++
實例篇
Visual C++ 實踐與提高-圖形圖像編程篇 Visual C++ 數字圖像處理 VC-MFC編程實例
Visual C++實踐與提高_環境剖析IDE篇 Visual C++程序設計:基礎與實例分析 Visual C++ 6.0實例
Visual C++課程設計案例精編 Visual C++ 6.0開發與實例 VISUAL C++擴展編程實例
Visual C++6.0高級編程技巧與實例 VC++擴展編程實例 Visual C++編程技巧與範例
戰勝Visual C++必做練習50題 Visual C++6.0編程與實例解析 VC-MFC擴展編程實例
MFC資源大全 精通Visual C++ 6.0 Visual C++程序模塊集錦
Visual C++_Turbo C串口通信編程 Visual C++ 6.0應用編程150例 Visual C++ 6.0實例教程電子教案
教程篇
MFC Windows程序設計 Visual C++網路通信協議分析 VC6.0資料庫編程
Visual C++ 學習教程 Visual_C++_新起點—6.0實用教程 Visual C++ 6-24學時學習教程
Visual C++ 6.0 21天自學教程 VC++網路教程 Visual C++ MFC 簡明教程
VC 資料庫編程三部教學 Visual C++ 6.0 資料庫編程大全 VC新手學堂簡明教程
Visual C++ 6.0 開發寶典 Visual C++ 6.0 教程 Visual C++ 6.0 高級編程
VC++6.0培訓教程 Visual J++ 6.0 即學即用 Visual C++與面向對象程序設計教程
Visual C++6.0高級開發教程 Visual C++.NET 寶典 Visual C++5.0 程序設計
技術與應用
VC++6.0 用戶界面製作技術與應用實例 深入淺出WINDOWS MFC程序設計 Visual C++ 角色扮演游戲程序
Visual C++6.0程序設計提高篇 VC++編程資料 VC++ 函數經典
VC++與Matlab混合編程的快速實現 Visual C++ 5.0易學活用 VISUAL C++ 設計WIN32應用程序
Visual C++入門與應用 Visual C++6.0開發寶典 Visual C++6.0技術內幕
VC++6編程方法 深入VC編程內幕 VC編程經驗總結
用VC++編寫USB介面通信程序 用VC開發CGI 瘋狂VC技巧集
VC6開發寶典 Visual C++經典 Visual C++ 6 輕松進階
VC編程常用捷徑 MFC技術內幕 VC深入編程
參考資料:www.chinaitlab.com
❼ 用vc++實現usb介面通信編程的一般步驟
我來說下我做過的USB通信,我沒有做過DSP跟上位機的通信,我只做過ARM類的STM32跟上位機的數據傳遞,雖然做過但是也不是很 懂,只是略知一二,我來說說我怎麼做的吧,我是這么實現的:
USB是個很復雜的協議,你如果完全搞懂,我估計沒有幾個月專心鑽研是不行的,但是如果只是能實現你的這個功能,我估計不是很復雜。
首先來說說USB通信:
USB通信傳輸方式分為四種:控制,中斷,批量,同步傳輸四種,這個你可以看看網上資料,然後我用STM32通信,因為數據量不是很大,我用的是中斷傳輸方式,但是DSP數據量應該會比較大,不知道中斷傳輸行不行,但是一般問題不大。
傳輸方式說完了,再說說USB設備類型,你每次插usb設備到電腦上的時候就會有提示,這是一個什麼設備,USB設備類型就是說的這個意思,是滑鼠還是鍵盤還是別的什麼的,如果你選用標準的類,你就不用自己寫上位機(PC)的驅動程序,但是如果不用標準的類,就是用自定義的類就要自己寫上層的設備驅動程序,就是所謂的DDK,WDM,WDF什麼的,你沒寫過這方面的還真有點棘手,但是也不一定要寫驅動程序,你可以試試有個類叫HID類,這個類在USB通信的時候用的還挺多的,不過這個類也有缺點,這個地方還要說一點,USB還分低速,全速,高速三種,不太了解DSP,不知道他支持什麼模式,但是USB2.0的全速應該至少可以支持的。
USB2.0全速模式HID用中斷方式每秒最多可以傳輸64KB的數據,不知道能不能達到你的要求,但是我估計一般問題不大了,如果你這歀DSP能支持高速模式,每秒用這種方式可以傳輸高達22MB的數據,這個速度一般問題不大了。
你可以照著我說的思路,去網上搜搜人家寫好的程序,肯定有人做過DSP的USB通信,然後你按照自己的要求改一改,主要應該是USB的設備描述符部分要自己修改,然後可能還要根據自己的電路改改配置什麼的,上位機軟體網上有源代碼的多的是,然後自己摸索摸索,我估計你要是編程水平還可以的話,只是摸索USB,一兩個星期完全沒有問題,祝你好運!
❽ MFC編程中如何實現在電腦擴展模式下的雙屏顯示
這跟mfc沒關系,是電腦設置
設置擴展模式即可
❾ 在一個MFC擴展DLL中創建一個child類型的NONE Boder的對話框,並在改對話框中假如工具欄。在外部調用時失效
使用MFC擴展dll時要注意,導出函數時要切換資源,加上這句話
AFX_MANAGE_STATE(AfxGetStaticMoleState());
❿ 什麼是MFC編程
MFC(Microsoft Foundation class)微軟基本類(庫),它是一個面向對象的應用程序架構。程序員利用它可以很方便搭建應用程序框架。
MFC結合了面向對象的編程技術和WINDOWS消息驅動的編程技術,並封裝了WIN32API,其設計好處是:消除了WIN32API的復雜性,封裝了WIN32API,統一了程序的概念,而且可擴展。
MFC實際上是微軟提供的,用於在C++環境下編寫應用程序的一個框架和引擎。VC++是Windows下開發人員使用的專業C++SDK,MFC就是掛在它之上的一個輔助軟體開發包。
(10)mfc擴展編程擴展閱讀
MFC編程優勢
面對底層程序,它能很輕松的與Windows API或驅動程序結合,就是在自己的代碼中直接使用API函數,而API和驅動程序的資料都是以C語言為基礎的,這使得VC程序員能夠更輕松的使用Windows API。
這樣造成了一個很有意思的現象,即入門時VC程序員要付出更多的努力來學習,但是一旦掌握後,開發其他領域的程序或使用第三方軟體時,如工業控制類的程序,由於底層的程序都是用C語言編寫,反倒是VC程序員能夠更快的掌握該領域的編程技術。而很多其他的編程語言甚至找不到相關的資料。
這就說明VC(MFC)實際上是一種入門困難,但是擴展學習卻很輕松的語言框架。