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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0831
初心者☆ウィンドウid1のウィンドウからウィンドウid0の操作9解決


初心者☆

リンク

2019/8/31(Sat) 21:05:37|NO.88276

ウィンドウid1のウィンドウからウィンドウid0の操作をしたいんですがどうすればいいですか?

検索しても思い通りの情報が見つからなかったので...。



この記事に返信する


utyu

リンク

2019/8/31(Sat) 21:38:51|NO.88277

gsel 0
 



初心者☆

リンク

2019/8/31(Sat) 22:04:14|NO.88278

utyuさん ごめんなさいそういうことではないんです...
ウィンドウ 1から ウィンドウ0をリモート操作(?)みたいなことをやりたいのです。



初心者☆

リンク

2019/8/31(Sat) 22:33:07|NO.88279

寝ますね..。



とあるプログラマ

リンク

2019/9/1(Sun) 00:33:18|NO.88280

リモート操作とはどういうことなのでしょうか。
描画関連ならgsel、オブジェクト操作なら生成時のstatのオブジェクトIDを使って操作できますし、例えばウィンドウ1で文字列を入力してウィンドウ0のタイトルを変更するというならば、inputとgselとtitleで実現できます。
一応SendMessage/PostMessageでウィンドウメッセージの送信は可能ですが同じプロセスである以上は必要性皆無だと思いますが…

それとも別々に起動したexeのウィンドウ間で何らかののやり取りをしたいということでしょうか。
もしくはウィンドウ1のボタンでウィンドウ0の位置を変えるみたいなことでしょうか。

この辺 何をしたいのかをもう少し詳しく教えて頂かないと難しいと思います…



初心者☆

リンク

2019/9/1(Sun) 12:15:39|NO.88281

少し掲示板に来れなくなるかもしれません。

なので解決チェックつけときます。



初心者☆

リンク

2019/9/1(Sun) 12:19:12|NO.88282

とあるプログラマ さん ドット絵を作るソフトの開発で
ウィンドウ1で線を描いて ウィンドウ0で拡大して表示 をするとウィンドウ1では線が小さくて書きずらいのでどうにかしてリモート操作みたいなことをしたいのです...



 

リンク

2019/9/1(Sun) 14:04:58|NO.88283

 解決していない場合、わざわざ解決チェックする必要はないと思いますが。
「ウィンドウ1の画面を拡大して ウィンドウ0に表示したい」ということでしたら、gzoom命令を使えばいいと思います。
ヘルプを見ればわかるかと。



とあるプログラマ

リンク

2019/9/1(Sun) 18:30:49|NO.88287

>>ドット絵を作るソフトの開発で
>>ウィンドウ1で線を描いて ウィンドウ0で拡大して表示 をするとウィンドウ1では線が小さくて書きずらいのでどうにかしてリモート操作みたいなことをしたい
ということですが、「ウィンドウの内容を、内容を拡大した別ウィンドウで操作して描画する」という認識でよろしいでしょうか。一応それらしい動作のプログラムを組んでみましたが求めているものと違っていたらすみません。

// プログラム概要 // ウィンドウ1で拡大された内容を元にウィンドウ0を描画する // 操作法: ウィンドウ1でクリック&ドラッグで線を引く、ESCで消去、エディットボックスで色を設定 // スクリーン0作成 (操作先) screen 0,128,128 gsel 0,2 title "ウィンドウ0" windowX.0=ginfo_winx windowY.0=ginfo_winy mes "ドット" // スクリーン1作成 (操作元) screen 1,512,512+30 ;RGBパネルを作るため30ピクセル拡大 title "ウィンドウ1" windowX.1=ginfo_winx windowY.1=ginfo_winy-30 ;30ピクセル拡大した分は描画から外すので引く // 色指定エディットボックス作成 randomize ;ランダムに色を設定 r=rnd(256) g=rnd(256) b=rnd(256) pos 50,5 input r,50,20 pos 110,5 input g,50,20 pos 170,5 input b,50,20 // メインループ repeat // ウィンドウ1(操作元を再描画) gsel 1 redraw 0 color 255,255,255 boxf color line 0,29,windowX.1,29 ;境界線 pos 5,5 mes "RGB:" ;色指定スペース // ウィンドウ0の内容を操作ウィンドウ(ウィンドウ1)にコピー pos 0,30 gzoom windowX.1, windowY.1, 0, 0, 0, windowX.0, windowY.0,0 redraw 1 ;描画終わり stick key,256 ;キー入力を取得 if (key&256) { ;左クリックだったら // クリック位置を記憶。ウィンドウ0での座標とするため拡大率で割る // 拡大率=ウィンドウ1の大きさ÷ウィンドウ0の大きさ ClickX=(mousex)/(windowX.1/windowX.0) ClickY=(mousey-30)/(windowY.1/windowY.0) // ウィンドウ0に描画 gsel 0 color r,g,b line oldX,oldY , ClickX,ClickY ;ドットを設定するならpsetだけど線を引くならline // 線を引く場合は1ループ前の位置から今の位置に向けて線を引くので記憶しておく oldX=ClickX oldY=ClickY }else:if (key&128) { // ESCを押したらすべて消去するようにする gsel 0 redraw 0 color 255,255,255 boxf color redraw 1 }else { // クリックしてなかったら古い座標をカーソルの座標に更新する。 // こうしないと最後にクリックを離した位置から線が引かれてしまう oldX=(mousex)/(windowX.1/windowX.0) oldY=(mousey-30)/(windowY.1/windowY.0) } await 16 ;ループ時にはawait/waitを忘れずに loop stop



初心者☆

リンク

2019/9/10(Tue) 12:17:08|NO.88391

とあるプログラマ さん
解決しましたこうすればよかったんですね!
ありがとうございました


>>解決していない場合、わざわざ解決チェックする必要はないと思いますが。
そうですよね..。



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