mfc char数组转cstring_坑爹的MFC,神奇的赞助商

大家好,今天是2月13日,情人节的前一天,小编祝朋友们单身快乐。这几天小编一直在水深火热之中,所以文章也没有更新,在这里说声抱歉了。不过呢,也有一个让人热血沸腾的好消息:小编终于抱到了一个神奇赞助商的大腿,终于不用再纠结1万阅读是1块钱还是2块钱的小事情了。

接下来还是说水深火热的事情吧,小编为了解决一个粉丝朋友的MFC编程上的问题,可谓是绞尽了脑汁又挖空了心思,下面就来看看这个坑爹的MFC。

f7758afdac5e0b22cf2e2b65ca086d01.png

什么是MFC

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

824c85d8f927234753e2d66c59519eea.png

CString

区别于std::string,MFC搞了一个CString出来。这玩意儿太小众了,当您在网上搜一搜c++代码片断准备copy的时候,会发现全都是std::string的代码呀,根本没人写CString的版本。

于是每次从网上copy了代码,要先做一次CString到std::string的转化;代码结束的时候,还要再做一次std::string到CString的转化。

e72fe5e8f428321e39053287cdc27853.png

反人类的方法名

MFC里面的方法名实在是让人叹为观止无力吐槽了。比如有一个label控件(或者称为static text),那么给它赋值的方法怎么着也应该从下面选一个吧,比如:setText, setData, setValue之类的, 但是你猜MFC里面给label赋值的方法是啥? SetWindowTextW,对,后面还有一个莫名其妙没头没脑的W。

再比如,一个Modal类型的对话框,当用户点击了关闭按钮时,应该会调用哪个方法? 凭直觉或者良心来说,都应该是onClose或者onDestroy吧? 可MFC里面调用的方法偏偏是OnCancel。

最后再说一个更反人类的方法名,就发生在添加菜单Menu事件的时候,一个菜单项的默认事件处理函数名称竟然是On32777(),您没看错,这是一个完全没有任何语意的方法,要是不加注释您根本不知道它会不会是一个处理邮编的方法。

59fbb6fa69cc79648cebcb9306907373.png

JSON

默认情况下,c++是没有办法理解json这种类型的数据的。于是,小编在网上找到了一个叫做jsoncpp的库,使用的时候发现它只支持stringstream,不支持char*,也不支持std::string... 于是先得把std::string里面保存的字符串放到std::istringstream里面,然后再 >> 到Json::Value里面,才能实现JSON字符串的解析。 这个作者设计接口的脑回路实在是让人感觉不可捉摸高深莫测。

a9d026108954e1a835746fd830755246.png

粗糙的界面设计

您能相信么,在它的界面设计窗口里面,竟然不能直接修改控件上面的字体大小,更不要提颜色了。 必须写代码才能实现这么一个常用且看起来无比简单的问题,用惯了QT的小编当时真是佩服的五体投地心悦诚服。

894f1cd8c46990f8f192a96c1cd90d93.png

其它

在与WEB通信时,还有很多想对MFC吐槽的,就不展开了,先罗列在这里了。

首先,WEB服务端一般是UTF-8的字符集, MFC里面可以认为是GBK的,于是要反复地转来转去,转来转去,转得人头晕。

其次,urlencode这么一个基础的功能啊,竟然都不封装一下。

最后,发个http请求,要写几十行代码,实在是让人忍不住加入python的怀抱啊。

e7ab134421332f96ac888c2e45ffe8af.png

活动

最后插播赞助商的一个赞助活动,此商是做程序代写的,私信小编可以免费领取此商的无门槛立减50或100元优惠劵​一张,祝朋友们用的开心。

附上正确的使用方法:

先聊需求,然后砍价​,砍​完价之后,再说起您有咱这儿的50元券,给他一个出其不意的打击感。

5809adcb4b77b0ff48ffeb3a6f267bc6.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值