Kan*_*Yoo 3 windows winapi handle
我最近一直在阅读一些关于C++的Windows编程的书籍,而且我对WinAPI中的一些重复概念有一些令人困惑的理解.例如,有很多以handle关键字'H'开头的数据类型,它们应该像指针一样使用吗?但是还有其他数据类型以指针关键字"P"开头.所以我猜不是.那究竟是什么?为什么一些数据类型的指针首先给出了单独的数据类型?例如,PCHAR可以很容易地设计为CHAR*?
句柄曾经是Windows早期版本中的指针,但现在已不再适用.将它们视为"cookie",这是一个独特的值,允许Windows找回之前分配的资源.与CreateFile()一样,返回一个新句柄,稍后在SetFilePointer()和ReadFile()中使用它来从同一个文件中读取数据.而CloseHandle()用于清理内部数据结构,也关闭文件.这是一般模式,一个api函数用于创建资源,一个或多个用于创建资源,一个用于销毁资源.
是的,以P开头的类型是指针类型.是的,它们是多余的,如果你自己使用*它也可以.不确定为什么C程序员喜欢声明它们,我个人认为它会降低代码的可读性,我总是避免它们.但请注意复合类型,如LPCWSTR,"指向常量宽字符串的长指针".L不再具有任何意义,可以追溯到16位版本的Windows.但指针,常量和宽度很重要.我确实使用了typedef,但这样做会冒未来的可移植性问题.这是typedef存在的核心原因.
| 归档时间: |
|
| 查看次数: |
601 次 |
| 最近记录: |