|
时间相同。GetLocalTime函式传回当地时间,依据电脑所在的时区。这些值的精确度完全决定於使用者所调整的时间精确度以及是否指定了正确的时区。可以双击工作列的时间显示来检查电脑上的时区设定。第二十三章会有一个程式,能够通过Internet精确地设定时间。
Windows还有SetLocalTime和SetSystemTime函式,以及在/Platform SDK/Windows Base
Services/General Library/Time中说明的其他与时间有关的函式。
显示数字和冒号
如果DIGCLOCK使用一种模拟7段显示的字体将会简单一些。否则,它就得使用Polygon函式做所有的工作。
DIGCLOCK中的DisplayDigit函式定义了两个阵列。fSevenSegment阵列有7个BOOL值,用於从0到9的每个十进位数字。这些值指出了哪一段需要显示(为1),哪一段不需要显示(为0)。在这个阵列中,7段由上到下、由左到右排序。7段中的每个段都是一个6边的多边形。ptSegment阵列是一个POINT结构的阵列,指出了7个段中每个点的图形座标。每个数字由下列程式码画出:
类似地(但更简单),DisplayColon函式在小时与分钟、分钟与秒之间画一个冒号。数字是42个单位宽,冒号是12个单位宽,因此6个数字与2个冒号,总宽度是276个单位,SetWindowExtEx呼叫中使用了这个大小。
回到DisplayTime函式,原点位於最左数字位置的左上角。DisplayTime呼叫DisplayTwoDigits,DisplayTwoDigits呼叫DisplayDigit两次,并且在每次呼叫OffsetWindowOrgEx後,将视窗原点向右移动42个单位。类似地,DisplayColon函式在画完冒号後,将视窗原点向右移动12个单位。用这种方法,不管物件出现在视窗内的哪个地方,函式对数字和冒号都使用同样的座标。
这个程式的其他技巧是以12小时或24小时的格式显示时间以及当最左边的小时数字为0时不显示它。
国际化
尽管像DIGCLOCK这样显示 |