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

没有评论:

发表评论