ページ 11

プロンプト

Posted: 2006年6月20日(火) 21:50
by ウソツキ
#88BASICで、
画面がいっぱいになって、
その後のプログラムが読まれないで停止してしまいます。
プロンプト画面をスクロールできればいいと思うんですが
できますか?

Posted: 2006年6月20日(火) 22:24
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にしてください。