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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0823
ドデカナンミンボタンの初期サイズ2解決


ドデカナンミン

リンク

2016/8/23(Tue) 23:02:56|NO.76704

objsize を指定せずにボタンを生成したときのサイズはいくつですか?
それと「HSP標準システムフォント」のサイズはどれぐらいですか?
どうでもいいことでorz



この記事に返信する


MillkeyStars

リンク

2016/8/24(Wed) 07:24:11|NO.76706

基本的に、オブジェクトのウィンドウサイズは、横 64 x 縦 24 です。
フォントのサイズ・フォント名については、環境に左右される為、確定値はないと思います。

以下取得のモジュールとサンプルです。

#module Helper_DODEKANANMIN #uselib "user32.dll" #cfunc _SendMessage "SendMessageA" int,int,int,int #func _GetWindowRect "GetWindowRect" int,var #uselib "gdi32.dll" #cfunc _GetObject "GetObjectA" int,int,var #define WM_GETFONT 0x0031 #define LOGFONT_SIZE 60 /*------------------------------------------------------------------ フォント情報を取得します。(モジュール内部命令) GetFontInfo p1,p2,p3,p4 p1 : 調べたいオブジェクトのID p2 : 結果のフォント幅が代入される変数(INT) p3 : 結果のフォント高さが代入される変数(INT) p4 : 結果のフォント名が代入される変数(STR) (事前に 32バイト以上の文字列型変数を用意してください) ------------------------------------------------------------------*/ #deffunc GetFontInfo int HFont,array WIDTHINFO,array HEIGHTINFO,array FONTNAMEINFO //フォントハンドルが取得できた場合、フォント情報を取得する dim LogFontInfo,60 / 4 if (_GetObject(HFont,LOGFONT_SIZE,LogFontInfo) == 0){ //フォント情報が取得できなかった場合、stat に -1 を代入 return -1 } //フォント情報が取得できた場合、命令引数の変数に情報をコピーする memcpy WIDTHINFO,LogFontInfo,4,0,4 //幅 memcpy HEIGHTINFO,LogFontInfo,4,0,0 //高さ memcpy FONTNAMEINFO,LogFontInfo,32,0,28 //フォント名(32Byte 固定) //ほかにも取得できる情報があるけど、詳しくは LOGFONT と検索してね。 return 0 /*------------------------------------------------------------------ ウィンドウのフォント情報を取得します。(HSP 専用) GetWindowFontInfo p1,p2,p3,p4 p1 : 調べたいウィンドウのID p2 : 結果のフォント幅が代入される変数(INT) p3 : 結果のフォント高さが代入される変数(INT) p4 : 結果のフォント名が代入される変数(STR) (事前に 32バイト以上の文字列型変数を用意してください) ------------------------------------------------------------------*/ #deffunc GetWindowFontInfo int ReqWNDID,array WIDTHINFO,array HEIGHTINFO,array FONTNAMEINFO //現在の操作先ウィンドウを変更する(ReqWNDID) OldWndID = ginfo(3) //現在の操作先を記憶する gsel ReqWNDID //要求されたウィンドウID の BMSCR 情報を作る mref WndBMSCR,67 //BMSCR 構造体から直接フォントハンドルを取得する HFont = WndBMSCR(38) //現在設定されているフォントハンドル OldHFont = WndBMSCR(39) //オリジナルのフォントハンドル //現在設定されているフォントハンドルが存在する場合、そっちを優先させる ReqHFont = OldHFont if (HFont ! 0) : ReqHFont = HFont GetFontInfo ReqHFont,WIDTHINFO,HEIGHTINFO,FONTNAMEINFO gsel OldWndID return 0 /*------------------------------------------------------------------ オブジェクトのフォント情報を取得します。(HSP 専用) GetObjectFontInfo p1,p2,p3,p4 p1 : 調べたいオブジェクトのID p2 : 結果のフォント幅が代入される変数(INT) p3 : 結果のフォント高さが代入される変数(INT) p4 : 結果のフォント名が代入される変数(STR) (事前に 32バイト以上の文字列型変数を用意してください) ------------------------------------------------------------------*/ #deffunc GetObjectFontInfo int ReqWNDID,array WIDTHINFO,array HEIGHTINFO,array FONTNAMEINFO ObjPointer = objinfo(ReqWNDID,1) //オブジェクトのBMSCR構造体ポインタを取得 if (ObjPointer == 0) : return -1 //オブジェクトのBMSCR構造体ポインタを用いてアクセス用変数を作る dupptr ObjBMSCR,ObjPointer,176 * 4,4 //BMSCR 構造体から直接フォントハンドルを取得する HFont = ObjBMSCR(38) //現在設定されているフォントハンドル OldHFont = ObjBMSCR(39) //オリジナルのフォントハンドル //現在設定されているフォントハンドルが存在する場合、そっちを優先させる ReqHFont = OldHFont if (HFont ! 0) : ReqHFont = HFont GetFontInfo ReqHFont,WIDTHINFO,HEIGHTINFO,FONTNAMEINFO return 0 /*------------------------------------------------------------------ ウィンドウのサイズ情報を取得します。 GetWindowSize p1,p2,p3 p1 : 調べたいウィンドウのハンドル p2 : 結果のウィンドウサイズ(幅)が代入される変数(INT) p3 : 結果のウィンドウサイズ(高さ)が代入される変数(INT) (注意 : WindowsVista 以降の DWM を考慮するウィンドウサイズには 対応していませんのでご注意ください) ------------------------------------------------------------------*/ #deffunc GetWindowSize int ReqHWND,array WIDTHINFO,array HEIGHTINFO dim WindowRect,4 _GetWindowRect ReqHWND,WindowRect WIDTHINFO = WindowRect(2) - WindowRect(0) HEIGHTINFO = WindowRect(3) - WindowRect(1) return 0 #global //共通変数初期化 sdim FontName,64 //ボタンの基本情報を作成・取得 button gosub "テスト",*Dammy ObjectID = stat ObjectHWND = objinfo(ObjectID,2) //ウィンドウのサイズ mes "ウィンドウのウィンドウサイズ (X) : "+ginfo(10) mes "ウィンドウのウィンドウサイズ (Y) : "+ginfo(11) //ウィンドウのフォントサイズ GetWindowFontInfo ginfo(3),FontWidth,FontHeight,FontName if (stat == -1) : mes "ウィンドウのフォント情報を正しく取得できませんでした" mes "ウィンドウのフォント(幅) : "+FontWidth+" ←※1" mes "ウィンドウのフォント(高さ) : "+FontHeight+" ←※2 これがサイズ" mes "ウィンドウのフォントの名前 : "+FontName mes "(※1 : 基本的に高さに基いて自動処理される為、通常は 0 です)" mes "(※2 : マイナスはフォント情報内部処理用です。実際は正の数です。)\n" //ボタンのウィンドウサイズを取得 GetWindowSize ObjectHWND,WndSize_X,WndSize_Y mes "ボタンのウィンドウサイズ (X) : "+WndSize_X mes "ボタンのウィンドウサイズ (Y) : "+WndSize_Y //ボタンのフォントサイズ GetObjectFontInfo ObjectID,FontWidth,FontHeight,FontName if (stat == -1) : mes "ボタンのフォント情報を正しく取得できませんでした" mes "ボタンのフォント(幅) : "+FontWidth+" ←※1" mes "ボタンのフォント(高さ) : "+FontHeight+" ←※2 これがサイズ" mes "ボタンのフォントの名前 : "+FontName mes "(※1 : 基本的に高さに基いて自動処理される為、通常は 0 です)" mes "(※2 : マイナスはフォント情報内部処理用です。実際は正の数です。)" stop *Dammy return



ドデカナンミン

リンク

2016/8/24(Wed) 10:18:24|NO.76707

ありがとうございました。解決できました!!
スクリプトまで書いていただけるなんて・・・



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