WINDOWS程序设计很难看不懂怎么办?
我在学校已经学完了C,JAVA,C#,数据库,都是初级,去年刚学完C的时候想脱离黑框框,于是有人推荐《windows程序设计》,但是那时候我感觉纯属天书,后来我看了网上《...
我在学校已经学完了C,JAVA,C#,数据库,都是初级,去年刚学完C的时候想脱离黑框框,于是有人推荐《windows程序设计》,但是那时候我感觉纯属天书,后来我看了网上 《c语言也能干大事》,讲的是WIN API编程,也就看得懂前面控件使用,后面的网络编程,数据库都看不懂了。
最近又连着看了几天这书,总感觉很难,第一个Hello world都看不懂,我是看了N遍了啊!总感觉缺点什么必要的知识。
怎么办啊?求解释!谢谢了!!! 展开
最近又连着看了几天这书,总感觉很难,第一个Hello world都看不懂,我是看了N遍了啊!总感觉缺点什么必要的知识。
怎么办啊?求解释!谢谢了!!! 展开
4个回答
展开全部
第一个hello world跟着调试个一两天其实很正常。这东西入门比较难
我看的也是这本书。要说缺什么必备知识,应该说不是“编程语言”那个级别的,而是“设计思想”那个级别的:以前都是你控制整个程序的运行过程,而现在改变了,变得更接近windows控制整个程序的运行过程。它替你完成许多事,你只要在它有些事情不知道怎么做的时候跟它说怎么做(回调函数)而已。
c语言有用过函数指针吗,有把函数指针当作函数参数去调用某个函数这样的东西操作过吗?这是一个必备知识。
总之最难的应该是观念的转变,windows写界面的那一套已经不是按你的代码一步步走那么简单了,很多操作是windows内部完成,比如你看那个GetMessage函数,你一调用这个函数就不知道windows里面到底在干什么了,等到函数返回你已经拿到“消息”了。你鼠标点了窗口上的什么按钮,windows就会生成对应的消息;你鼠标移动到什么窗口,windows就会生成对应的消息;你输入了什么文字按了什么按键,windows就会生成相应的消息。而你要做的事情,就是处理这些消息而已。
我看的也是这本书。要说缺什么必备知识,应该说不是“编程语言”那个级别的,而是“设计思想”那个级别的:以前都是你控制整个程序的运行过程,而现在改变了,变得更接近windows控制整个程序的运行过程。它替你完成许多事,你只要在它有些事情不知道怎么做的时候跟它说怎么做(回调函数)而已。
c语言有用过函数指针吗,有把函数指针当作函数参数去调用某个函数这样的东西操作过吗?这是一个必备知识。
总之最难的应该是观念的转变,windows写界面的那一套已经不是按你的代码一步步走那么简单了,很多操作是windows内部完成,比如你看那个GetMessage函数,你一调用这个函数就不知道windows里面到底在干什么了,等到函数返回你已经拿到“消息”了。你鼠标点了窗口上的什么按钮,windows就会生成对应的消息;你鼠标移动到什么窗口,windows就会生成对应的消息;你输入了什么文字按了什么按键,windows就会生成相应的消息。而你要做的事情,就是处理这些消息而已。
更多追问追答
追问
很有那么点意思了,如果是面向过程我很容易理解,因为每一步都在自己的掌控之中,而且回调我都不知道是干嘛的,还有很多是以前没见过的,都不懂。
指针那一张我都没觉得难过,不就是保存地址么?反而循环和递归难倒了我好久,还有,我特别不喜欢一上来就封装,因为隐藏的越多,越不好理解。
如果第一章理解了,我想这本书就可以继续看下去了吧!现在急切想入门啊!!!
很谢谢你^_^
追答
展现的太多,用户就很容易往细节方面考虑。
但是对于windows来说,一个函数里面的代码可能win7和winxp里的都不一样,你们写的代码winxp下能用win7下就不能用了这样不好吧。所以大概就这么回事
关于回调,用“控制权”的方式去理解可能会比较好?windows在运行你的代码的时候,控制权在你手里;windows在运行自己代码的时候,控制权在windows手里。然后它要把控制权交给你的时候,觉的怎么样交给你比较好?windows所采用的方法就是调用你的函数。但是如果把函数名限定死,灵活性就不好。所以他就通过你给它一个函数指针,告诉他“在需要的时候调用这个函数”,然后它在需要的时候就真的调用这个函数了。
windows程序设计这本书在给出hello world以后应该有说过“虽然只有这么些代码,但是窗口却具有很多功能,比如可以拉大拉小,关闭、最小化等,还能拖过来拖过去”。这些习以为常的操作,很多人没有意识到是windows为你完成了这些功能。否则你得自己去检查鼠标点下去了、鼠标移动了、鼠标又放开了这些什么什么事件,然后自己去写代码把窗口移动到另一个地方。
windows的api里的实现都不会给你看的,能得到最权威的资料就是msdn上这个函数的参考手册,包括哪个参数是干嘛用的,它会返回什么,它有什么样的行为。你要做的就是相信它说的都是对的(应该说他说错了你做对了的几率非常小),然后按照它上面讲的方法调用这些api
我没记错的话这本书一上来好像就是给你一个开自己的窗口的例子,先定义一个wndclass,然后register这个class,再然后创建一个窗口。不知道你有没有学过c++,这就有点像c++里面,首先定义一个类,然后声明一个这个类的实例。这里面的类就是wndclass,register就是声明它,createwindow就是创建一个它的实例,而wndproc就是类里面的一个纯虚函数:一个带有纯虚函数的类是不能创建实例的,所以你要给它一个实现
展开全部
其实这书不算太难,那个程序后面几乎对每一行代码都有清晰的解释.认真点看应该是能看懂的啊.
如果还是觉得什么术语很难理解得透彻,如句柄,窗口类,消息循环这些,就自己到百度查查看看有没有通俗点的解释.反正我就是这样一步一步走过来的,当初那本书我至少看了有五遍.
如果还是觉得什么术语很难理解得透彻,如句柄,窗口类,消息循环这些,就自己到百度查查看看有没有通俗点的解释.反正我就是这样一步一步走过来的,当初那本书我至少看了有五遍.
追问
我觉得我脑筋总有点转不过弯,但是我也不笨,以前学数学我一般都是自学,不懂的老师在黑板上讲,但是老师单独跟我讲我就不懂了。。。所以我从不问老师,不知道是不是有压力- -。
我觉得学习计算机看书巨难!!!看视频简单,但是绝非那种大学教授和讲PPT的,我喜欢边敲代码边讲的。
还有MSDN怎么看啊?我看不懂,比如RICHEDIT,我想读取文本,循环追加,怎么没有看到追加啊?
追答
有老师可以问不懂还是问问吧,当初我可没这个运气,身边一个懂的人都没有.
至于视频,目前还没有发现有谁把这本圣经级的书做成视频,还是看书吧.
RICHEDIT我没用过,但很多方面跟EDIT是相同的,在WINDOWS程序设计上有专门讲过这个控件的使用.至于追加文本,API中并没有直接的消息或函数,一般是通过给控件发送EM_SETSEL和
EM_REPLACESEL两个消息来实现追加文本的.
代码也很简单,为了简化代码,这里使用了windowsx.h里的宏
Edit_SetSel(hEdit, 0, -1);
Edit_SetSel(hEdit, -1, -1);
Edit_ReplaceSel(hEdit, str);
具体你可以去MSDN查查这两个消息,这里我只简单解释一下,
EM_REPLACESEL是替换选中的内容, EM_SETSEL设置选中内容.这里是利用EDIT控件(RICHEDIT应该是相同的,没测试过)的两个特性:
1,当全选文本再取消选择后,插入光标会移动到末尾,前两行代码正是做这样的工作.
2,如果当前没有选择文本,EM_REPLACESEL的效果是在插入光标处添加文本.
查MSDN是有窍门的,一般都是查所需功能的英文组合,像添加文本,第一时间想到的很可能是向EDIT发送类似EM_APPENDTEXT的消息,如果MSDN上并没有,那就想想其他的EM(EM也就是Edit Message的简写)开头的多个消息组合能不能实现这样的功能,实在想不到就网上查查呗,这种应用层的常见问题不像驱动开发的资料那么稀缺,总会有收获的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些东西光靠看书很难懂,是需要多动手操作的,比如说网络编程,涉及的知识面很广,很多东西都要用到,建议你去找一个实际案例跟着去做,在做的过程中,不懂的地方再去详细研究。总之一句话,学习这些东西,动手能力是很重要的!
追问
不是啊!网络编程现在不懂没关系,当务之急是我想把第一个hello world程序看懂,连第一个都看不懂,后面的窗口注册还怎么看啊?还有,我是照着敲了一遍,里面的代码好像和现在有点出入(不是我敲错了,而是和VC6.0里面有点不一样),其实关键是我敲了一遍也不懂,因为太多不知道的,我感觉有点知识欠缺,怎么办?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
刚开始,我也是刚看到第三章,感觉要比其它计算机类的书籍(比如讲内核和操作系统的)晦涩一些,
mark一下,看一些再来回答。
mark一下,看一些再来回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询