ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 03:29

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 8 件の記事 ] 
作成者 メッセージ
 記事の件名: 困っています。
投稿記事Posted: 2010年3月06日(土) 20:45 
はじめまして。Activebasicでプログラミングでデジタル時計を作りたいです。
初心者なのでどうしたらいいのか全くわかりません。教えてください。
できればプログラムを見せていただけるといいです。
使っているのは最新のABです。OSは2000です。
ご教示よろしくお願いします。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2010年3月10日(水) 15:09 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
#ソースを打ち込んでコンパイルし、実行するくらいは出来るという前提で話を進めます。
#これが分からない場合はその事を明記して、もう一度質問してくださいな。

どんなデジタル時計が作りたいんですか?

簡単な描画なら#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
Lineでは線や四角形、Circleでは円や扇形、PSetでは点が書けます。
そしてClsでは画面の消去が出来ます。
ヘルプを見つつやってみてください。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2010年3月10日(水) 20:02 
konisiさん、ありがとうございます。
ええと僕がつくりたいのはそういうんじゃなくタイトルバー(?)が無くて
数字は0~10の画像を貼りたいんです。
右クリックで時間になったらアラームとかの設定ができたりするのがいいです。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2010年3月14日(日) 05:21 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
ノーマルウインドウベースのプロジェクトを作成し、スタイルを枠なしにする事で
タイトルバーはなくなります。

画像の読み込みと描画はLoadImage関数、GetDC関数、BitBlt関数等を使うことで行えます。ヘルプと過去ログを読んできてください。

右クリック時にメニューを出すには、右クリックされたことを検出して、TrackPopupMenu関数を使ってポップアップメニューを表示するという手法が使えるようです。

#画像が11枚ある件について突っ込むべきか・・・

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2010年3月15日(月) 16:47 
スタイルを枠なしにしたのですが、タイトルb-が出てきます。
しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。
いったい何がいけないいのでしょうか。

画像の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


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2010年3月17日(水) 00:52 
>スタイルを枠なしにしたのですが、タイトルb-が出てきます。
>しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。

なんか矛盾を感じてならないのですが、
もしかして下のスタートバーに出てくる文字をタイトルバーと呼んでいるのでしょうか…
タイトルバーと言われると、ウインドウの上部を思い浮かべるのですが…

ウインドウ上部を消し去りたいのにばってんなしの半端な状態で残ってしまうんです、という状況だったらすみません。

スタートバーに出てくる文字列を出ないようにするためにだとすれば、自分はウインドウの拡張スタイルで「ツールウインドウ」とやらを設定したことがあります。
ただしこれだと、枠ありの場合は枠の形が変わってしまいますが…。

あと、konisiさんの書かれている、「右クリック時にメニューを出す」というのが枠なしの場合に終了させる方法でよくあるものですので頭の片隅にでもどうぞ。

しかしプログラムを作ってみた場合、最新のABっていうのがver4の最新かver5βの最新かでも違ってくるんでしょうかね…?


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2010年3月18日(木) 13:42 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
まず、
コード:
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$)
#×ボタンが無くてもAlt+F4で閉じれますよ。

添削してみた。
コード:
'-----------------------------------------------------------------------------
'イベントプロシージャ
'-----------------------------------------------------------------------------
'このファイルには、ウィンドウ[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を主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2010年3月18日(木) 14:16 
名無しさんkonisiさんありがとうございます。
konisiさんのだとタイマーのインターバルが1秒になってますよね。
実行のタイミングによっては1秒程度ズレますが…
難しいところですね。
ありがとうございました。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 8 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Ahrefs [Bot] & ゲスト[18人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean