Windows XP Theme 服务两宗罪

原来在写一个软件界面库的时候,就发现 Windows XP 里带的 Theme 的实现有一个问题,在某些情况下,窗口位置发生移动后,会导致不能以拖动窗口边框的方法改变窗口的大小,而必须去拖动窗口移动之前边框所在的位置才能奏效。

结果今天又发现一个问题。启用 Theme 后,系统发送 WM_SYSCOMMAND 消息的时候,SC_VSCROLL 和 SC_HSCROLL 的时机竟然与正确的时机恰好相反。也就是说,当你在对垂直滚动条进行操作时,系统会发送(其实系统发送的是对的,被 Theme 给改错了,但对于我们来讲,Theme 也是系统)带有 SC_HSCROLL 值的 WM_SYSCOMMAND,而操作水平滚动条时,则会发送带有 SC_VSCROLL 值的 WM_SYSCOMMAND。

对于想验证这些问题的程序员来讲,第一个可能需要花费点时间,第二个要简单得多,只要分别在启用和停用了 Theme 服务两种情况下输出 WM_SYSCOMMAND 的 WPARAM 参数即可。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注