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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0923
Nasuウィンドウに合わせてCOMオブジェクトのサイズを変更6解決


Nasu

リンク

2011/9/23(Fri) 13:44:38|NO.41603

以下のスクリプトの方法以外に、ウィンドウサイズの変更に伴ってCOMオブジェクトのサイズを
変更する方法はあるでしょうか?

あと、mod_menu.asを使ってメニューバーをつけたいのですが、user32.asとmod_menu.asが
両方ともuser32.dllを呼び出してるのでエラーが起きます。
前に、似た質問をしたのですが、その方法だと今回はうまくいきませんでした。
(自分がただ間違えているだけかもしれませんが…。)


#include "user32.as" ;#include "mod_menu.as" //重なるとエラー screen 0, ginfo(20), ginfo(21),0,-2,0 width 640,480 : title "Web Browser" Window_X = ginfo(10) : Window_Y = ginfo(11) GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat | $10000 | $40000 #define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}" sdim sText, 512 sdim url, 512 input url, ginfo(12), 22 button gosub "移動", *navigate color 255,255,0 : boxf pos 5,55 axobj IE, "Shell.Explorer.2" ,Window_X - 20 , Window_Y - 100 : comevent ie_event, IE, DIID_DWebBrowserEvents2, *event *main if (Window_Y ! ginfo (11)) or (Window_X ! ginfo (10)):{ Window_X = ginfo(10) : Window_Y = ginfo(11) : clrobj 2 , 2 pos 5,55 : axobj IE, "Shell.Explorer.2", Window_X - 25 , Window_Y - 100 IE->"Navigate" url } redraw 1 : redraw 0 : await 10 goto *main *navigate if url = "" : return IE->"Navigate" url return *event DispID = comevdisp(ie_event) if DispID = 102 { comevarg sText, ie_event, 0 mes sText return } if DispID = 113 { comevarg sText, ie_event, 0 title ""+sText return } return

解る方、回答していただけますと幸いです。



この記事に返信する


Nasu

リンク

2011/9/23(Fri) 13:48:18|NO.41604

あ、書き忘れていました。
このスクリプトにmod_menu.asを使い、
user32.dllでかぶっても、エラーが出ないようにする方法もできれば
教えていただけると幸いです。



Cookies

リンク

2011/9/23(Fri) 14:40:42|NO.41605

>このスクリプトにmod_menu.asを使い、
>user32.asでかぶっても、エラーが出ないようにする方法もできれば

user32.dllで使いたいAPIは
GetWindowLongとSetWindowLongだけでしょうか。(見逃してたらすいません。)

でしたらuser32.asは使わずに、二つAPIを自分で宣言しておくのはどうでしょう。

#include "mod_menu.as" #uselib "USER32.DLL" #func GetWindowLong "GetWindowLongA" int,int #func SetWindowLong "SetWindowLongA" int,int,int
のように。

#undefを使って重複を全部取ってやる方法もありますが、きっと面倒です。



Cookies

リンク

2011/9/23(Fri) 15:19:21|NO.41606

ウィンドウサイズはループで監視せず、
割り込みを使った方がいいかもしれません。

#define WM_SIZING 0x0214 gsel 0,-1 screen 1 oncmd gosub *sizing, WM_SIZING stop *sizing redraw 0 color $FF,$FF,$FF : boxf : color ;画面クリア pos 0,0 : mes "x:"+ginfo(11)+",y:"+ginfo(12) : redraw 1 /*if (Window_Y ! ginfo (11)) or (Window_X ! ginfo (10)):{ Window_X = ginfo(10) : Window_Y = ginfo(11) : clrobj 2 , 2 pos 5,55 : axobj IE, "Shell.Explorer.2", Window_X - 25 , Window_Y - 100 IE->"Navigate" url } redraw 1 : redraw 0*/ return
ウィンドウサイズを変更している間、sizingラベルにサブルーチンジャンプします。



Nasu

リンク

2011/9/23(Fri) 15:24:10|NO.41607

Cookiesさん、有難うございます。
モジュールどうしだとエラーが出るのですね...。((自分、勉強不足だなぁ
とても勉強になりました。

mod_menu.asの件は解決したので、引き続き、COMオブジェクトの大きさ変更が
わかる方、ご回答おねがいしますm(_ _)m



Nasu

リンク

2011/9/23(Fri) 15:26:30|NO.41608

Cookiesさん、二度もご回答有難うございます。
返信書いている途中だったので、気づきませんでした。すみません…。m(_ _)m
これで全て解決しました!



pizza

リンク

2011/9/24(Sat) 16:44:31|NO.41643

オブジェクトを作り直さなくても、objinfo_hwndで取得したハンドルにSetWindowPosでサイズ変更できるみたいです。



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