MFC中运行时出现这样的错误,求大师解答!谢啦

MFC中运行时出现这样的错误,求大师解答!谢啦,第1张

你错了,第一个全局函数,不是全局函数因此才会出差

UINT SerchThread(void Pp )//全局函数,不在h里申明

{

CMy2009314114Dlg p = (CMy2009314114Dlg)Pp;

}

AfxBeginThread(SerchThread,this);。

很大的文件, 如果楼主没什么时间去研究校验 丢包重发 等等功能的话 就直接用CSOCKET 然后用TCP 直接连接就好咯

C/C++ code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

void SendFile()

{

#define PORT 34000 /// Select any free port you wish

AfxSocketInit(NULL);

CSocket sockSrvr;

sockSrvrCreate(PORT); // Creates our server socket

sockSrvrListen(); // Start listening for the client at PORT

CSocket sockRecv;

sockSrvrAccept(sockRecv); // Use another CSocket to accept the connection

CFile myFile;

myFileOpen("C:\\ANYFILEEXE", CFile::modeRead | CFile::typeBinary);

int myFileLength = myFileGetLength(); // Going to send the correct File Size

sockRecvSend(&myFileLength, 4); // 4 bytes long

byte data = new byte[myFileLength];

myFileRead(data, myFileLength);

sockRecvSend(data, myFileLength); //Send the whole thing now

myFileClose();

delete data;

sockRecvClose();

}

以下是客户端代码 void GetFile()

{

#define PORT 34000 /// Select any free port you wish

AfxSocketInit(NULL);

CSocket sockClient;

sockClientCreate();

// "127001" is the IP to your server, same port

sockClientConnect("127001", PORT);

int dataLength;

sockClientReceive(&dataLength, 4); //Now we get the File Size first

byte data = new byte[dataLength];

sockClientReceive(data, dataLength); //Get the whole thing

CFile destFile("C:\\temp\\ANYFILEEXE",

CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);

destFileWrite(data, dataLength); // Write it

destFileClose();

delete data;

sockClientClose();

}

WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI

Framework也只能算是一次行为艺术,这个思路下继续发展就会变得没法用了,比如 代码过于复杂,编译太慢,出错不好调试等问题难以解决。

而且封装得也不完全,还是随处可见 HWND HDC之类的东西。

用途主要是写一些很小的程序,或者作为其他UI框架的后端实现部分,比如我写过一个小框架用来做安装卸载程序,非常小,其中创建管理窗口部分是用WTL的。

MFC

是更高级点的Win API封装,比WTL封装彻底,很难见到HWND

HDC了,也提供了不少实用工具类,比如高级控件,泛型容器,IO访问,网络协议等。除此之外,还提供了一些基本框架,比如

Document/View,这就是个MVC的简化版本,只有MV,但是对于数据的管理,消息的传递等又没有什么约束,导致Doc/View被用得乱七八

糟。尤其是对事件处理的模型,消息映射是功能简陋,而且容易出错的方式,唯一优点是性能好。 从VC++

1X就有MFC了,那时整个UI界的设计思想都比较落后(除了Apple),MFC又背负了沉重的兼容性包袱,比如vc++

152的MFC程序到了vc2003稍加修改都可以编译,导致MFC后期没有什么发展,就是沿着老的思路完善了些细节,添加了些组件,但是根本性的设计

问题没有改进。

GTK,这个吃了语言的亏,用C写面向对象实在是痛苦,虽然在思想上比MFC要先进了些,但是写出来的代码比MFC要罗嗦很多了。相比MFC,多了Layout的概念,事件处理上有了Signal/slot,虽然用起来很麻烦。

wxWidgets,

这个基本就是个跨平台的MFC,对各个平台的差异做了抽象,实际上后端大多还是用平台原生的API实现,好多控件都是直接用系统原生的。有

wxWidgets for

GTK+的版本,后端就是GTK+,wxWidgets就是一层壳。这也是wxWidgets的优点,它编译出来的程序发行包比较小,性能也不错。

以上这些就是上世纪90年代的UI Framework技术水平了,至今它们也依然没有太多进步。

下面来谈谈21世纪的技术。

Qt,

虽然它也是上世纪90年代出现的,但是它在21世纪有了长足的进步。应该说它的起点就比较高,一开始就定位跨平台,而且不满足于简单封装系统API,而是

要自己创造出一套完整的API和框架,甚至要代替系统API,所以不仅仅是做UI,而是涉及到了APP开发所用到的所有东西,包括网络,数据库,多媒体,

脚本引擎等。signal/slot是Qt发明的,这是事件通知模型里C++语言的最佳实现了,甚至我都觉得这该写进C++标准,估计C++委员会的老顽

固们是从不写GUI的。

早期的QT也是没有DirectUI的概念的,每一个QWidget都对应一个原生窗口,从Qt44开始,只有顶层

QWidget才是原生窗口,而Child Widget是Alien

Widget,只是个抽象的图层不对应原生窗口,这就实现了DirectUI的概念,很多图形效果也就变得可能了,比如窗口层叠透明效果。

在48后实现了QPA(Qt Platform Abstraction),这就使移植Qt变得很容易,目前Qt是支持平台最多的框架没有之一。

由于早期授权的问题,Qt对于开源社区不是很友好,导致推广不太顺利,直到它改成了LGPL方式,如果Qt能早点想开了,恐怕就没有wxWidgets的生存空间了。

Qt的缺点也是有的,就是太大,不过可以自己剪裁,我可以把QT库剪裁到发行包压缩后25MB。

WPF,

微软在Win

Form的思路上走到死胡同后,终于痛下决心用正确的方法开发UI库了。21世纪的UI一定是定义出来的,绝对不能是代码写出来的,所以有了XAML这个

强大的定义工具,不但可以定义UI布局,还包括图形动画效果,消息响应方式等。配合C#这种优秀的语言,更是如虎添翼。但是问题也很明显,就是过于庞大,

不仅开发时要用到庞大的IDE和设计工具,发行的安装包也十分巨大,所以目前还是很少有人拿他写通用软件客户端的,大多是做企业项目时写专用客户端。

大概4-5年前吧疼讯曾经用WPF写了个,但是只实现了基本功能就已经比C++客户端大好多了,而且运行缓慢,主要是太吃内存,而且那时WPF的优化还不充分。

最后我想补充下真正的UI库之王,cocoa。

Apple的成功有很多原因,其中之一就是cocoa,cocoa理念十分先进,而且出来得早,我都怀疑Qt和WPF有不少思想都是借鉴cocoa的。

定义式的UI,用xib就可以定义UI的绝大部分细节,而且提供所见即所得的可视化设计工具。

严格的MVC,而且定义非常清晰,分工明确。

signal/slot,虽然不叫这个名字,但思想就是,而且真的是拖动鼠标就能connect。

提供了ARC,闭包和反射,给UI开发带来巨大的便利性,当然这得益于Objective-C这个语言。

再补充下 Borland的OWL和VCL。

我是从Borland C++30和Delphi 10开始用的,那时的Borland看来很有前途的,可惜后来一系列决策失误导致现在这个公司几乎消失了,同学们不要再往这个坑里跳了。

OWL曾经和MFC是竞争对手,设计思想也差不多,个人感觉OWL的API设计更优雅一点,但是在市场上OWL被MFC彻底击败。

Delphi

是神作,它在RAD(快速应用开发)领域长时间没有对手,直到BS架构取代CS架构。Delphi的特点就是简单、开发快,单纯就写个基本可用的应用来

说,可能至今都没有比他更快的,但是缺点就是丑,基本大多数Delphi应用都是一大堆控件堆积在一起,很不美观,另外由于Pascal语言的限制无法和

现有大量的C/C++代码融合。虽然后来有C++

Builder,但是Builder里简单和快的优点也消失了。Borland的C++编译器越做越差,导致后来开源项目都不太愿意兼容这个编译器了。

VCL准确地说不是UI库,而是一套组件接口规范,类似COM ActiveX。delphi和C++builder都是基于这个规范构建了基础库。

UI库是个很大的话题,够写好几本书来探讨的,我这里就是随便写点自己的感受。

单纯讨论每个库的优劣是没有意义的,而是要放到具体的应用场景里来看,每个库都有自己擅长的场景。

如果仅在Windows下,追求程序小巧,用WTL,不足的地方自己实现去吧,但是视觉效果就呵呵了。

如果可以大一点,还要好看点,那就Qt。

如果完全不在乎大小,只要视觉效果华丽,就用WPF,如果把开发工具价格也考虑进来,那么土豪才会选WPF呢。

MFC就是个鸡肋了,除非你现有的工程师不会用别的,或者有历史遗留代码要保持兼容。

如果要求跨平台,那么就用Qt,wxWidgets和GTK+跟现在的Qt比起来没有什么优势了。

如果是iOS Android,那么最好用原生UI库,除非你写游戏。

mfc理财平台是骗局。

该平台加入门槛较低,只要支付一定的费用就能注册成为会员。有意加入者需缴纳700元、1400元、3500元、7000元、14000元、35000元不等的会员费才能获得会员资格。

该平台对外宣称投资MFC能通过买卖虚拟币“易物点”盈利,一年后利润可达投资额的一倍多。陈朋从这一平台中萌生了发财的绝妙想法,他充分利用这一平台的特性,架构了一个庞大的传销网络。

扩展资料:

浠水侦破mfc理财骗局:

2016年1月份以来,男子吴某到浠水县工商局反映其亲属童某最近一直向其推销一款理财产品,并许诺其只要购买该产品,会有高额回报,可以凭此产品致富发财。吴某发现童某行迹很反常,他怀疑童某疑似陷入了传销。

县工商局执法人员将这一线索反馈至浠水警方后,浠水县公安局经侦大队民警立即展开调查。经过2个多月的调查摸底工作,警方进一步掌握了一手线索,发现在浠水县城北一酒店的518室内,经常有大量人员聚集,人员进进出出,室内有授课用的黑板和多台电脑、点钞机、验钞机等。

不时能听到房间内传出的授课声音,和多媒体设备上还有PPT课件播放介绍一款“MBI、MFC”游戏理财项目。警方初步判定,这里很有可能是一处传销窝点。2016年3月22日,浠水警方开始立案侦查。

经过缜密侦查,民警确定了这是一起涉嫌组织、领导传销活动的犯罪案件,且是一起有组织、有分工的团伙案件,涉案人员较多,涉案金额巨大。为确保取得大量一手证据,成功将犯罪嫌疑人绳之以法。民警开展了大量走访摸排、调查取证工作。

最终查明:这起案件是一起以推广“MFC”理财产品为幌子,用虚拟货币买卖交易套取钱财的新型网络传销案件。

参考资料来源:人民网-浠水侦破一起特大网络传销案 涉案价值达五千万

MFC的消亡是必然的,但没有谁能为它的消亡定一个时间,微软也不行。

微软在最新版的VS2014中依然支持MFC编程,而现实中有大量使用MFC的软件仍然在广泛应用。

客观的说,MFC不适合现在编程的大潮流,不支持手机,网络支持不好,框架在20年的时间里没做出本质改变,界面样式也很一般,这些都是它的缺点。

但目前,还没有哪个主流软件可以完全的取代它,包括微软主推的WF,包括QT等等,都无法完全取代MFC在windows平台的作用,毕竟这个有20年的广泛应用基础,而且确实对熟练的人来说,做一个小程序相当的快捷灵活。

如果说是初学,那么它不是首选(学校要求的另说),因为消亡没人能肯定,但下坡路是公认的。

以上就是关于MFC中运行时出现这样的错误,求大师解答!谢啦全部的内容,包括:MFC中运行时出现这样的错误,求大师解答!谢啦、MFC怎么实现通过网络传送文件、MFC,WTL,WPF,wxWidgets,Qt,GTK 各有什么特点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9493442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存