winapi属于底层开发吗_学习低级WinAPI编程还有意义吗?

paercebal..

22

在学习Win32 API之前,我保持标准的C/C++多年,而且直言不讳,"学习Win32 API"部分并不是我生命中最好的技术经验.

一方面Win32 API非常酷.它就像是C标准API的扩展(fopen当你可以拥有它时需要CreateFile.但我猜UNIX/Linux/WhateverOS具有相同的Gizmo功能.无论如何,在Unix/Linux中,他们拥有"Everything is a file".在Windows中,他们有"一切都是......窗口"(不开玩笑!看CreateWindow!).

另一方面,这是一个遗留API.你将处理原始C和原始C疯狂.

就像告诉一个人的结构自己的大小来传递void *指向某个Win32函数的指针一样.

消息传递也可能非常令人困惑:将C++对象与Win32窗口混合会导致鸡或蛋问题的非常有趣的例子(当你delete this ;在类方法中编写一种有趣的时刻).

当你更熟悉对象继承时,必须继承WinProc是头分裂而不是最优.

当然,有一种乐趣是" 为什么在这个水力压裂的世界里他们用这种方式做了这件事? "当你用头撞击你的键盘太多并且用额头上刻有钥匙回家的时候,只是因为某人认为编写API以更改"窗口"的颜色更合乎逻辑,而不是通过更改其中一个属性,而是通过询问它的父窗口.

等等

在最后一手(三手???)中,考虑一些使用遗留API的人自己使用遗留代码样式.你听到" const是为了傻瓜 "或" 我不使用名称空间,因为它们会降低运行时速度 " 的那一刻,或者甚至更好的" 嘿,谁需要C++?我用我自己的面向对象的C代码! "(不开玩笑......在专业的环境中,结果很可见......),你会感觉到这种恐惧只会在断头台面前受到谴责.

所以...总而言之,这是一次有趣的体验.

编辑

重新阅读这篇文章后,我发现它可能被视为过度消极.它不是.

知道如何在幕后工作是有趣的(也是令人沮丧的).你会明白,尽管存在巨大的(不可能的?)约束,但Win32 API团队确实做了很多工作,以确保从"olde Win16程序"到"最后的Win64 over-the-top应用程序"的所有内容都可以一起工作,在过去,现在和将来.

问题是:你真的想要吗?

因为在其他更高级别和/或面向对象的API中花费数周时间来完成可以完成(并且做得更好)的事情可能会非常缺乏动力(实际体验:Win API为3周,3个为4小时)其他语言和/或图书馆).

无论如何,你会发现Raymond Chen的博客非常有趣,因为他的内部人员对Win API及其多年来的演变有所了解:

@jle:是的,但是通过Python使用Win32 API就像通过Java或C#使用Win32 API:有人已经为你编写了包装器.此外,我希望你不用Win32编写GUI,因为即使使用python,这也很痛苦.最后,但并非最不重要的是,问题没有提到Python(或任何脚本语言),也没有提到"python"标签,所以...... (5认同)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值