2013年11月20日

C++ 通过Thunk在WNDPROC中访问this指针实现细节

摘要: 本文代码使用了一些C++11特性,需要编译器支持。本文仅讨论x86_64平台的相关实现,x86平台理论上只需修改 thunk 相关机器码即可。THUNK的原理参见之前的一篇博文《C++ 通过Thunk在WNDPROC中访问this指针》首先定义我们的window类,该类实现对一个Win32窗口句柄的封装。该类将在构造函数中创建窗口,在析构时销毁窗口;窗口的消息过程函数(WindowProc)将是一个用机器码在内存中动态构造的thunk,其作用是把收到的4个参数中的第一个也就是窗口句柄替换成window类的this指针,然后把调用传递给window类的静态函数static_procedure;静 阅读全文

posted @ 2013-11-20 23:22 Todd Pointer 阅读(1817) 评论(0) 推荐(1)

Unicode 字符集及UTF-8 UTF-16编码

摘要: 很久以前发在他处的一篇博文,今天翻出来重新整理了一下Unicode 字符集 共分为 17 个平面(plane), 分别对应 U+xx0000 - U+xxFFFF 的 code points, 其中 xx := 00 - 10。其中第 0 平面不包含为 UTF-16 编码保留的 U+D800 - U+DFFF。第0平面包含了最常用的字符,被成为 Basic Multilingual Plane 或 BMP (基本多语言平面)。Unicode 在编码上有多种实现,常见的有 UTF-8, UTF-16, UCS-2(已过时), UTF-32(UCS-4)等。UTF-8 编码UTF-8是一种变长、多 阅读全文

posted @ 2013-11-20 00:18 Todd Pointer 阅读(891) 评论(0) 推荐(0)

导航