65.9K
CodeProject 正在变化。 阅读更多。
Home

BinClock

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (9投票s)

2005年6月21日

viewsIcon

37482

downloadIcon

495

一个带有选项的二进制时钟。

Sample Image

Sample Image

引言

这个项目展示了如何使用减法方法将十进制数转换为二进制数。它具有更改矩形颜色、隐藏或显示十进制时钟以及播放时钟滴答声的选项。

使用代码

为了在定时器中采样系统时钟,我将定时器设置为 250 毫秒(每秒 4 次),并将当前秒数与保存的值进行比较。

void CBinClockDlg::OnTimer(UINT nIDEvent) 
{
    // TODO: Add your message handler code here and/or call default

    CTime time = CTime::GetCurrentTime();
    int nSecond = time.GetSecond();
    if(tTime != nSecond)
        Display();
    tTime = nSecond;

    CDialog::OnTimer(nIDEvent);
}

要将小时、分钟和秒的十进制值转换为二进制,请测试十进制值是否大于或等于二进制位值 32、16、8、4、2、1。如果是,则设置相应的位并将位值从十进制值中减去。

...
    // Convert decimal to binary

    if (nHour >= 16)
    {
        DisplayHour(5);
        nHour -= 16;
    }
...
    case 5:
        pDC = m_hour5.GetDC();
        m_hour5.GetClientRect(&rect);
        pDC->FillRect(&rect, &m_brush);
        ReleaseDC(pDC);
        break;
...

滴答声使用:PlaySound("SOUNDTICK", hInst, SND_RESOURCE | SND_ASYNC);,该函数在 Mmsystem.h 中定义,并包含在 Winmm.lib 中。SOUNDTICKrc 文件中定义:“res\\tick.wav”。

历史

  • 2005 年 6 月 20 日 - 版本 1.0。
© . All rights reserved.