针对硬核Java家伙的Windows开发

时间:2009-03-19 04:56:03

标签: c# java visual-studio winapi

我有点惭愧地问这个,因为,你知道,我很长时间以来一直非常反MS。我很幸运能够在Visual Studio之外谋生。随着年龄的增长,有一些我想尝试的东西,而且说实话,这个Q& A网站激发了我的灵感,我意识到VS和Windows开发并没有那么多。嘿,毕竟C#是在Java之后设计的,现在Java正在从子语言中复制一些功能。 Windows Vista是自Windows曝光以来第一个不错的版本。

无论如何,对于观众中的任何+3,000用户,您可以删除以上所有废话并保留以下内容:

你有,链接,资源,教程旨在学习来自强大Java背景的Windows开发吗?

我对Windows操作(即实际窗口,框架,获取名称,获取最重要的应用程序等,以编程方式调整大小等)以及Windows Search API和其他次要API之间非常感兴趣。我的兴趣毕竟是通过JNI或JNA将它们与我的Java应用程序集成。

我已经通过MSDN阅读了很多教程和链接,我实际上理解了它自己的API。我抓住了C#和C ++ Express的副本,实际上运行了一些基本样本。

我的问题是我没有全面了解整个架构(因为,它是)。这些课程有数百种方法,对我来说,调用它们并不是很清楚。 (当我第一次看到Java的Javadoc API时,我有同样的看法。)我不知道一些基本的常见对象,例如HWCD(或类似的东西),它原来是窗口处理程序,但我读过的每一个教程都认为这是理所当然的(好像WHCD或者它是什么,是一个非常具有描述性的名称)。

我不确切知道Win32,COM,COM +,DCOM,Windows SDK ADO和其他一些技术之间的区别。我的意思是,我在某种程度上和常识都知道它们,但在阅读教程或API时我感到困惑。我试图抓住一些“初学者”教程,但他们的目标是使用Visual Basic的绝对0程序员(yiak!,那个是我多年来第一次远离MS的主要原因地方。)

我确实理解.NET框架,托管代码,非托管代码,C#基础知识,CLR和相关内容,因为它们与Java平台类似,几乎是透明的。

所以,在我对MS开发的所有咆哮和诚实的意见之后:

对于非绝对初学者(在编程中)学习Windows开发的最佳方法是什么,但对于Windows API本身是绝对新手?什么是好路?

4 个答案:

答案 0 :(得分:2)

The Petzold是您最好的新朋友,MSDN是您的新Javadoc。在你深入了解之前,请确保你对C有很好的理解。如果你感兴趣的话,Forger也很棒beginner tutorial。学习的好地方是efnet irc上的#WinProg,很多win32大师都准备好帮忙。

答案 1 :(得分:1)

我将建议一条替代路径(阻力较小)。你看过WPF了吗?这是新的GUI工具包,可以让您创建性感的界面(如Vista中的界面)。

这可能足以让您感兴趣,同时可以轻松进入更高级的开发阶段。从那里你可以跳进Win API的丛林(如果你选择)。

只是一个想法,因为这条路对我来说会更有趣。当然,您的里程可能会有所不同。

答案 2 :(得分:1)

我强烈建议您自己获取“Win32 Programming”的副本。它解释了WINDOWS的基本DNA - 如果您使用旧的C ++ win32,新的C#WinForms以及未来的Windows Presentation Foundation进行编程,这是有效的。

简而言之,Windows程序由WinMain组成。首次启动时,app会向系统注册其窗口类,初始化然后启动一个消息循环,该循环一直持续到遇到WM_QUIT。系统(OS)不断地将诸如键盘或鼠标点击等消息泵送到应用程序的消息Q.在Windows中,任何时候只有一个活动窗口 - 因此操作系统知道将消息发送给谁。

这些内容在上面的书中有详细描述。

COM(COM +,DCOM)与Windows无关。当Word,Excel变得流行并且需要能够从Word访问Excel时(反之亦然)他们提出了AcitveX技术,这是COM等的根源。您可以开始使用Don Box的“Essential COM” 。

一个警告:在Microsoft世界中,有两种编程方式 - 以锅炉方式(自己编写所有内容)或使用框架(MFC,ATL-COM ....)。建议您做一些锅炉盘,以便了解基础知识。

答案 3 :(得分:0)

一年前进行了相同的转换,我可以说有很多专门用于从Java背景学习c#的文献。这是我第一次发现它对于学习C#的重要差异/功能非常有用:

C# from a Java developer's perspective

还有一些值得一看的书(google'c#for java programmers')。正如JohnT所说,MSDN库相当于JavaDocs API,但我发现使用它真的很令人沮丧。学习的最佳方法是获取Visual Studio Express的副本并开始玩游戏。使用intellisense探索类和方法。找一个用Java编写的小程序,并尝试用C#重现它。从简单问题开始,使用谷歌解决它们。你会发现第一周很难,但相信我,它会很快出现给你!