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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0821
xala常に手前に表示7解決


xala

リンク

2010/8/21(Sat) 19:29:52|NO.34553

いつもお世話になっております

題名の通り常に『手前に表示』をチェックボックスでon/offさせようとしたのですが
一度チェクを入れてメインウィンドウを手前に表示してから
チェックを外してサブウィンドウを手前に表示させることが出来ません

解決策があれば教えてください よろしくお願いします


screen 0 : title "メイン" n = 0 : chkbox "常に手前",n screen 1 : title "サブ" *main if n = 1 { gsel 0,2 }else{ gsel 0,0 //サブを上に持ってくることが出来ない... } wait 1 : goto*main



この記事に返信する


ぽっと

リンク

2010/8/21(Sat) 19:43:06|NO.34554

gsel 1,2 じゃだめなの?



xala

リンク

2010/8/21(Sat) 19:47:21|NO.34555

早速の解答ありがとうございます

gsel 1,2にするとループの中にgsel 1,2が入っているので
メインウィンドウにあるチェックボックスがそもそも
触れなくなってしまうのです;;



inovia

リンク

2010/8/21(Sat) 20:13:42|NO.34557

gsel 0,-1 の後に、gsel 0,1 実行すると反映されるみたいですね。
変数 f を使用して1度のみ実行されるようにしています。


screen 0 : title "メイン" n = 0 : chkbox "常に手前",n screen 1 : title "サブ" *main if n = 1 { if f = 0 { gsel 0,2 f = 1 } }else{ if f = 1 { gsel 0,-1 gsel 0,1 f = 0 } } wait 1 : goto *main



info

リンク

2010/8/21(Sat) 20:39:06|NO.34558

ウインドウメッセージを使用した場合、記述は多くなりますが
実際の処理は多少、少なくて済みます。

chkbox を押したときのみ、切り替え処理をすることが出来ます。



SetWindowPos を使っているのは

stock = ginfo_sel
// 処理
gsel stock

の様に、ウインドウを選択しなおすのが面倒だからです。




#include "user32.as" #define HWND_TOPMOST $FFFFFFFF #define SWP_NOSIZE $00000001 #define SWP_NOMOVE $00000002 #define WM_COMMAND $00000111 #define BM_GETCHECK $000000F0 #define BST_UNCHECKED $00000000 #define BST_CHECKED $00000001 #define BST_INDETERMINATE $00000002 screen 0 : title "メイン" hMainWnd = hwnd chkbox "常に手前",dummy hChBox = objinfo_hwnd(stat) oncmd gosub *msg_WM_COMMAND , WM_COMMAND screen 1 : title "サブ" hSubWnd = hwnd stop *msg_WM_COMMAND if hChBox = lparam { sendmsg hChBox , BM_GETCHECK ,0,0 switch stat case BST_CHECKED SetWindowPos hMainWnd , HWND_TOPMOST , 0,0 , 0,0 , SWP_NOMOVE | SWP_NOSIZE swbreak case BST_UNCHECKED SetWindowPos hMainWnd , hSubWnd , 0,0 , 0,0 , SWP_NOMOVE | SWP_NOSIZE swbreak swend } return



xala

リンク

2010/8/21(Sat) 21:16:29|NO.34560

inoviaさん、infoさん ご回答ありがとうございます!

今回はinfoさんのサンプルを組み込むことにさせていただきました
しかし色々と難しい。。一応質問は解決にしますが
今後のためにもSetWindowPosなどのwin32??の解説がされたサイト等ありましたら
教えていただけると嬉しいです



info

リンク

2010/8/21(Sat) 22:40:05|NO.34565

もしC言語の知識がないのなら
HspをによるWin32の使い方を 勉強するのが良いと思います。

>>ttp://yokohama.cool.ne.jp/chokuto/index.html
古い情報もありますが、色々と為になります。
 hsp から Win32Api を使用する事を勉強する際には便利です。

>>ttp://www.kumei.ne.jp/c_lang/index.html
 有名なページですが hsp から使用する方法は載っていません。( おもに C言語 )
 少し情報が古い部分もありますが。さまざまな情報が解りやすくまとめてあるので便利です。
C言語を勉強する際に重宝するので、しっかり勉強したい際には、読んでみて損はないです。

>>ttp://msdn.microsoft.com/ja-jp/default.aspx
 Microsoftのページであり、さまざまな情報が載っている巨大ライブラリです
 Win32 の関数の情報。
構造体の情報が等(日本語化されていない部分もありますが)が
 多分全てのWin32関数の載っています。
 自分は、情報が多すぎて最初は戸惑いましたが
 なれればウインドウズプログラムの強い味方です。
hspから使用する方法は残念ながら載っていません。

 Win32の命令は とても難解に見えますが、基本ユーザーのために作られているので。
 使いにくくはないです。むしろ使いやすいと自分は思います。

まず最初は ちょくとさんのページである
>>ttp://yokohama.cool.ne.jp/chokuto/index.html
•Advanced HSP のリンクを開き
項目を、最初から、一つづつ勉強してみることをお勧めします。

よくわからない場合は、[ hsp Win32 ] でWeb検索してもいいと思います。
もしかしたら、自分に合った方法が見つかるかもしれません。



xala

リンク

2010/8/21(Sat) 23:15:43|NO.34566

おおお!!
これをきにWin32APIの勉強をしたいと思います。

解答してくれた方本当にありがとうございました
それでは出直してきます(*'-')ゞ



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