新年第一帖,一点问题,一些随想

      现在是1月5日2点左右,昨天晚上从小i的网站上下载了MSN机器人开发的SDK,准备做一个有用的MSN机器人程序,捣鼓了半天,总算是把登陆弄妥了,本来以为直接调用Login函数得到的返回值可以用来判断登陆是否正确,但是结果发现这是不准确的的,你必须等到OnLogin这个回调函数被调用的时候才能确切的弄明白,在这个函数的参数里会给出服务器的反馈信息,但是问题就是出在显示这些信息上,本来我打算给机器人的主类定义一个CWnd *的成员变量,再定义一个ShowText函数(这也是官方示例中给出的方法),这样我只要在主视图(我用的是CFormView)创建好以后通过GetDlgItem获取上面的静态文本框窗口的指针,然后用它来设定机器人类的CWnd *成员就可以了,接下来应该只要通过该指针调用GetWindowText和SetWindowText就可以获取/设定主视图静态文本框的内容,但是往往做编程的工作就是这样,在你脑袋里上认为没有问题的逻辑 ,在某些情况下就不是那么回事了,结果我一在ShowText中调用这两个函数就出错,而后我又试了用SendMessage的方法发送WM_GETTEXT消息和WM_SETTEXT消息,但是结果也无二样。从这里可以肯定的说,在一个MFC程序中跨越类的边界调用窗口类其实真的不是一个好办法,好几次本人都无一例外的中招了。所以接下来我把该变量改成了一窗口句柄,果不其然的,GetWindowText和SetWindowText顺利执行了,OK,一个问题解决了。

      接下来就是显示消息的问题,小i的SDK库的所有函数无一例外的采用了标准的ANSI编码而没有用UNICODE,但我在创建程序的时候并没有注意到这一点,忘了把默认的UNICODE支持点选掉,所以这又成了一个痛苦之源,在ShowText函数中被搞的很麻烦,最后我的解决办法是,一律跟随SDK库的标准,因为这个库我改不了,但是程序我可以改,所以把所有的Windows字符串都设定成了C字符串,然后用了两个std::string解决掉。

本来今天的打算是做到能给机器人用户发送消息,但是看来是来不及了。

当然,从这件事里面可以看出一些问题,

首先,我发现自己的C和C++基础不是那么牢固,离了MFC和CString居然就不知所措了,但是貌似这也是很多VC/MFC程序员的通病,讲起API函数,实现一个程序功能什么的可以讲的头头是道,但是稍微一碰到这种跟Windows开发不那么亲热的东西,就那么稍微深入一点的应用,很多人就傻了眼,当然,这也说明,其实学VC并不需要掌握多少高明的C++技巧,这也就是MS和他的MFC框架被很多人唾弃的地方,因为MS总希望去开创自己的标准,即便这种标准与大流格格不入,MS的算盘就是自己制定标准,然后让所有开发人员在它限定的框架下成为维持它辉煌的一颗螺丝,所以它会开放IE的接口,也会开放Office的接口,但是每一个使用过的开发人员都知道,如果你是一个C++程序员,哪怕是一个C++的老手,但是从未接触过Windows平台的开发,那么再刚进入这个领域时,你也一定需要有很长一段时间的披荆斩棘才能适应这种环境,因为每一个变量定义,每一个类的定义,每一个API的调用形式,都有深深的MS风格,相信这是每一个Windows开发人员都深有体会的事情。MS就恨这C语言和C++语言为什么不是它自己发明的,为什么不是属于它的带有版权的东西,所以MS就一定要用自己的办法去转变它,于是像MFC,.NET,C#这样的东西就逐渐的涌现出来了,MFC已经经证明了它是Windows平台下应用最广泛的C++类库而绝不是Windows平台下最符合C++发展潮流的C++类库,MS也压根儿没打算让它更具有符合C++潮流的味道,所以:“好的C++程序员必然是一个写类的高手,而一个好的MFC程序员必然是是写派生类的高手”-这就是我得出的结论。而对于MS来说,这就意味着-一切尽在掌握。

这两天一直在看候的“深入浅出MFC”,一本n老的书了,书是很不错的,刚进入这一行的时候,这本书看起来甚是吃力,这几天就像看小说一样 ,很多以前云里雾里的东西也逐渐明了了,感觉不错,虽然早就应该对它有了解了。说来惭愧,自己在这行都干了有两年了,到现在为止却也没做过什么让自己感到特别自豪的东西,这真是让我感到很shame的一件事,所以只好抓紧现在的每一分每一秒,把过去两年因为客观主观原因造成的青春流失赶快补上。

其实我也知道很多VC的高手C++应用的并不得心应手,这些人里甚至不乏VC 的MVP,但是至少对于我和大多数人而言,经常巩固一下基础还是很有必要的,尤其是在Windows平台上直接的C/C++ 编程应用机会不多的情况下,如果不是那些围绕着c/c++生活的Linux程序员和搞嵌入式的兄弟们,确实需要多花点时间去了解一下。

这就是现在的生活,一切好像才刚刚开始,如初生的世界一般让人期待。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值