ja ja ja ja ja ja ja en ca ja ja fr ja en ja ja ja ja ja ja ja ja ja ja ja ja ja zh en ja ja ja ja ja ja ja ru ja ja zh en ja ja ja ja ja ja zh ja ja ja ja ja ja zh ru ja ja ja ja ja ru ja ja ja en
上記でコールバック関数を作成したら、このコールバック関数のアドレスがわかるので、それを RegisterClassEx へ渡せばいい。
そうすれば、ウィンドウプロシージャを作成できる。
プロシージャにコールされたウィンドウメッセージをすべて HSP 側(スクリプト)で処理すれば、独自のコントロールの完成(基礎)。
そこからは、すべてウィンドウメッセージでやり取りすることになるから、それはとあるプログラマさんの腕次第です。
2019/10/24(Thu) 10:20:47|NO.88679
プロシージャとクラスを登録するということはCreateWindow関数でウィンドウを作成するということですかね?
この方法でウィンドウを作成するのとbgscr命令で作成するのでは何か違いがあるのでしょうか。(メッセージ取得、送信はoncmd、sndmsgでできますし)
MillkeyStars
2019/10/24(Thu) 12:37:43|NO.88680
>>Win32での標準・コモンコントロールをオーナー・カスタムドローするのではなく、
>>レイアウトや操作なども全て自作の新しいコントロールの作成手順を おおまかでもいいので知りたいです。
BGSCR で作成すると、ただのサブクラス(オーナードロー・カスタムドロー)とあまり変わらないので、最初から作る方法を提示しただけです。
【HSPのウィンドウですべてを行う場合のサンプル】
#include "user32.as" #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define WM_MOUSEMOVE 0x0200 //メインウィンドウのウィンドウハンドルを取得 MainHWND = hwnd //BGSCR の非表示で作成 bgscr 4,80,24,2 : cls 4 //ウィンドウスタイルを子ウィンドウに変更 SetWindowLong hwnd,-16,WS_CHILD | WS_VISIBLE //BMSCR で作成した子ウィンドウを親ウィンドウに統合 SetParent hwnd,MainHWND //ウィンドウメッセージ oncmd gosub oncmd gosub *Sub_mousemove,WM_MOUSEMOVE //子ウィンドウを表示 gsel 4,1 //操作先ウィンドウをメインウィンドウに変更 gsel 0 *main await 16 title ""+mousex+" / "+mousey+" / "+Sub_mx+" / "+Sub_my goto *main //子ウィンドウのマウス移動監視 *Sub_mousemove Sub_mx = lparam & 0xFFFF Sub_my = lparam >> 16 & 0xFFFF //連動して画面描画するなら最初に操作先を子ウィンドウにする事。 bgsel = ginfo(3) gsel 4 color 0,0,0 : boxf : color 255,255,255 pos 0,0 : mes "テスト "+Count Count++ gsel bgsel //return の引数は、HSPウィンドウプロシージャに任せる場合設定なしにする事。 //何らかの処理を行った場合、引数ありにする事。 return 0
2019/10/24(Thu) 20:57:59|NO.88683
>>BGSCR で作成すると、ただのサブクラス(オーナードロー・カスタムドロー)とあまり変わらないので、最初から作る方法を提示しただけです。
bgscrで作る方法とRegisterClassEx & CreateWindowで作る方法では何か違いはあるのでしょうか。(ウィンドウIDが使えないとかではなく、根本的な機能の違いなど)
クラスに関してはまだ知識が浅いので変な質問でしたら申し訳ないです…
しかしどちらにせよ、ウィンドウを子ウィンドウ化してコントロールにする という点は同じようですね。
もっと他の方法があるのかと思ったのですが、そうするとフレームワークなど更に基盤的な話になってしまうのですかね。
(例えばGIMPというソフトのGTKのようなものなど)
MillkeyStars
2019/10/25(Fri) 00:24:07|NO.88686
>>bgscrで作る方法とRegisterClassEx & CreateWindowで作る方法では何か違いはあるのでしょうか。
>>ウィンドウIDが使えないとかではなく、根本的な機能の違いなど
ウィンドウID が使える使えないという前提なら、違いはないと思うよ。(BMSCR 構造体に保持されている変数などは除く)
どちらの場合も、RegisterClassEx で登録して、CreateWindow で作成して、ウィンドウプロシージャでメッセージの処理だからねー。
2019/10/26(Sat) 12:10:25|NO.88698
なるほど、機能的には差異は無いんですね。だったらbgscrのほうでいいですかね… (プロシージャ処理が面倒くさい)
MillkeyStarsさん、ありがとうございました。
トップ | HSP3ダウンロード | HSPTVで遊ぶ | HSPで作る | サイト情報 | プライバシーポリシー | お問合せ
ONION software Copyright 1997-2021(c) All rights reserved.