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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0126
ピエールウインドウサイズに合わせてaxobjサイズを変更するには?6解決


ピエール

リンク

2015/1/26(Mon) 06:04:39|NO.67093

タイトルの通りですが
可変できるウインドウサイズに合わせてaxobjサイズを変更するにはどうしたらいいでしょうか?

一応以下のコードに対して、ginfo(7)でなんとかしようとしたんですがダメでしたorz
よろしくお願いします。


#define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}"
#define DISPID_NEWWINDOW3 273

gsel 0,-1
screen 1,500,200
url = "http://yahoo.co.jp"

axobj ie, "Shell.Explorer.2", 500 , 200

ie->"Refresh2" 2 // 完全な再読み込み
comevent ie_event, ie, DIID_DWebBrowserEvents2, *event

if netf=0 :ie->"Navigate" url

stop


*event

dispid = comevdisp(ie_event)

// 新しいウィンドウを開く処理だった場合
if dispid == DISPID_NEWWINDOW3 : gosub *OnNewWindow3
return

*OnNewWindow3

comevarg Cancel, ie_event, 1, 2
comevarg _Url, ie_event, 4, 2

// 新しく開く先のURLを取得
ptr = _Url("bstrptr")
dupptr newurl, ptr, 512, 2
url = cnvwtos(newurl) // Unicodeなので変換する
delcom _Url

// ナビゲートキャンセル
Cancel("val") = 1
delcom Cancel // IEウインドウ表示を中止
exec url, 16 // メインブラウザで表示

return



この記事に返信する


UEA

リンク

2015/1/26(Mon) 17:22:00|NO.67096

「ブラウザのサイズをウィンドウのサイズに随時合わせたい」という解釈で
私なりにいじってみました。
コメントのうち、(追加)または(変更)の箇所に新しく書き加えています。
user32.dllのMoveWindow関数を利用し、
ウィンドウサイズが変更された時にはWM_SIZEメッセージが送られてくるので
それを受け取ったらresizeラベルにジャンプさせています。
HSP3本体に同梱されているモジュール「common\obj.as」にも
この関数を呼び出す「resizeobj」命令があるようです。

//user32.dllを利用し、MoveWindow関数を定義します(追加) #uselib "user32.dll" #func MoveWindow "MoveWindow" int,int,int,int,int,int //ウィンドウのサイズが変更された時に送られてくるメッセージ(追加) #define WM_SIZE 0x0005 #define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}" #define DISPID_NEWWINDOW3 273 gsel 0,-1 //リサイズしやすいようにいじらせてもらいました(変更) //ginfo(20)と(21)はデスクトップのサイズです screen 1, ginfo(20), ginfo(21), 0, -1, -1, 640, 480 url = "http://yahoo.co.jp" axobj ie, "Shell.Explorer.2", 640, 480 //オブジェクトのハンドルを取得しておく(追加) objhwnd = objinfo(stat, 2) ie->"Refresh2" 2 // 完全な再読み込み comevent ie_event, ie, DIID_DWebBrowserEvents2, *event if netf=0 :ie->"Navigate" url //ジャンプ先を指定しておく(追加) oncmd gosub *resize, WM_SIZE stop *event dispid = comevdisp(ie_event) // 新しいウィンドウを開く処理だった場合 if dispid == DISPID_NEWWINDOW3 : gosub *OnNewWindow3 return *OnNewWindow3 comevarg Cancel, ie_event, 1, 2 comevarg _Url, ie_event, 4, 2 // 新しく開く先のURLを取得 ptr = _Url("bstrptr") dupptr newurl, ptr, 512, 2 url = cnvwtos(newurl) // Unicodeなので変換する delcom _Url // ナビゲートキャンセル Cancel("val") = 1 delcom Cancel // IEウインドウ表示を中止 exec url, 16 // メインブラウザで表示 return //ジャンプ先(追加) *resize //ハンドル, 位置X, 位置Y, 幅, 高さ, 再描画するかどうか //ginfo(12)と(13)はウィンドウのクライアント領域のサイズ MoveWindow objhwnd, 0, 0, ginfo(12), ginfo(13), 1 return
もし私の解釈違いでしたらすみません。一応このまま動くようにいじってあります。



Mituki

リンク

2015/1/26(Mon) 18:21:40|NO.67103

これでいいかも!
僕のOS
windows7ですけどね

title "Internet Explorer" //user32.dllを利用し、MoveWindow関数を定義します(追加) #uselib "user32.dll" #func MoveWindow "MoveWindow" int,int,int,int,int,int //ウィンドウのサイズが変更された時に送られてくるメッセージ(追加) #define WM_SIZE 0x0005 #define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}" #define DISPID_NEWWINDOW3 273 gsel 0,-1 //リサイズしやすいようにいじらせてもらいました(変更) //ginfo(20)と(21)はデスクトップのサイズです title "Internet Explorer" screen 1, ginfo(20), ginfo(21), 0, -1, -1, 1000 ,1000 url = "http://yahoo.co.jp" axobj ie, "Shell.Explorer.2", 1000, 1000 title "Internet Explorer" //オブジェクトのハンドルを取得しておく(追加) objhwnd = objinfo(stat, 2) ie->"Refresh2" 2 // 完全な再読み込み comevent ie_event, ie, DIID_DWebBrowserEvents2, *event if netf=0 :ie->"Navigate" url //ジャンプ先を指定しておく(追加) oncmd gosub *resize, WM_SIZE stop *event dispid = comevdisp(ie_event) // 新しいウィンドウを開く処理だった場合 if dispid == DISPID_NEWWINDOW3 : gosub *OnNewWindow3 return *OnNewWindow3 comevarg Cancel, ie_event, 1, 2 comevarg _Url, ie_event, 4, 2 // 新しく開く先のURLを取得 ptr = _Url("bstrptr") dupptr newurl, ptr, 512, 2 url = cnvwtos(newurl) // Unicodeなので変換する delcom _Url // ナビゲートキャンセル Cancel("val") = 1 delcom Cancel // IEウインドウ表示を中止 exec url, 16 // メインブラウザで表示 return //ジャンプ先(追加) *resize //ハンドル, 位置X, 位置Y, 幅, 高さ, 再描画するかどうか //ginfo(12)と(13)はウィンドウのクライアント領域のサイズ MoveWindow objhwnd, 0, 0, ginfo(12), ginfo(13), 1 return

ここ
16から25行
screen 1, ginfo(20), ginfo(21), 0, -1, -1, 1000 ,1000
url = "http://yahoo.co.jp"

axobj ie, "Shell.Explorer.2", 1000, 1000

どうやら
1000 ,1000
これがScreenSize?
でした。
1000, 1000

がそのSize
です。
(解決するか?)



ピエール

リンク

2015/1/26(Mon) 23:12:21|NO.67108

UEAさん
Mitukiさん

ありがとうございまーーーーーーす!!
凄いですねふたりとも
どちらもちゃんと動きました^^
参考にさせて頂きます

ところでサイズのミニマムって指定できますでしょうか?



UEA

リンク

2015/1/27(Tue) 00:02:53|NO.67110

1000,1000というのはかなり環境に依存していると思います。
解像度やタスクバーの高さ、位置を計算しないとモニタやOSによっては大きすぎたりするので。

「ミニマム」についてですが、過去にこんな質問があります。
http://hsp.tv/play/pforum.php?mode=pastwch&num=26678
私がウィンドウサイズの下限を設定するときはいつも参考にさせていただいてました。



ピエール

リンク

2015/1/27(Tue) 08:04:21|NO.67112

UEAさん

さっそくサンプル文を組み込んでみて、最小値はうまくいったんですが、逆に最大値が広げたくない広さまで広がっちゃいました(^^;)
ちょっと僕にはまだ難しい内容なので、徐々に勉強していきたいと思います。
ありがとうございました。



Mituki

リンク

2015/1/27(Tue) 15:57:44|NO.67115

僕も実は初心者です。www



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