Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> HSP2 -> HSP2.xでMDIウインドウを作成するサンプルコード

HSP2.xでMDIウインドウを作成するサンプルコード

Hot Soup Processor 2.x系でのMDIウインドウを作成するためのサンプルコードです。

loadlibとllmodが必要になります。



WINAPIのSetParent関数を呼び出し、任意のウインドウに、強引に親ウインドウを設定しています。(^^;



SetParent関数の説明に関しては、MicroSoft社のMSDNライブラリや、LCC-Win32のAPIマニュアル等で調べると良いでしょう。



かなーり昔に作ったソースですが、需要があればHSP3用に書き直します。

・・・いや、需要無いな(笑)



; モジュールの定義
#module
#include "loadlib.as"
;    ●書式
;        SetMDI p1, p2
;        p1 = 0〜(0) : 親に設定したいウインドウのID
;        p2 = 0〜(0) : 子に設定したいウインドウのID
;    ●説明
;        指定したウインドウに対して、MDIの設定を行います。
;        必ず、screen, bgscr, buffer等で
;        作成済みのウインドウのIDを指定する事。
;
#deffunc SetMDI int, int
    mref p1, 0
    mref p2, 1

    ; USER32.DLLをロードする
    ll_libload dll, "USER32.DLL"

    ; GetActiveWindow関数、
    ; SetParent関数をロードする
    ll_getproc getwnd, "GetActiveWindow", dll
    ll_getproc setparent, "SetParent", dll

    ; 子にしたいウインドウのハンドルを取得
    gsel p2, 1
    ll_callfnv getwnd
    ll_ret hwnd

    ; 親にしたいウインドウのハンドルを取得
    gsel p1, 1
    ll_callfnv getwnd
    ll_ret hwnd.1

    ; MDI設定
    if hwnd != hwnd.1{    ; ←安全処理
        ll_callfunc hwnd, 2, setparent
    }

    ; DLLの解放
    ll_libfree dll

    return
#global

    ; ウインドウの作成
    screen 0, 640, 480
    screen 2, 400, 300
    screen 3, 200, 100

    ; MDIの設定
    SetMDI 0, 2
    SetMDI 0, 3

    ; 適当に描画
    gsel 2 : title "ID = 2" : cls 4
    gsel 3 : title "ID = 3" : cls 4
    gsel 0, 1 : title "ID = 0" : cls 3
    stop


この記事の最終更新日:2017/10/30
最初に記事を書いた日:2017/10/30

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> HSP2 -> HSP2.xでMDIウインドウを作成するサンプルコード