最近一直想在 Windows Mobile 上练练手,看能不能写个什么程序出来玩玩。不过一想起用 SDK 写界面还是比较发憷的,虽然说我老人家对 Windows SDK 开发怎么也能算是个专家。
当然可以选择使用 MFC 或者 WTL,可是前阵子忙活了一阵的 TWL,好歹也是个界面库啊,嘴里喊着开发了个界面库,结果动真格的时候还是要依赖别人的东西,感觉实在不怎么样。于是卯足了劲儿对 TWL 开始进行修改。TWL 的主要特点有二,窗口句柄与对象关联的方式以及类的派生方式,采用了与 MFC 极其相似的方式,这是其内部实现的特点;而使用 TWL 进行开发时,其代码组织以及风格,更类似于 ATL/WTL,这是其外部使用的特点。偏偏第一点上出了问题,大家都知道 MFC 对窗口句柄与 C++ 窗口对象之间的关联使用的是 WH_CBT 类型的钩子来完成的,然而糟糕的是 Windows CE 不支持这种钩子。不得已仔细查看了可以支持 Windows CE 下的开发的 MFC 的源代码,照猫画虎了一番。截止到目前,最核心的 CUserWindow 类大概可以算是就绪了。
中间遇到了对窗口过程的地址的映射问题,着实郁闷。在 Google 查阅竟然毫无结果,没有任何人提起。不知道是不是这个问题其实很简单很基础,只不过恰巧是老汉不明白……,如果高手看到,千万指教一下,那个 _MapProc 函数到底是在什么情况下需要调用,不胜感激。