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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1001
そいやタブ ブラウザ について教えてください6解決


そいや

リンク

2011/10/1(Sat) 06:19:11|NO.41867

ヤフーのタブには

戻る 更新 進む HOME ボタンは正常に使えるのですが、

グーグルの画面に切り替えて
戻る 更新 進む HOME ボタン
を反映させてタブベツにボタンを使うにはどうすればいいでしょうか?

お手数かけますが宜しくお願いします。



#module
#uselib "user32"
#func GetClientRect "GetClientRect" int, int
#func SetParent "SetParent" int, int

#uselib "gdi32"
#cfunc GetStockObject "GetStockObject" int
#deffunc CreateTab int p1, int p2, int p3, int p4

winobj "systabcontrol32", "", , $52000000 | p4, p1, p2
hTab = objinfo(stat, 2)
sendmsg hTab, $30, GetStockObject(17)
TabID = p3
if TabID = 0 : TabID = 1
dim rect, 4
return hTab
#deffunc InsertTab str p2
pszText = p2 : tcitem = 1, 0, 0, varptr(pszText)
sendmsg hTab, $1307, TabItem, varptr(tcitem)
GetClientRect hTab, varptr(rect)
sendmsg hTab, $1328, , varptr(rect)
bgscr TabID + TabItem, rect.2 - rect.0, rect.3 - rect.1, 2, rect.0, rect.1
SetParent hwnd, hTab
TabItem++
return
#deffunc ChangeTab
gsel wID + TabID, -1
sendmsg hTab, $130B
wID = stat
gsel wID + TabID, 1
return
#global
title""
screen 0, ginfo(20),ginfo(21),,,,900,600
syscolor 15 : boxf
pos 0,0
CreateTab ginfo(20),ginfo(21), 1
hTabControl = stat
//////

InsertTab "ヤフー"
objsize 50,24
pos 0,0:button "戻る",*go_b_a
pos 50,0:button "更新",*go_rel_a
pos 100,0:button "進む",*go_f_a
objsize 60,24
pos 150,0:button "Home",*go_home_a
pos 210,0:button "閉じる",*OnClose
pos 0,24
axobj iean,"Shell.Explorer.2",900,600
ieean=stat
tab_a="http://www.yahoo.co.jp/"
iean->"Navigate" tab_a

////
InsertTab "グーグル"
axobj iebn,"Shell.Explorer.2",900,600
ieebn=stat//<<<<<<<<<<<<
tab_b="http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8"//<<<<<<<<<<<<
iebn("Silent") = 1
iebn->"Navigate" tab_b//<<<<<<<<<<<<


gsel 1, 1
gsel
oncmd gosub *notify, $4E
stop

*notify
dupptr nmhdr, lparam, 12
if nmhdr.0 = hTabControl & nmhdr.2 = -551 {
ChangeTab
gsel
}
return

*go_home_a
iean->"Navigate" tab_a:goto *onloadfin
*go_f_a
iean->"GoForward":goto *onloadfin
*go_b_a
iean->"GoBack":goto *onloadfin
*go_rel_a
iean->"Refresh2" 3:goto *onloadfin
*OnClose
gsel 0,-1
delcom iean
end
*onloadfin
stop



この記事に返信する


check

リンク

2011/10/1(Sat) 12:06:17|NO.41874

各種機能を持ったボタンをそのタブ内に作成するという動作を
サブルーチン化して、タブを作成するたびにこのルーチンを呼ぶしかないんじゃないか。

ようはgoogleの画面が表示されているタブにもYahooと同じように
ボタンの作成を行えばいい。



pizza

リンク

2011/10/1(Sat) 15:11:16|NO.41879

タブのスタイルにWS_CLIPSIBLINGS(0x04000000)をつければbgscrを貼り付ける必要はなくなります。
(兄弟ウィンドウを隠さなくなるので)

後はShowWindowでIEを切り替えればウィンドウごとにボタンを作らなくても良いです。
一応サンプル書いたので必要なら言ってください。



そいや

リンク

2011/10/2(Sun) 18:12:46|NO.41926

よかったらサンプルのソースお願いします。

お手数かけますが、宜しくお願いします。



pizza

リンク

2011/10/3(Mon) 02:06:59|NO.41937

流れをわかりやすくするため、モジュールなしで1から書いてます。


#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 //最初のボタンIDを保存 pos ginfo_cx+btw, rect.1 loop // IEオブジェクト作成 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 // 最初のIEのオブジェクトIDを保存 if cnt == 1 : ShowWindow objinfo_hwnd(stat), SW_HIDE // 二つ目のIEを非表示に tmp = ie.cnt // ie.cnt->"navigate"だとエラー??? tmp->"navigate" urls.cnt delcom tmp loop ieID = 0 //アクティブなタブID activeIE = ie.ieID //アクティブなIEオブジェクト 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 // アクティブだったタブのIEを非表示に sendmsg hTab, TCM_GETCURSEL, 0, 0 // アクティブになったタブのID取得 ieID = stat ShowWindow objinfo_hwnd(ieID+ieFirst), SW_SHOW // アクティブになったタブのIEを表示 // activeIEも変更する delcom activeIE activeIE = ie(ieID) } return



そいや

リンク

2011/10/3(Mon) 15:55:16|NO.41940

参考にさせてもらいました。
ありがとうございました。



そいや

リンク

2011/10/3(Mon) 15:56:04|NO.41941

チェック忘れ。



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