ab.com コミュニティ https://www.activebasic.com/forum/ |
|
困っています。 https://www.activebasic.com/forum/viewtopic.php?t=2625 |
ページ 1 / 1 |
作成者: | ぼん [ 2010年3月06日(土) 20:45 ] |
記事の件名: | 困っています。 |
はじめまして。Activebasicでプログラミングでデジタル時計を作りたいです。 初心者なのでどうしたらいいのか全くわかりません。教えてください。 できればプログラムを見せていただけるといいです。 使っているのは最新のABです。OSは2000です。 ご教示よろしくお願いします。 |
作成者: | konisi [ 2010年3月10日(水) 15:09 ] |
記事の件名: | |
#ソースを打ち込んでコンパイルし、実行するくらいは出来るという前提で話を進めます。 #これが分からない場合はその事を明記して、もう一度質問してくださいな。 どんなデジタル時計が作りたいんですか? 簡単な描画なら#N88BASICと1行目に書けば、Line、Circle、Print、Cls、PSet等で行えます。 コード: #N88BASIC Do 'DoからLoopの間に書かれた事は何度でも繰り返し実行されます。 Sleep(10) '少しの時間が経過する間待つ。単位は0.001秒(1ミリ秒)。つまり10だと0.01秒。 Locate 0,0 '書き出す位置を調整 Print Time$() '現在時刻を表示 LoopLineでは線や四角形、Circleでは円や扇形、PSetでは点が書けます。 そしてClsでは画面の消去が出来ます。 ヘルプを見つつやってみてください。 |
作成者: | ぼん [ 2010年3月10日(水) 20:02 ] |
記事の件名: | |
konisiさん、ありがとうございます。 ええと僕がつくりたいのはそういうんじゃなくタイトルバー(?)が無くて 数字は0~10の画像を貼りたいんです。 右クリックで時間になったらアラームとかの設定ができたりするのがいいです。 |
作成者: | konisi [ 2010年3月14日(日) 05:21 ] |
記事の件名: | |
ノーマルウインドウベースのプロジェクトを作成し、スタイルを枠なしにする事で タイトルバーはなくなります。 画像の読み込みと描画はLoadImage関数、GetDC関数、BitBlt関数等を使うことで行えます。ヘルプと過去ログを読んできてください。 右クリック時にメニューを出すには、右クリックされたことを検出して、TrackPopupMenu関数を使ってポップアップメニューを表示するという手法が使えるようです。 #画像が11枚ある件について突っ込むべきか・・・ |
作成者: | ぼん [ 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 |
作成者: | 名無し [ 2010年3月17日(水) 00:52 ] |
記事の件名: | |
>スタイルを枠なしにしたのですが、タイトルb-が出てきます。 >しかも右上のばってんとかが消えてしまい閉じれないウインドウになってしまします。 なんか矛盾を感じてならないのですが、 もしかして下のスタートバーに出てくる文字をタイトルバーと呼んでいるのでしょうか… タイトルバーと言われると、ウインドウの上部を思い浮かべるのですが… ウインドウ上部を消し去りたいのにばってんなしの半端な状態で残ってしまうんです、という状況だったらすみません。 スタートバーに出てくる文字列を出ないようにするためにだとすれば、自分はウインドウの拡張スタイルで「ツールウインドウ」とやらを設定したことがあります。 ただしこれだと、枠ありの場合は枠の形が変わってしまいますが…。 あと、konisiさんの書かれている、「右クリック時にメニューを出す」というのが枠なしの場合に終了させる方法でよくあるものですので頭の片隅にでもどうぞ。 しかしプログラムを作ってみた場合、最新のABっていうのがver4の最新かver5βの最新かでも違ってくるんでしょうかね…? |
作成者: | konisi [ 2010年3月18日(木) 13:42 ] |
記事の件名: | |
まず、 コード: 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" |
作成者: | ぼん [ 2010年3月18日(木) 14:16 ] |
記事の件名: | |
名無しさんkonisiさんありがとうございます。 konisiさんのだとタイマーのインターバルが1秒になってますよね。 実行のタイミングによっては1秒程度ズレますが… 難しいところですね。 ありがとうございました。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |