はじめまして。Activebasicでプログラミングでデジタル時計を作りたいです。
初心者なのでどうしたらいいのか全くわかりません。教えてください。
できればプログラムを見せていただけるといいです。
使っているのは最新のABです。OSは2000です。
ご教示よろしくお願いします。
困っています。
#ソースを打ち込んでコンパイルし、実行するくらいは出来るという前提で話を進めます。
#これが分からない場合はその事を明記して、もう一度質問してくださいな。
どんなデジタル時計が作りたいんですか?
簡単な描画なら#N88BASICと1行目に書けば、Line、Circle、Print、Cls、PSet等で行えます。
Lineでは線や四角形、Circleでは円や扇形、PSetでは点が書けます。
そしてClsでは画面の消去が出来ます。
ヘルプを見つつやってみてください。
#これが分からない場合はその事を明記して、もう一度質問してくださいな。
どんなデジタル時計が作りたいんですか?
簡単な描画なら#N88BASICと1行目に書けば、Line、Circle、Print、Cls、PSet等で行えます。
コード: 全て選択
#N88BASIC
Do 'DoからLoopの間に書かれた事は何度でも繰り返し実行されます。
Sleep(10) '少しの時間が経過する間待つ。単位は0.001秒(1ミリ秒)。つまり10だと0.01秒。
Locate 0,0 '書き出す位置を調整
Print Time$() '現在時刻を表示
Loop
そしてClsでは画面の消去が出来ます。
ヘルプを見つつやってみてください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ノーマルウインドウベースのプロジェクトを作成し、スタイルを枠なしにする事で
タイトルバーはなくなります。
画像の読み込みと描画はLoadImage関数、GetDC関数、BitBlt関数等を使うことで行えます。ヘルプと過去ログを読んできてください。
右クリック時にメニューを出すには、右クリックされたことを検出して、TrackPopupMenu関数を使ってポップアップメニューを表示するという手法が使えるようです。
#画像が11枚ある件について突っ込むべきか・・・
タイトルバーはなくなります。
画像の読み込みと描画はLoadImage関数、GetDC関数、BitBlt関数等を使うことで行えます。ヘルプと過去ログを読んできてください。
右クリック時にメニューを出すには、右クリックされたことを検出して、TrackPopupMenu関数を使ってポップアップメニューを表示するという手法が使えるようです。
#画像が11枚ある件について突っ込むべきか・・・
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
スタイルを枠なしにしたのですが、タイトルb-が出てきます。
しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。
いったい何がいけないいのでしょうか。
画像の11枚は:を打つためです。
プログラム書いたので添削して下さい。
しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。
いったい何がいけないいのでしょうか。
画像の11枚は:を打つためです。
プログラム書いたので添削して下さい。
コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Const BMPSIZE=32
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
digiclk_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_LButtonDblClick(flags As Long, x As Integer, y As Integer)
End
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
SetTimer(hMainWnd,0,200,NULL)
SetWindowPos(hMainWnd,NULL,0,0,BMPSIZE*8,BMPSIZE,SWP_NOMOVE)
End Sub
Sub MainWnd_Paint(hDC As HDC)
Dim bmp1 As HBITMAP,dc1 As HDC
Dim ti[100] As Byte,i As Long
lstrcpy(ti,Time$())
bmp1=LoadImage(GetWindowLong(hMainWnd,GWL_HINSTANCE),IDB_BITMAP1,IMAGE_BITMAP,BMPSIZE*11,BMPSIZE,LR_DEFAULTCOLOR)
dc1=CreateCompatibleDC(hDC)
SelectObject(dc1,bmp1)
Do
ti-=Asc("0")
If ti>9 Then ti=10
BitBlt(hDC,i*BMPSIZE,0,BMPSIZE,BMPSIZE,dc1,ti*BMPSIZE,0,SRCCOPY)
i++
Loop While ti
DeleteDC(dc1):DeleteObject(bmp1)
End Sub
Sub MainWnd_Timer(TimerID As DWord)
InvalidateRgn(hMainWnd,NULL,TRUE)
End Sub
>スタイルを枠なしにしたのですが、タイトルb-が出てきます。
>しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。
なんか矛盾を感じてならないのですが、
もしかして下のスタートバーに出てくる文字をタイトルバーと呼んでいるのでしょうか…
タイトルバーと言われると、ウインドウの上部を思い浮かべるのですが…
ウインドウ上部を消し去りたいのにばってんなしの半端な状態で残ってしまうんです、という状況だったらすみません。
スタートバーに出てくる文字列を出ないようにするためにだとすれば、自分はウインドウの拡張スタイルで「ツールウインドウ」とやらを設定したことがあります。
ただしこれだと、枠ありの場合は枠の形が変わってしまいますが…。
あと、konisiさんの書かれている、「右クリック時にメニューを出す」というのが枠なしの場合に終了させる方法でよくあるものですので頭の片隅にでもどうぞ。
しかしプログラムを作ってみた場合、最新のABっていうのがver4の最新かver5βの最新かでも違ってくるんでしょうかね…?
>しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。
なんか矛盾を感じてならないのですが、
もしかして下のスタートバーに出てくる文字をタイトルバーと呼んでいるのでしょうか…
タイトルバーと言われると、ウインドウの上部を思い浮かべるのですが…
ウインドウ上部を消し去りたいのにばってんなしの半端な状態で残ってしまうんです、という状況だったらすみません。
スタートバーに出てくる文字列を出ないようにするためにだとすれば、自分はウインドウの拡張スタイルで「ツールウインドウ」とやらを設定したことがあります。
ただしこれだと、枠ありの場合は枠の形が変わってしまいますが…。
あと、konisiさんの書かれている、「右クリック時にメニューを出す」というのが枠なしの場合に終了させる方法でよくあるものですので頭の片隅にでもどうぞ。
しかしプログラムを作ってみた場合、最新のABっていうのがver4の最新かver5βの最新かでも違ってくるんでしょうかね…?
まず、は上手く動く保証が無いのでにするべきです。
#実際にはAB4ではStringが指す先は少なくとも8バイト以上の構造体になっていて(よく調べてない)、先頭4バイトが文字列を指すポインタになっているので上手く動いてしまうんですが。
この場合だと、次の方が適切かもしれません。
#×ボタンが無くてもAlt+F4で閉じれますよ。
添削してみた。
AB4とAB5ではString型の扱いがかなり変化したので、その周りで多少コードへの変更が必要かもしれません。
通る筈が無いと思って書いたコードのコンパイルが通った。感動。
コード: 全て選択
lstrcpy(ti,Time$())
コード: 全て選択
Dim time$ As String
time$=Time$()
lstrcpy(ti,StrPtr(time$))
#実際にはAB4ではStringが指す先は少なくとも8バイト以上の構造体になっていて(よく調べてない)、先頭4バイトが文字列を指すポインタになっているので上手く動いてしまうんですが。
この場合だと、次の方が適切かもしれません。
コード: 全て選択
Dim ti As *Byte
Dim time$ As String
time$=Time$()
ti=StrPtr(time$)
添削してみた。
コード: 全て選択
'-----------------------------------------------------------------------------
'イベントプロシージャ
'-----------------------------------------------------------------------------
'このファイルには、ウィンドウ[MainWnd]に関するイベントをコーディングします。
'ウィンドウハンドル:hMainWnd
'TODO:この位置にグローバルな変数、構造体、定数、関数を定義します。
Const BMPSIZE=32
'-----------------------------------------------------------------------------
'ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND,dwMsg As DWord,wParam As WPARAM,lParam As LPARAM) As DWord
'TODO:この位置にウィンドウメッセージを処理するためのコードを記述します。
'イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
'ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
digiclk_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_LButtonDblClick(flags As Long,x As Integer,y As Integer)
End
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
SetTimer(hMainWnd,0,1000,NULL)
Dim l As Long
l=GetWindowLong(hMainWnd,GWL_STYLE)
SetWindowLong(hMainWnd,GWL_STYLE,l Xor WS_CAPTION)
SetWindowPos(hMainWnd,NULL,0,0,BMPSIZE*8,BMPSIZE,SWP_NOMOVE)
End Sub
Sub MainWnd_Paint(hDC_ As HDC)
Dim hDC As HDC
hDC=GetDC(hMainWnd)
Dim bmp1 As HBITMAP,dc1 As HDC
Dim ti[100] As Byte,i As Long
Dim time$ As String
time$=Time$()
lstrcpy(ti,StrPtr(time$))
bmp1=LoadImage(GetWindowLong(hMainWnd,GWL_HINSTANCE),IDB_BITMAP1,IMAGE_BITMAP,BMPSIZE*11,BMPSIZE,LR_DEFAULTCOLOR)
dc1=CreateCompatibleDC(hDC)
SelectObject(dc1,bmp1)
Do
ti-=Asc("0")
If ti>9 Then ti=10
BitBlt(hDC,i*BMPSIZE,0,BMPSIZE,BMPSIZE,dc1,ti*BMPSIZE,0,SRCCOPY)
i++
Loop While ti
DeleteDC(dc1)
DeleteObject(bmp1)
ReleaseDC(hMainWnd,hDC)
End Sub
Sub MainWnd_Timer(TimerID As DWord)
Select Case TimerID
Case 0
InvalidateRgn(hMainWnd,NULL,TRUE)
End Select
End Sub
"スタートバー"は一般にはタスクバーと呼ぶかと。名無し さんが書きました:もしかして下のスタートバーに出てくる文字をタイトルバーと呼んでいるのでしょうか…
AB4とAB5ではString型の扱いがかなり変化したので、その周りで多少コードへの変更が必要かもしれません。
通る筈が無いと思って書いたコードのコンパイルが通った。感動。
コード: 全て選択
Dim A$ As String
A$="abc"+"efg"
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。