HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0517
やま二つの処理を同じウインドウに表示する事は可能でしょうか?6解決


やま

リンク

2012/5/17(Thu) 14:35:14|NO.46674

はじめは、一つのウインドウに2つの処理をするようにプログラムしていたのですが、Mesboxの処理を行うときに四角の処理が一時停止してしまいました。
そこで、HSPThread.dllを使用してみたところ、四角は停止しなくなったのですが今度は一つのウインドウに表示する事ができませんでした・・。
二つの処理を同じウインドウに表示する事は可能でしょうか?
よろしくお願いします。

できれば、Mesboxの処理を減らさない方法でお願いします。


#uselib "HSPThread.dll"
#func HSPCreateThread "HSPCreateThread" int,str,int,int,int,int,int

screen 2,640,480
mes "キーを押すと\n終了します"
title "B"
HSPCreateThread hwnd,"Sub.ax",0,0,640,480,0x100

onkey goto *key

buffer 1,100,100
color 0,100,0
boxf 0,0,100,100

color 255,255,255
font "",25
mes "\n くるくる"
gsel 0

gmode 0,100,100


*main
repeat 500
pos 250,80
redraw 0
color 255,255,255
boxf 150,0,350,150

r=0.05*cnt
grotate 1,0,0,r
redraw 1
await 10
loop

goto *main

*key
end
end
//----------------------------------------------
// これより別スレッド側のファイル Sub.ax
//----------------------------------------------
strbuf1=""
pos 0,200
mesbox strbuf1,640,280

repeat 100
cnt1=cnt
strbuf1=""
repeat 2000
strbuf1+="" +cnt1 +" aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb cccccccccccccccc\n"
loop
objprm 0,strbuf1
await 1000
loop



この記事に返信する


ヂオン

リンク

2012/5/22(Tue) 01:27:49|NO.46800

mesbox の ウィンドウハンドル に 対して
WM_GETTEXT と WM_SETTEXT を 併用すれば大丈夫なはずです。



fortunehill

リンク

2012/5/22(Tue) 14:25:41|NO.46809

/*これじゃ駄目なの?*/

;#uselib "HSPThread.dll" ;#func HSPCreateThread "HSPCreateThread" int,str,int,int,int,int,int ;screen 2,640,480 mes "キーを押すと\n終了します" title "B" ;HSPCreateThread hwnd,"Sub.ax",0,0,640,480,0x100 onkey goto *key buffer 1,100,100 color 0,100,0 boxf 0,0,100,100 color 255,255,255 font "",25 mes "\n くるくる" gsel 0 gmode 0,100,100 strbuf1="" pos 0,200 mesbox strbuf1,640,280 repeat 100 cnt1=cnt strbuf1="" repeat 2000 strbuf1+="" +cnt1 +" aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb cccccccccccccccc\n" loop objprm 0,strbuf1 ;await 1000 await 10 ; gosub *main ; loop repeat :gosub *main :await 100 :loop ; stop *main if (ii >=499) {ii = 0} ; ;repeat 500 pos 250,80 redraw 0 color 255,255,255 boxf 150,0,350,150 ;r=0.05*cnt r=0.05*ii ; grotate 1,0,0,r redraw 1 await 10 ii++ ; ;goto *main return ; *key end end



やま

リンク

2012/5/22(Tue) 14:41:00|NO.46810

ヂオン様

>WM_GETTEXT と WM_SETTEXT を 併用すれば
というのは、具体的にどのようにするのでしょうか・・・?

というのが
oncmd gosub *getmessage,WM_COPYDATA
でデータを受けて、
sendmsg mesboxid, WM_SETTEXT,, msg
でMesboxに表示させたところ、やはり最初に質問したときと同じように、四角の回転が処理待ちで一時停止してしまいました・・。
もしよろしければ、サンプルをお願いしたいのですが・・よろしくお願いします。

fortunehill 様
サンプル有難うございます。
残念ながら、
repeat 2000
strbuf1+="" +cnt1 +" aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb cccccccccccccccc\n"
loop
objprm 0,strbuf1
の間も、四角を回転させる処理をしたいのでダメなんです・・。



fortunehill

リンク

2012/5/22(Tue) 15:41:15|NO.46812

/*タイマーの割り込みは?*/

#include "user32.as" oncmd gosub *label,$113 onexit goto *label_1 onkey goto *label_1 settimer hwnd,999,1,0 buffer 1,100,100 color 0,100,0 boxf 0,0,100,100 color 255,255,255 font "",25 mes "\n くるくる" gsel 0 gmode 0,100,100 strbuf1="" pos 0,200 mesbox strbuf1,640,280 repeat 100 cnt1=cnt strbuf1="" repeat 2000 strbuf1+="" +cnt1 +" aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb cccccccccccccccc\n" loop objprm 0,strbuf1 await 1000 loop stop *label if (ii >=499) {ii=0} pos 250,80 redraw 0 color 255,255,255 boxf 150,0,350,150 r=0.05*ii grotate 1,0,0,r redraw 1 ii++ return *label_1 killtimer hwnd,999 end end



fortunehill

リンク

2012/5/22(Tue) 16:32:56|NO.46813

/*サブスレッドをメインスレッドに入れ子にする方法は?*/

#uselib "HSPThread.dll" #func HSPCreateThread "HSPCreateThread" int,str,int,int,int,int,int #include "user32.as" ; hwnd2 = hwnd bgscr 2,640,280,,0,200 ; SetParent hwnd,hwnd2 ; mes "キーを押すと\n終了します" title "B" HSPCreateThread hwnd,"Sub.ax",0,0,640,480,0x100 onkey goto *key buffer 1,100,100 color 0,100,0 boxf 0,0,100,100 color 255,255,255 font "",25 mes "\n くるくる" gsel 0 gmode 0,100,100 *main repeat 500 pos 250,80 redraw 0 color 255,255,255 boxf 150,0,350,150 r=0.05*cnt grotate 1,0,0,r redraw 1 await 10 loop goto *main *key end end /* strbuf1="" pos 0,0 ; mesbox strbuf1,640,280 repeat 100 cnt1=cnt strbuf1="" repeat 2000 strbuf1+="" +cnt1 +" aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb cccccccccccccccc\n" loop objprm 0,strbuf1 await 1000 loop */



やま

リンク

2012/5/22(Tue) 20:02:45|NO.46817

fortunehill 様
サンプルありがとうございます。

>入れ子にする方法
で考えていたような動作ができました。
早速、SetParentの動作を勉強中しています。

もし、良い方法が見つからなかったときは、2つのウインドウを上下に並べて、
擬似的に一つのウインドウなるように・・・などと考えていたので楽になりました。

みなさんありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.