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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0506
ちょちんちゃリストボックスからアプリ自体を再読み込みさせる為には4解決


ちょちんちゃ

リンク

2010/5/6(Thu) 11:35:45|NO.32470

3回目の投稿です。

お世話になってます。

今回また躓いてしまったのでお聞きしたく

また来てしまいました。

宜しくお願い致します○┓ペコッ



前回、ウィンドウ枠のないウィンドウの操作やリストボックスについて

教えていただきました。

今回お聞きしたいのは

リストボックスの項目をWクリックで最初に戻る、

つまりアプリ自体を再読み込みし、もう一度やり直すことができるようにしたいんです。

今の現状、流れとしては

0ウィンドウ(gsel 0, 1)右クリックでポップアップ
項目クリックで別ウィンドウ(gsel 3, 2)リストボックス表示

; A
; B
; C
; 終了

この終了をWクリックしたとき
リストボックスを表示している3ウィンドウを閉じて
最初の0ウィンドウを表示させ右クリックにてポップアップ表示・・・

と、繰り返しできるようにしたいんですが

どうすればよいのでしょうか。

0ウィンドウとは別のスクリプトで

リストボックスを表示させるためのスクリプトは

bgscr 3,125,185,,50,50,,
bgscr 2,300,300,2,100,100,100,158

gsel 3,2

; WM_COMMAND
oncmd gosub *command, $111
onclick gosub *onjump1

objsize 125,170

listbox a, 60, " \n 1R A\n 2R B\n 3R C\n 4R 終了"
hListbox = objinfo(stat, 2)
GetWindowLong hListbox, -16
SetWindowLong hListbox, -16, stat | 1;LBS_NOTIFY

width , , xpos, ypos

stop

*command
if lparam = hListbox {
if HIWORD(wparam) = 2 {
if a == 1 : bgscr 2,300,300,2,100,100,100,158 : picload "A.jpg" ,1 : gsel 2,2
if a == 2 : bgscr 2,300,300,2,100,100,100,158 : picload "B.jpg" ,1 : gsel 2,2
if a == 3 : bgscr 2,300,300,2,100,100,100,158 : picload "C.jpg" ,1 : gsel 2,2
if a == 4 : gosub *exit
width , , xpos, ypos

}
}

return
*onjump1
gsel 2, -1
gsel 3, 2

return

**********************************************************


元のメインとなるスクリプトに

*exit
; 現在のx座標値、y座標値を保存
notesel buf
noteadd "[WINDOW posx] "+ginfo(4), 0, 1
noteadd "[WINDOW posy] "+ginfo(5), 1, 1
notesave "windowpos.ini"
end

と、書いています。


どこをどう載せて説明すればいいのか

わからないのでわかりづらいかもしれませんが、

宜しくお願い致します。



この記事に返信する


ちょちんちゃ

リンク

2010/5/6(Thu) 11:52:35|NO.32471

****追記です*****

メインとなスクリプトには下記のようになってます。
ジャンプして読み込んだ先が先ほど書いたリストボックス表示になります。


#include "user32.as"
#define ctype HIWORD(%1) (%1 >> 16 & $FFFF)
#define WM_NCLBUTTONDOWN $000000A1
#define HTCAPTION 2
bgscr 0,300,300,0,,,110,20
picload "dekadepth.jpg" ,1

gsel 0,2
onclick gosub *onjump ; マウスクリック時
onexit *exit1

CreatePopupMenu
hMenu.1 = stat
AppendMenu hMenu.1, 0, $1, "AA"
AppendMenu hMenu.1, 0, $2, "BB"
AppendMenu hMenu.1, 0, $3, "CC"
AppendMenu hMenu.1, $800,0, " "
AppendMenu hMenu.1, 0, 0, "終了"

stop


*onjump

if wparam == 1 {
cursel = ginfo_sel : gsel ginfo_act
sendmsg hwnd ,$a1,2,z
gsel cursel

}
gsel 0,2
xpos = ginfo_wx1;ウィンドウの左上X座標
ypos = ginfo_wy2;ウィンドウの右下Y座標



if wparam = 2 {
TrackPopupMenu hMenu.1, $100, ginfo(0), ginfo(1), 0, hwnd, 0
if stat = 0 : goto *exit ; アプリ終了
if stat = $1 : goto *A
if stat = $2 : goto *B
if stat = $3 : goto *C

return
}

return


*A
#include "a.hsp"
*B
#include "b.hsp"
*C
#include "c.hsp"


exist "windowpos.ini"
if strsize != -1 {
; 前回のx座標値、y座標値を読み込む
notesel buf
noteload "windowpos.ini"
noteget posx, 0
noteget posy, 1
}

screen , 200, 200, 2, int(posx), int(posy)

onexit *exit

gsel 0, 1

stop


*exit
; 現在のx座標値、y座標値を保存
notesel buf
noteadd "[WINDOW posx] "+ginfo(4), 0, 1
noteadd "[WINDOW posy] "+ginfo(5), 1, 1
notesave "windowpos.ini"
end


*error
screen 0,250,50,2
dialog "エラーです。下の数字を報告してください。\n"+"\n1 : "+wparam+"\n2 : "+lparam+"\n3 : "+iparam,1,"エラー"
goto *exit

*exit1
; どこのウィンドウにも張り付いていないメニューは明示的に破棄
DestroyMenu hMenu.1

end



希望としては今のこのスクリプトを変えずに

繰り返しする為のスクリプトを足したいです。

宜しくお願い致します。



テック

リンク

2010/5/6(Thu) 14:25:21|NO.32475

質問の内容が、とても複雑になってますね〜。
ちょっと整理したいのですが、よろしいでしょうか?

1.リストボックスを表示させるためのスクリプトと
 メインのスクリプトは、別のHSPファイルになっているのでしょうか?
※注意書きにもありますが、スクリプトは、
 半角の<pre>〜</pre>で囲んだほうがいいです。
 そうすれば、以下の例のように囲んだ箇所のテキストカラーが変わり、
 スクリプトとスクリプト以外の区別が付きやすくなります。
 また別のHSPファイルになっているのであれば、
 以下の例のように但し書きを記載したほうがいいかもしれません。

[リストボックスを表示させるためのスクリプトのファイル名.hsp]

 リストボックスを表示させるためのスクリプトの内容

[メインのスクリプトのファイル名.hsp]

 メインのスクリプトの内容

2.今の状況は、
 .織ぅ肇襯弌(最小化・最適化・終了ボタン)なし・枠なしのウィンドウが表示される
 ▲Εンドウを右クリックすると、「AA」「BB」「CC」「終了」の
  リストボックスが表示される。
 「AA」「BB」「CC」のいずれかを選択すると、
  初期のタイトルバー・枠なしのウィンドウが消えて、
  タイトルバー(最小化・最適化・終了ボタン)ありのウィンドウが表示される

以上の状況でよろしいでしょうか?
3.質問の内容は、
 ぞ綉の状態で、ウィンドウを右クリックすると、「AA」「BB」「CC」「終了」の
  リストボックスが表示される。
 ァ崕了」を選択すると、タイトルバー(最小化・最適化・終了ボタン)あり
 のウィンドウが消えて、,離織ぅ肇襯弌(最小化・最適化・終了ボタン)なし・
   枠なしのウィンドウを表示したい
 ということでよろいでしょうか?

上記の質問内容であれば、
タイトルバー(最小化・最適化・終了ボタン)なしと
タイトルバー(最小化・最適化・終了ボタン)ありの実行ファイルを
別々に作成し、
exec "filename"命令で実行する方法か、

run "filename"命令で指定したファイルに制御を移す方法が
あると思われます。
※run命令で指定するファイル名は、
HSPスクリプトエディタのメニュー「HSP」−「オブジェクトファイル作成」
で作成した拡張子がAXのファイルでなければいけません。



ちょちんちゃ

リンク

2010/5/6(Thu) 19:27:19|NO.32494

お返事ありがとうございます。
(メインとなるスクリプト)

#include "user32.as" #define ctype HIWORD(%1) (%1 >> 16 & $FFFF) #define WM_NCLBUTTONDOWN $000000A1 #define HTCAPTION 2 bgscr 0,300,300,0,,,110,20 picload "dekadepth.jpg" ,1 gsel 0,2 onclick gosub *onjump ; マウスクリック時 onexit *exit1 CreatePopupMenu hMenu.1 = stat AppendMenu hMenu.1, 0, $1, "AA" AppendMenu hMenu.1, 0, $2, "BB" AppendMenu hMenu.1, 0, $3, "CC" AppendMenu hMenu.1, $800,0, " " AppendMenu hMenu.1, 0, 0, "終了" stop *onjump if wparam == 1 { cursel = ginfo_sel : gsel ginfo_act sendmsg hwnd ,$a1,2,z gsel cursel } gsel 0,2 xpos = ginfo_wx1;ウィンドウの左上X座標 ypos = ginfo_wy2;ウィンドウの右下Y座標 if wparam = 2 { TrackPopupMenu hMenu.1, $100, ginfo(0), ginfo(1), 0, hwnd, 0 if stat = 0 : goto *exit ; アプリ終了 if stat = $1 : goto *A if stat = $2 : goto *B if stat = $3 : goto *C return } return *A #include "a.hsp" *B #include "b.hsp" *C #include "c.hsp" exist "windowpos.ini" if strsize != -1 { ; 前回のx座標値、y座標値を読み込む notesel buf noteload "windowpos.ini" noteget posx, 0 noteget posy, 1 } screen , 200, 200, 2, int(posx), int(posy) onexit *exit gsel 0, 1 stop *exit ; 現在のx座標値、y座標値を保存 notesel buf noteadd "[WINDOW posx] "+ginfo(4), 0, 1 noteadd "[WINDOW posy] "+ginfo(5), 1, 1 notesave "windowpos.ini" end *error screen 0,250,50,2 dialog "エラーです。下の数字を報告してください。\n"+"\n1 : "+wparam+"\n2 : "+lparam+"\n3 : "+iparam,1,"エラー" goto *exit *exit1 ; どこのウィンドウにも張り付いていないメニューは明示的に破棄 DestroyMenu hMenu.1 end
(別スクリプトでリストボックスを表示させる為のスクリプト)
(#include "a.hsp")

bgscr 3,125,185,,50,50,, bgscr 2,300,300,2,100,100,100,158 gsel 3,2 ; WM_COMMAND oncmd gosub *command, $111 onclick gosub *onjump1 objsize 125,170 listbox a, 60, " \n 1R A\n 2R B\n 3R C\n 4R 終了" hListbox = objinfo(stat, 2) GetWindowLong hListbox, -16 SetWindowLong hListbox, -16, stat | 1;LBS_NOTIFY width , , xpos, ypos stop *command if lparam = hListbox { if HIWORD(wparam) = 2 { if a == 1 : bgscr 2,300,300,2,100,100,100,158 : picload "A.jpg" ,1 : gsel 2,2 if a == 2 : bgscr 2,300,300,2,100,100,100,158 : picload "B.jpg" ,1 : gsel 2,2 if a == 3 : bgscr 2,300,300,2,100,100,100,158 : picload "C.jpg" ,1 : gsel 2,2 if a == 4 : gosub *exit width , , xpos, ypos } } return *onjump1 gsel 2, -1 gsel 3, 2 return

と、なっています。

2.今の状況は、
 .織ぅ肇襯弌(最小化・最適化・終了ボタン)なし・枠なしのウィンドウが表示される
 ▲Εンドウを右クリックすると、「AA」「BB」「CC」「終了」の
  リストボックスが表示される。
 「AA」「BB」「CC」のいずれかを選択すると、
  初期のタイトルバー・枠なしのウィンドウが消えて、
  タイトルバー(最小化・最適化・終了ボタン)ありのウィンドウが表示される


↑確認内容ですが
△留Εリックでリストボックスじゃなくてポップアップが開きます。
の初期の枠なしウィンドウが消えてとありますが
消えずに最前面のままそのウィンドウの真下に別ウィンドウでリストボックスが開きます。


質問内容としまして、

そのリストボックスの項目にある終了をWクリックしたとき、
今のスクリプトだとジャンプ先にendとありますので
アプリ自体が終わってしまいます。
それを終わらせずにリストボックスが消えて最初の枠なしのウィンドウだけの状態にし
尚且つそのウィンドウを右クリックにてポップアップ・・・
と、繰り返せるようにしたいんです。



ちょちんちゃ

リンク

2010/5/13(Thu) 10:16:22|NO.32633

おはようございます。

自分なりに考えてやってみた結果なんとかできましたので

お伝えしたく参りました。

別スクリプトのリストボックス項目Wクリック判定の中の




*command if lparam = hListbox { if HIWORD(wparam) = 2 { if a == 1 : bgscr 2,300,300,2,100,100,100,158 : picload "A.jpg" ,1 : gsel 2,2 if a == 2 : bgscr 2,300,300,2,100,100,100,158 : picload "B.jpg" ,1 : gsel 2,2 if a == 3 : bgscr 2,300,300,2,100,100,100,158 : picload "C.jpg" ,1 : gsel 2,2 if a == 4 : gosub *exit




の4項目





if a == 4 : gosub *exit











if a == 4 : gsel 2, -1 : gsel 3, -1 : gsel 0, 2 : goto *12345





と、して


メインスクリプトの最初の部分、






#include "user32.as" #define ctype HIWORD(%1) (%1 >> 16 & $FFFF) #define WM_NCLBUTTONDOWN $000000A1 #define HTCAPTION 2 bgscr 0,300,300,0,,,110,20 picload "aaaaa.jpg" ,1





のウィンドウ配置する部分bgscr前に、






#include "user32.as" #define ctype HIWORD(%1) (%1 >> 16 & $FFFF) #define WM_NCLBUTTONDOWN $000000A1 #define HTCAPTION 2 *12345;ここへ飛ばす bgscr 0,300,300,0,,,110,20 picload "dekadepth.jpg" ,1





としたら、できました。


ありがとうございました。



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