首页 生活 百科 科技 职场 学习 宠物
当前位置: 首页 > 生活 >

mfc是什么意思 神奇的赞助商

237次浏览     发布时间:2023-04-14 12:00:51    

不过呢,也有一个让人热血沸腾的好消息:小编终于抱到了一个神奇赞助商的大腿,终于不用再纠结1万阅读是1块钱还是2块钱的小事情了。

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



什么是MFC

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



CString

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

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



反人类的方法名

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

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

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



JSON

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



粗糙的界面设计

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



其它

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

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

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

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





为什么凳子中间有个洞(公交座椅上为什么有一个小洞?)

房子为什么贵得这么离谱(房价暴涨背后的真正动因)

为什么结霜之后的水果更甜(霜打的柿子为什么更好吃?)

多肉为什么会出现腐烂掉叶(多肉叶子发黑腐烂怎么办)

为什么水是白色浑浊的(自来水为什么会发黄泛白甚至浑浊不堪?)

为什么移栽树木时要剪掉一些枝叶?