作为Charles Petzold的书籍Code and The Annotated Turing的忠实粉丝,我看到了他的书" 编程Windows",该书在C语言中教授Win32编程.我是一名新生计算机科学专业的学生,他先学习C语言,但我现在使用C#和.NET进行Windows编程,所以我想知道Win32是否仍然与专业的Windows程序相关.作为一名想要编写Windows应用程序的学生,我是否值得学习Win32 API到本书涵盖的深度?
这实际上取决于您想要开发的应用程序的类型.目前,在大多数情况下,C#和.NET都是完全合适的.但是,某些类型的应用程序需要尽可能少的依赖项(想到shell扩展),这些应用程序不像.NET应用程序那样可行.对于那些你需要Win32的人.
与往常一样,即使您在大部分工作中使用.NET,至少要对Win32有基本的了解也是值得的.
我完全赞同Joel Spolsky在他的许多伟大文章中所写的内容.我认为知道机器的较低层不仅能够编写高质量的代码,而且能够解决不可避免会出现的问题,这一点至关重要.
所以,是的,至少知道WIN32 API的基础知识可能不深入,但至少知道它在那里,在你要编码的所有东西的基础上.
如果你在Windows上编写C#,这是非常相关的.并非所有Win32的功能都通过.Net库公开.一个具体的例子是我在这里描述的WM_SETREDRAW消息技术:WM_SETREDRAW.在其他时候还需要控制焦点问题.
此外,了解Win32和Windows如何工作将使您更好地了解C#/ .Net的各个方面,例如:
Control.Invoke()实际上做了什么?
Control.BeginInvoke和Control.Invoke有什么区别?
实际上是什么导致我的控件的事件被触发,例如OnClick等,我该如何调试它.
也就是说,WPF改变了这一切,如果你只是编写.Net 3/3.5代码,那么我的论点就会失去一些相关性.
在我看来,没有.我很久以前就学会了,所以你不必这样做!
我认为你首先学习C很好,我会不时地编写C程序,但我不明白为什么win32 API对于挖掘是有用的.老实说,这是一个很大的混乱.
我认为学习基础知识很重要.如果您学到的东西足以显示包含某些字段,某些按钮和菜单的窗口.也许在一个单独的窗口画一些东西.它将帮助您了解Windows如何真正工作的基础知识.我相信理解消息循环并认识到你看到的几乎所有东西都是窗口是每个人都应该知道的基本事物.当我第一次意识到按钮是它自己的窗口时,我的眼睛真的被打开了.然后,它可以帮助您了解通过发送这些Windows消息可以打开和关闭事物的功能.通过子类化窗口,您可以访问.NET或VB Classic等未向您展示的功能,让您增强窗口的功能.
一定要学习AlexDrenea提到的基础知识。.NET使您免受许多Win32 API调用的侵扰。Win32 API是如此之大,以至于您一定会遇到.NET不能为您包装它的情况。
现实生活中的常见情况,ListViewColumns上的排序箭头