特にテーマは無く雑記かな。 最近は自分用メモが増えてきましたけど。
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


HSP2.61の小技
2006年04月01日 (土) | 編集 |
最近はHSP2.61からHSP3.0に移行しているようで、HSP2.61用の記事も少なくなってきたような気がします。
別にHSP2.61にこだわる気は無く、単に私がHSP3.0へ乗り遅れているだけなのですけど。

という訳で、未だにHSP2.61から離れられない人へ、もし参考になればとスクリプトをブログに書いてみようと思った次第。
ここにあるスクリプトについて特に利用に関する制限はありませんが、もちろん不具合があっても怒らないで貰いたいです。それから、HSPは独学で適当に弄ってきたので、スクリプトの書き方がおかしい等あるかもしれません。

それではHSP2.61用のスクリプトですが、宜しければどうぞ。

フラットボタンを描画するには、次のようなスクリプトで書くと良いかもしれません。
#defineの行は長いですが1行で。
#include "llmod.as"

mref stt@_wf,64
#define flatbutton(%1,%2) button %1,%2:id@_wf=stat:_hspobjhandle@ stat:prm@_wf=stat,$FFFFFFF0,$50008000:setwndlong@ prm@_wf:stt@_wf=id@_wf

    flatbutton "abc",dummy:idbutton=stat
*dummy
    stop
#defineを使わずに、分かりやすく(?)書くと、次のような感じに。
#include "llmod.as"
#define GWL_STYLE $FFFFFFF0
#define WS_CHILD $40000000
#define WS_VISIBLE $10000000
#define BS_FLAT $00008000

    button "abc",dummy:idbutton=stat
    _hspobjhandle idbutton:hbutton=stat
    prm=hbutton,GWL_STYLE:setwndlong prm,1:style=stat ; style=WS_CHILD|WS_VISIBLE
    prm=hbutton,GWL_STYLE,style|BS_FLAT:setwndlong prm

*dummy
    stop
これを無理矢理1行の#defineに収めています。
よく分からない人は、とにかく1つ目のソースを使えば良いかと思います。

次に、ウィンドウのオーバーラップウィンドウ化です。
とりあえず、最大化が出来るようなウィンドウを作ると思えば良いかな。
#include "llmod.as"

    screen 0,dispx,dispy,2:width 640,480
    mref bmscr,67:prm=bmscr.13,$FFFFFFF0,$06CF0000:setwndlong prm
    gsel 0,1

    stop
上のスクリプトのやりたい事は、次の通り。
#include "llmod.as"
#define GWL_STYLE $FFFFFFF0
#define WS_OVERLAPPEDWINDOW $00CF0000
#define SWP_NOMOVE $00000002
#define SWP_NOSIZE $00000001
#define SWP_NOZORDER $00000004
#define SWP_FRAMECHANGED $00000020

    screen 0,dispx,dispy,2:width 640,480
    mref bmscr,67
    prm=bmscr.13,GWL_STYLE:setwndlong prm,1:wndstyle=stat
    prm=bmscr.13,GWL_STYLE,wndstyle|WS_OVERLAPPEDWINDOW:setwndlong prm
    prm=bmscr.13,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED:dllproc "SetWindowPos",prm,7,D_USER
    gsel 0,1

    stop
screen0で作るウィンドウスタイルの値は一定なので最初から指定していますけど、一般的にはこういう事をやっていますよ、という事で。
念のためにゴチャゴチャ言うと、本当はSetWindowPosを実行しないと適用されないのですが、gsel命令で不可視状態から可視状態にすると、問題無く適用されるので実行しないでも大丈夫のようです。

と、とりあえずウィンドウスタイルを変更させる小技(?)を書いてみました。
この記事を書いてて思ったのは、自分も良く分かっていないという事。
まぁ、動けばいいかな~なんて思っていますけど。

いくつかこういう記事を書いて、ある程度溜まってきたら、母屋(HP)の方に纏めようかな。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。