❶ 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)实际上是一种入门困难,但是扩展学习却很轻松的语言框架。