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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1211
ekrnhtアドレスの取得21未解決


ekrnht

リンク

2011/12/11(Sun) 11:53:41|NO.43655

以下のようなソースをこの掲示板で見つけたのですが、inputでアドレスを表示して、そこに新しく、アドレスを打てばそこに飛ぶようにするにはどうするのですか。
参考にしたいのです。

#include "user32.as"
#include "comctl32.as"

#define WS_CLIPSIBLINGS 0x04000000
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
#define TCIF_TEXT 0x0001
#define TCM_FIRST 0x1300
#define TCM_INSERTITEMA (TCM_FIRST + 7)
#define TCM_GETCURSEL (TCM_FIRST + 11)
#define TCM_ADJUSTRECT (TCM_FIRST + 40)
#define SW_HIDE 0
#define SW_SHOW 5
#enum BTID_BACK = 0
#enum BTID_REFRESH
#enum BTID_FORWARD
#enum BTID_HOME
#enum BTID_CLOSE
#define WM_NOTIFY 0x004E
#define TCN_FIRST (-550)
#define TCN_SELCHANGE (TCN_FIRST - 1)
InitCommonControls
winobj "systabcontrol32", "", 0, WS_CLIPSIBLINGS|WS_CHILD|WS_VISIBLE, ginfo_sx, ginfo_sy, 0, 0
hTab = objinfo_hwnd(stat)
if hTab == 0 : end
dim tci, 7
sdim buf, 10, 5
buf = "yahoo", "google"
repeat 2
tci = TCIF_TEXT, 0, 0, varptr(buf.cnt), strlen(buf.cnt)
sendmsg hTab, TCM_INSERTITEMA, cnt, varptr(tci)
loop
dim rect, 4
sendmsg hTab, TCM_ADJUSTRECT, 0, varptr(rect)
btw = 50
bth = 24
buf = "戻る", "更新", "進む", "HOME", "閉じる"
pos rect.0, rect.1
repeat 5
if cnt == 3 : btw = 60
objsize btw, bth
button buf.cnt, *lb_button
if cnt == 0 : btFirst = stat
pos ginfo_cx+btw, rect.1
loop

dimtype ie, vartype("comobj"), 2
sdim urls, 1024, 2
urls.0 = "http://www.yahoo.co.jp/"
urls.1 = "http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8"
repeat 2
pos rect.0, rect.1+bth
axobj ie.cnt, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1
if cnt == 0 : ieFirst = stat
if cnt == 1 : ShowWindow objinfo_hwnd(stat), SW_HIDE
tmp = ie.cnt
tmp->"navigate" urls.cnt
delcom tmp
loop
ieID = 0
activeIE = ie.ieID
oncmd gosub *lb_OnNotify, WM_NOTIFY

*lb_button
switch stat-btFirst
case BTID_BACK
activeIE->"GoBack"
swbreak
case BTID_REFRESH
activeIE->"Refresh2" 3
swbreak
case BTID_FORWARD
activeIE->"GoForward"
swbreak
case BTID_HOME
activeIE->"Navigate" urls.ieID
swbreak
case BTID_CLOSE
delcom activeIE
end
swbreak
swend
stop

*lb_OnNotify
dupptr nmhdr, lparam, 12
if nmhdr.0 = hTab & nmhdr.2 = TCN_SELCHANGE {
ShowWindow objinfo_hwnd(ieID+ieFirst), SW_HIDE
sendmsg hTab, TCM_GETCURSEL, 0, 0
ieID = stat
ShowWindow objinfo_hwnd(ieID+ieFirst), SW_SHOW
delcom activeIE
activeIE = ie(ieID)
}
return



この記事に返信する


XBG|YAMANOTE231103(携帯端末)

リンク

2011/12/11(Sun) 12:12:02|NO.43658

メインルーチンの最後stopの前にinputを設置します。
そしてさらに「入力したURLに移動」なるボタンを設置しておきます。
その際に新たにそれ用のサブルーチンを作っておく必要があります。
移動スクリプトは

activeIE->"Navigate" (URL)
です。

あとスクリプトは半角の<pre>で囲みましょう



ekrnht

リンク

2011/12/11(Sun) 12:47:28|NO.43661

あの、もうひとつ教えてもらいたいのですが、IEのように、タブを増やせるようにすることは可能でしょうか。
よろしければ、その方法も教えてください。



ekrnht

リンク

2011/12/11(Sun) 16:55:02|NO.43668

すみません。やってみたのですがうまくいきません。
何をどこに入れるのかもう少し具体的に教えてください。



ヂオン

リンク

2011/12/11(Sun) 19:19:06|NO.43669

スクリプトでは
30 31 行目の


tci = TCIF_TEXT, 0, 0, varptr(buf.cnt), strlen(buf.cnt) sendmsg hTab, TCM_INSERTITEMA, cnt, varptr(tci)

のスクリプトで、タブを追加しています。
tci とは タブの情報の集合を表す変数で [ TCITEM 構造体 ] と呼ばれています。


#module // タブコントロールにタブを追加します ; htab_ タブコントロールのハンドル ; idx_ タブを追加するインデックス ; buf_ タブのタイトルに成るテキスト ; userdata_[省略可] タブに定義づけられた4byte 配列変数のインデックス、 ; または varptr()で返ってくる変数のpointerを指定するのが一般的。 ; mask_[省略可] タブのスタイルを指定するmask ; img_[省略可] イメージリストのインデックス #deffunc tc_InsertItem int htab_ , int idx_ , str buf_ , int userdata_ , int mask_ , int img_ #const TCIF_TEXT $00000001 ; pszText #const TCIF_PARAM $00000008 ; lParam #define TCM_INSERTITEMA $00001307 #const DEFAULTMASK TCIF_TEXT|TCIF_PARAM buf = buf_ tci = DEFAULTMASK|mask_, 0, 0, varptr(buf), strlen(buf) , img_ , userdata_ sendmsg htab_,TCM_INSERTITEMA,idx_,varptr(tci) return stat #global

タブを作るスクリプトを命令にしてみました。参考にしてください。



ekrnht

リンク

2011/12/11(Sun) 20:30:03|NO.43671

ヂオンさんのスクリプトはどこにどのように入れればいいのですか。
すみません。馬鹿なものですから、、、。



XBG|YAMANOTE231103(PC)

リンク

2011/12/12(Mon) 19:47:32|NO.43703

>ヂオンさんのスクリプトはどこにどのように入れればいいのですか。
TCITEM構造体さえ作ればあとはsendmsgを実行するだけです。
専用のサブルーチンを作成しそこでsendmsg命令を実行させます

sendmsg hTab, TCM_INSERTITEMA, w, l ;w:追加するタブのインデックス位置 ;l:TCITEM構造体へのポインタ 構造体をvarptr関数に引数として渡せば取得できる

ついでにタブの削除は0x1308のメッセージコードで可能です
これを次のようにスクリプト冒頭で定義しておき

#define TCM_DELETEITEM 0x1308
タブを削除したいと思ったら、次のソースを入力すればOK。

sendmsg hTab, TCM_DELETEITEM, w, 0 ;↑wには削除するタブのインデックスが入る



XBG|YAMANOTE231103(PC)

リンク

2011/12/12(Mon) 21:16:57|NO.43704

>>ヂオンさん

#const TCIF_TEXT $00000001 ; pszText #const TCIF_PARAM $00000008 ; lParam #define TCM_INSERTITEMA $00001307


#const TCIF_TEXT 0x0001 ; pszText #const TCIF_PARAM 0x0008 ; lParam #define TCM_INSERTITEMA 0x1307
のほうがスッキリするかと…



ekrnht

リンク

2011/12/12(Mon) 23:12:09|NO.43707

理屈がみなさんの説明により、だいぶ分かってきました。
しかし、変数が多すぎて混乱してます。適当でいいので、ヂオンさんの変数に何を入れればいいのか教えてください。
できれば、各スクリプトの行数だけでいいので、的確に教えてください。



XBG|YAMANOTE231103(携帯端末)

リンク

2011/12/12(Mon) 23:59:11|NO.43708

元のスクリプトの
#define TCN_SELCHANGE (TCN_FIRST -1)

の行の直後にヂオンさんのスクリプトをコピーしてください。 そうしをたらタブを追加したいなってところでtc_InsertItem命令を入力します。 パラメータはヂオンさんのスクリプトや、ヘルプの#deffuncを参照。 第1パラメータ htab_の部分には、実際に使うときはhTabを指定 第2パラメータ idx_の部分 追加するインデックス位置です。数字が小さいほど、画面左側に来ます。 第3パラメータ buf_の部分 タブに表示する文字列です。 後のパラメータは初心者の方には難しいので省略しても良いです。



XBG|YAMANOTE231103(携帯端末)

リンク

2011/12/13(Tue) 00:01:35|NO.43709

エンコード指定を間違ったせいか改行が反映されない・・・



ekrnht

リンク

2011/12/13(Tue) 17:19:24|NO.43718

すみません。
tc_InsertItem命令 って、なんですか?



XBG|YAMANOTE231103(PC)

リンク

2011/12/13(Tue) 17:29:59|NO.43719

>すみません。
>tc_InsertItem命令 って、なんですか?

説明不足でした(汗
標準で備わっているのではなく、
ヂオンさんのスクリプトを入力すれば使えるようになります。
使う前に“必ず”ヂオンさんのスクリプトを、元のスクリプトの#define TCN_SELCHANGEの行の直後、
つまり21行目と22行目の間にコピペしてください。

tc_InsertItem htab_ , idx_ , buf_ , userdata_ , mask_ , img_ ;htab_ : タブを示すハンドル ;idx_ : タブを追加するインデックス値。インデックスについては前述の通り。 ;buf_ : タブのタイトルとして表示する文字列 ;userdata_ : ここは省略してOK ;mask_ : ここは省略してOK ;img_ : ここは省略してOK



ekrnht

リンク

2011/12/13(Tue) 19:21:22|NO.43724

何回か入力しなおしたのですが、うまくいきません。
非常に面倒なことですが、皆さんから教えていただいた各スクリプトを元のスクリプトにすべて追加して、アップしてもらえないでしょうか。



ORZ

リンク

2011/12/13(Tue) 19:32:04|NO.43725

ここでバシーンと貼り付けてやってはいかんぞ。



とおりすがり

リンク

2011/12/13(Tue) 19:52:59|NO.43727

ORZさんに同意です。

>ekrnhtさん
皆さんがここまでしてくださったのですから、
一週間ぐらいは考えてみてください。



XBG|YAMANOTE231103(PC)

リンク

2011/12/13(Tue) 21:03:53|NO.43733

>ここでバシーンと貼り付けてやってはいかんぞ。

今更ながら少し思考のヒントを出しすぎましたかね;
初心者には#deffuncはやはり難しいと思われますが、、、



ekrnht

リンク

2011/12/14(Wed) 13:41:40|NO.43748

そうですね。皆さんの言うとおりです。しばらく考えてみます。



hsp初心者

リンク

2011/12/15(Thu) 07:12:57|NO.43752

ヒントHSPのマニュアルにサンプルありますよ。
そっちで一度やり方を調べてみたらいいと思います。



ekrnht

リンク

2011/12/16(Fri) 15:32:44|NO.43796

すみません。やっぱり無理でした。
スクリプトをお願いします。
そのスクリプトを参考に、少しずつ理解していこうと思います。



ORZ

リンク

2011/12/16(Fri) 20:05:58|NO.43802

両者にいう。我慢なさい。



晩御飯

リンク

2011/12/16(Fri) 23:23:07|NO.43803

現状を見せたほうが建設的だと思いますけど
今のところあなたの書いたものが一行も出てこないので一体何を考えて
考えた結果何が無理なのかが全くわからないのだけれども



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