プロンプト

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ウソツキ

プロンプト

#1 投稿記事 by ウソツキ »

#88BASICで、
画面がいっぱいになって、
その後のプログラムが読まれないで停止してしまいます。
プロンプト画面をスクロールできればいいと思うんですが
できますか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

#N88BASICの間違いだとは思いますがそこはスルーして置きまして、どのような状態になっているのかがよくわかりません。

コード: 全て選択


Sub Scrool(dx As Long,dy As Long,Width As Long,Hight As Long,sx As Long,sy As Long)
	Dim hDC As HDC
	hDC=GetDC(_PromptSys_hWnd)
	BitBlt(hDC,dx+1,dy+1,Width-1,Hight-1,hDC,dy-sx+1,dy-sy+1,SRCCOPY)
End Sub
とりあえず関数作ってみました。
第一引数~第四引数でスクロールする範囲を決めます。
第五引数と第六引数は、それぞれx,y座標に対してどれだけスクロールさせるか決めます。
注意点:Promptモードで動かしてください。
ノーマルウインドウモードで使用する場合は、関数内2行目のGetDCの第一引数を変更すればおそらく動きます。
何度も連続で使用すると、まれにウインドウがおかしくなります。何度もそのような状態になるようでも、僕には回避方法がわかりません。ご了承ください。


サンプル

コード: 全て選択


#N88BASIC
Sub Scrool(dx As Long,dy As Long,Width As Long,Hight As Long,sx As Long,sy As Long)
	Dim hDC As HDC
	hDC=GetDC(_PromptSys_hWnd)
	BitBlt(hDC,dx+1,dy+1,Width-1,Hight-1,hDC,dy-sx+1,dy-sy+1,SRCCOPY)
End Sub
Do
	PSet(40,40),7
	Scrool(1,1,600,400,1,1)
Loop
ちなみに、描画可能な点のうちの一番左上の点を(0,0)にしてあるので、左の端に押し込めてしまう場合は第一引数を-1に、上の端に押し込めたい場合は第二引数を-1にしてください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

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