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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1204
たねはらテキストエディタ作成について7解決


たねはら

リンク

2011/12/4(Sun) 22:15:03|NO.43499

こんちは。
この質問を見ていただいてありがとーございます。

現在、テキストエディタを作成しているのですが、
テキストエディタのウインドウの最大化とドラッグによる可変はできたのですが、
mesboxで作成したメッセージボックスのサイズも変えたいのです。

要は、ウインドウのサイズが変更されたら、同時にメッセージボックスのサイズも変えたいのです。
様々な手段を試しましたが、どうしてもうまくいかないです。
どうすればうまくいくか教えてください。



この記事に返信する


れみはる

リンク

2011/12/4(Sun) 22:41:30|NO.43500

WinAPIになりますが、ウィンドウのサイズが変わるとWM_SIZING(0x00005)メッセージが送られます。
「WinAPIってなに?」と思われるかもしれませんが、
とりあえず
「oncmd gosub *ラベル 0x00005」と書けば、ウィンドウのサイズが変わるとラベルに飛ぶ と思っておいていいと思います。

それと、サブルーチンジャンプじゃないとうまく動かないみたいです。


#include "obj.as" #include "user32.as" txt = "" screen , ginfo(20), ginfo(21) GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat | $10000 | $40000 width 300, 300 oncmd gosub *inWM_RESIZE, 0x00005 //リサイズされたら割り込み mesbox txt, ginfo_winx, ginfo_winy, 5 stop *inWM_RESIZE size = ginfo_winx, ginfo_winy,0,0 resizeobj 0, size, 1 //リサイズ return



たねはら

リンク

2011/12/4(Sun) 23:11:25|NO.43501

早速回答いただきありがとーございます。
早速試してみたところ、エラーが発生しました。
エラーは「パラメータの値が異常です」で、
どうやらobj.asの93行目でエラーが出てしまうようです。
93行目を見てもさっぱりわかりません。どう対処したらいいでしょう。

ソースを載せてほしい場合は載せます。



ヂオン

リンク

2011/12/5(Mon) 11:13:54|NO.43515

多分、選択されているウィンドウID が変化したため
存在しないObjectID を参照しようとしているのではないでしょうか?



screen 0 input a input a input a:id_input3 = stat screen 1 mes objinfo_hwnd(id_input3)// エラーが起こる

サイズ変更のサブルーチンを以下に置き換えたら動作するはずです。


*inWM_RESIZE gsel ginfo_intid size = ginfo_winx, ginfo_winy,0,0 resizeobj 0, size, 1 //リサイズ return

ちなみに、MoveWindow をそのまま使う方法もあります。


#include "user32.as" screen , ginfo(20), ginfo(21) GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat | $10000 | $40000 width 300, 300 oncmd gosub *inWM_RESIZE, 0x00005 //リサイズされたら割り込み txt="":mesbox txt:hwnd_mesbox = objinfo_hwnd(stat) gosub *inWM_RESIZE stop *inWM_RESIZE MoveWindow hwnd_mesbox,0,0,ginfo_winx,ginfo_winy,1 return



たねはら

リンク

2011/12/5(Mon) 12:02:53|NO.43517

早いご回答ありがとーございます。
MoveWindow関数を利用することで、無事メッセージボックスがドラッグで変更できるようになりました!
しかし、問題点がまた発生しまして……。
実行した後に終了すると、「サブルーチン外のreturnは無効です」のエラーが発生します。
returnを使っているのは、リサイズの時のサブルーチンだけですが、ちゃんとgosub命令でジャンプしてますし……。
全然サブルーチン外ではないと思うのですが、このエラーの原因にはどういうものが考えられますか?
何度も質問してすいません……。



たねはら

リンク

2011/12/5(Mon) 12:07:29|NO.43518

あ、すいません。追記です。
さきほどのエラーのやつは、サブルーチンが書いてあるreturnにエラーが出るようです。
よくソースを見てみたら、ほかにもreturnを使ってる箇所はありますが、どうやらそこではないようです。
関係ないかもしれませんが、一応追記です。すいません。



通りすがり

リンク

2011/12/5(Mon) 17:08:34|NO.43519

このままではきりがないので、
そのエラーのでるスクリプトを貼ったほうが早いと思います。



たねはら

リンク

2011/12/5(Mon) 18:56:13|NO.43521

すいません。
原因はわかりませんが、なぜかエラーが発生しなくなりましたので、これにて解決とします。
アドバイスをしてくださった皆さま、本当にありがとーございました。
また困ったことがあったら質問することがあるかもしれませんが、
その時もよろしくお願いします。



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