经过几分钟的搜索,我了解到Win32 API是编写图形化Windows程序的最低级别的方法。这是真的?有没有办法将内容直接绘制到视频缓冲区?演示编码器如何编写演示?
无论如何,我知道一点C,这似乎是编写Win32程序的首选方式,而且我有兴趣坚持用最低级别和最灵活的方式编写Windows程序。
我听说过很多不同的框架,只有微软自己,.NET,Windows Forms,WPF,MFC,WTL,CLR,ATL。 (有人可以澄清哪些实际上取决于另一个?)
当然还有跨平台工具包,WxWidgets,GTK,Qt,Mono,tk等。
如果我只想在OpenGL中编写整个界面怎么办? 一切都真的取决于Win32 API吗? 我是否必须编写一些使用Win32 API调用的代码,至少为OpenGL创建一个窗口来使用?
答案 0 :(得分:3)
你基本上在一个问题上问了很多问题我不知道你想要什么。但是,我会尽力做出合理的假设,并简要回答所有问题。
Win32 API不仅是图形程序的最低级API,也是任何窗口程序的API。它最接近内核,但没有必要写入内核。
我在这里假设您想制作一个图形化的App。
Win32 API有一个名为GDI的组件,即图形设备接口,您可以使用它与图形缓冲区进行交互,但速度非常慢。那么你可以使用OpenGL或DirectX。 MFC也是在.NET之前,你用它来创建标准的Windows GUI程序。然后是.NET,更慢但设计得更好。
是的,有很多跨平台选项,就像你提到的那样,你也可以使用它们,但一切都取决于你想要做什么。
现在,如果你想编写一个纯粹的图形应用程序,比如游戏或带有闪亮图形的花哨演示,你应该真的不关心Win32,MFC,.NET等,因为当你想创建这样的应用程序时你只能使用裸最小的Win32来创建一个骨架窗口,然后你的OpenGL或DirectX接管控制权。 但是,当然,如果它是一个窗口应用程序,它肯定会在那里使用Win32 API,而不是你必须关心它:))
答案 1 :(得分:0)
如果您的整个应用程序将是OpenGL,则可以使用名为GLUT的库。
答案 2 :(得分:0)
是的,Win32是最低级别的API。它包装了所有操作系统对象和API,并公开了窗口API,因此您可以创建OpenGL窗口,等等。其他所有内容都建立在它之上。
您不能像Amiga 500上的演示编码器那样直接绘制视频内存;从90年代中期开始使用DOS,你无法安全地获得指向视频输出缓冲区的指针。 :)
如果您想学习最低级别的Windows,请在C中获取Charles Petzold的Programming Windows副本。它绝对拥有您需要的一切。
如果您只想打开一个窗口将GL代码放入其中,您应该可以轻松找到相关的教程。
答案 3 :(得分:0)
你需要做一些样板工作来创建Windows应用程序(注册窗口类等)。创建应用程序类后,您可以随心所欲地执行任何操作。但是你不能直接访问视频内存(这是件好事),但是有适合你的DirectX和OpenGL。