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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0228
popopoSetParent7解決


popopo

リンク

2017/2/28(Tue) 07:24:59|NO.78329

子ウィンドウのはずなのにアクティブになってしまいます。
何が間違っているのでしょうか。

#uselib "user32.dll" #func SetParent "SetParent" int, int #func SetWindowLong "SetWindowLongA" int, int, int #func GetWindowLong "GetWindowLongA" int, int #define GWL_STYLE 0xFFFFFFF0 #define WS_POPUP 0x80000000 #define WS_CHILD 0x40000000 screen 0, 640, 480 hParent = hwnd screen 1, 300, 200 hChild1 = hwnd GetWindowLong hChild1, GWL_STYLE SetWindowLong hChild1, GWL_STYLE, stat ^ WS_POPUP | WS_CHILD SetParent hChild1, hParent




この記事に返信する


InoueSoftware

リンク

2017/3/1(Wed) 17:19:32|NO.78344

子ウィンドウは、アクティブになるのも正常です。

アクティブにならないようにするには、WS_CHILD | WS_VISIBLE
のスタイルを指定するといいです。

#uselib "user32.dll"
#func SetParent "SetParent" int, int #func SetWindowLong "SetWindowLongA" int, int, int #func GetWindowLong "GetWindowLongA" int, int #define GWL_STYLE 0xFFFFFFF0 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 screen 0, 640, 480 hParent = hwnd screen 1, 300, 200 hChild1 = hwnd cls 4//分かりやすくするために黒で塗りつぶす GetWindowLong hChild1, GWL_STYLE SetWindowLong hChild1, GWL_STYLE, WS_CHILD | WS_VISIBLE SetParent hChild1, hParent



popopo

リンク

2017/3/2(Thu) 16:41:35|NO.78346

子ウィンドウのウィンドウメッセージは親に行くのではないのですか。
https://wiki.hsp.moe/%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E8%A6%AA%E5%AD%90%E9%96%A2%E4%BF%82.html



InoueSoftware

リンク

2017/3/2(Thu) 19:47:03|NO.78347

>子ウィンドウのウィンドウメッセージは親に行くのではないのですか。
行きます。
ただし、そのWikiで言うウィンドウメッセージとは子ウィンドウが送信したメッセージの事です。
子ウィンドウが受信したメッセージは転送しない限り送信されません。



popopo

リンク

2017/3/3(Fri) 07:21:58|NO.78349

そのような情報の参考URLを教えていただけないでしょうか。
また、No.78344のコードのGetWindowLong、使わないのなら意味がないのではないですか。
元のウィンドウスタイルをクリアしてしまっているのでは。



掘木

リンク

2017/3/3(Fri) 08:24:06|NO.78350

>popopoさん
提示されている初期コードですが、
SetWindowLongで設定しているウィンドウスタイルがWS_CHILDかつWS_POPUPとなっていますよ。
両方設定するとWS_CHILDは無効になったような。



popopo

リンク

2017/3/3(Fri) 16:08:36|NO.78352

本当だ。
自分ではWS_POPUPを外すつもりだったのですが、逆につけてしまいました。
bgscrだともともとついているのですが、screenではないようです。
どうしてでしょうかね。



popopo

リンク

2017/3/3(Fri) 16:13:59|NO.78353

XOR WS_POPUPを外したら、本来の子ウィンドウの動作になりました。
解決です。
ありがとうございました。



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