プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

[HSP]デジタル時計のソース(2)

2014年09月01日 17時23分00秒 | HSP講座

スクリプト言語の HSP については、公式ホームページの「HSPTV!」をどうぞ。(戻る)


ここには、デジタル時計のサンプル・ソース(2)を載せておきます。
このデジタル時計は、WM_TIMER メッセージのタイマー・イベントを使って1秒間に10回更新させます。

前回のデジタル時計のサンプル・ソース(1)では、ウインドウを移動中は時計が止まるのに対して、
今回のデジタル時計のサンプル・ソース(2)では、ウインドウの移動中でも時計は更新されます。
これは、タイマー・イベント(割り込み処理)を使ってるため移動中でも描画処理されるからです。
これ以外は見た目のデザインも全く同じです。

デジタル時計のソース(2)

管理上このサンプルは clock2.hsp のソースです。

//------------------------------------------------------------------------------
// デジタル時計のサンプル(2) by 科学太郎
//==============================================================================
// 新規作成日:2013-05-13 (月) 07:35:00
// 最終更新日:2013-05-13 (月) 07:45:00
//------------------------------------------------------------------------------

//--------------------------------------
// API関数定義
//--------------------------------------
#uselib "user32.dll"
#func SetTimer      "SetTimer"          int,int,int,int
#func KillTimer     "KillTimer"         int,int

//--------------------------------------
// 記号定数
//--------------------------------------
#const WM_TIMER     (0x0113)            ;ウインドウ・メッセージ
#const TID_CLOCK    (1)                 ;タイマーID

//--------------------------------------
// メイン部
//--------------------------------------
*Main
    // ウインドウの設定
    title "デジタル時計"
    screen 0, 50*4+16, 50
    font "MS ゴシック",50
    // 割り込みの設定
    oncmd gosub *OnTimer, WM_TIMER      ;WM_TIMERの割り込み登録
    onexit goto *OnQuit                 ;プログラム終了時の登録
    // タイマーの設定
    SetTimer hWnd, TID_CLOCK, 100, 0    ;タイマーの設定(0.1秒間隔)
    if ( stat == 0 ){
        dialog "タイマーの設定に失敗しました。",1,"エラー"
        end
    }
    SendMsg hWnd, WM_TIMER, TID_CLOCK, 0
    stop
//--------------------------------------
// WM_TIMERメッセージの処理
//--------------------------------------
*OnTimer
    if ( wParam == TID_CLOCK ) : gosub *DrawClock
    return 0
//--------------------------------------
// 時計画面の描画
//--------------------------------------
*DrawClock
    redraw 0
    if ( gettime(7) < 500 ){
        form="%02d:%02d.%02d"
    }
    else{
        form="%02d %02d.%02d"
    }
    msg=strf(form,gettime(4),gettime(5),gettime(6))
    color $80,$00,$00 : boxf
    color $66,$00,$00 : pos 8+2,2 : mes msg
    color $FF,$00,$00 : pos 8+0,0 : mes msg
    redraw 1
    return
//--------------------------------------
// 終了時の処理
//--------------------------------------
*OnQuit
    KillTimer hWnd, TID_CLOCK           ;タイマーの破棄
    end
//------------------------------------------------------------------------------
// End of clock2.hsp
//------------------------------------------------------------------------------

スクリーン・ショット

関連記事



コメント   この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« [HSP]デジタル時計のソース... | トップ | [HSP]メニューの操作(1) »
最新の画像もっと見る

コメントを投稿

HSP講座」カテゴリの最新記事