windows编程新手常见问题


windows编程新手常见问题
2011年05月06日
  一.MFC两个对话框之间如何传递数据。
  首先,这里有一个理解误区。一开始就把自己绑死在对话框上了。其实,在MFC里,对话框也是一个类。既然如何,你只需要考虑两个类之间如何传递数据就OK了。那就可以简化了(假设为类A和类B):
  1.A与B是父子关系。这时候。应该只需要从父亲向儿子传递参数。如果有回传,可以使用回调或者返回值。
  2.A与B是平级关系。这时候。需要让他们共同的父亲来负责传递。实际应用中。可以使用接口来实现。即A与B互相拥有对方的接口,注意是接口,不是实现。
  二。不喜欢初始化变量。
  很多新手的代码。是这样char buffer[255];
  然后就把这个buffer传递给一些api操作。当api成功时,这里一般不会有问题。里面的字符串会是空结束符的。但当api失败时。这个字符串可能没有空结束。然后再用api来操作buffer时。崩溃。
  三。不喜欢判断api或者函数的返回值。
  一个函数有返回值,除非设计者秀逗,不然返回值都是有意义的。如果只是按文档抄一个函数调用下来。小学生都会。程序员,要学会判断返回值。
  四。不清楚C库的字符串操作函数特性。
  为什么只说字符串?因为常用呗。,难道不是?
  windows有提供一些字符串操作函数。c库也有提供。但所有c库的字符串函数都不作安全检查的。即:只能接受合法,有效的参数。非法参数将导致崩溃。但大部分windows api可以接收空指针甚至无效指针。不信?用strcpy和lstrcpy试一下。传入空指针。前者是c库的,一定崩溃,后者是windows api.啥事没有。
  五。写c++代码还是喜欢用c的格式化sprintf。
  这也算问题吗?我认为算。why?
  首先。更早的检查出错误,如果你用sprintf或者wsprintf。写错了。少写了参数。编译时不会有问题。如果这段代码没执行。那运行时也没事。但如果用c++的流格式。编译时就会发现错误。相信我。更早的发现错误才能更好的解决问题。
  当然,有大虾不满意了。我一直用sprintf,挺好的啊。是挺好。你写错过没?有几个人记得如何格式化一个64位整型?用c++的流,你压根就不需要记。
  六。一直想精通很多语言。
  有这个必要吗?语言这东西,一通百通。编程语言就那点事,类型(有强有弱),变量,分支,循环,函数/过程/跳转(汇编),想清楚这些,剩下的就是每种语言的语法不一样而已。专心学好一门吧。学好了。你再看其他语言。其实没那么难。再说。门门通的结果是门门差。专精一门好。------我只会c++。
  今天就到这里。

猜你喜欢

转载自wdvkm29c.iteye.com/blog/1364650