善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。

2012-10-25

头一次埋彩蛋哩

在改某个 Bug 的时候,需要通过已知的 HWND 来判断该子窗口是不是一个 DateTimePicker 控件。办法很简单,只要给这个子窗口发一个 DateTimePicker 控件的特定消息,如果返回值正确,那么就认为猜对了。

但是在选择这个「特定消息」的时候,我犯了难。DateTimePicker 支持的消息本来就不多。为了避免对正在编辑的数据带来扰动,只能选择 GETXXX 之类的消息。并且这个消息还得有定义良好的返回值,用于鉴别消息是不是发对了人。

一开始我选的是 DTM_GETSYSTEMTIME,这货能返回当前编辑的时间。但我发现控件一旦响应了这个消息,键盘输入就像按过回车一样被 COMMIT 过了,导致年份之类的多位数字根本输不完整。回头看了看 DTM_GETMCCOLOR,又无法确定返回值是不是能够鉴别出来。有个 DTM_GETDATETIMEPICKERINFO 倒是看上去挺好,可惜只支持 VISTA 往上。最后我选择了 DTM_GETRANGE。

DTM_GETRANGE 可以返回设计者在 IDE 上给 DateTimePicker 控件定下的最大/最小值。所以我只要把最小值设一个特定的日子,然后看看返回值正不正确就 OK。实验下来对输入也没有扰动,是个很好的选择。那么,日子选哪一天呢?

……我敲入了 1989-06-04

没有评论:

发表评论