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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0411
空気sendmsgのバグでしょうか?Unicode時のsendmsgの使い方に問題があるのでしょうか?3解決


空気

リンク

2017/4/11(Tue) 05:13:53|NO.79072

hsp3utf.asをインクルードした際、
オブジェクトを編集不可にするウィンドウメッセージを使用すると
スクリプトが強制終了します。
Unicodeの場合はウィンドウメッセージの書き方も変化するのでしょうか?
もしくはhsp3utf.asをインクルードした際に起こるsendmsgのバグでしょうか?
わかる方がおられましたら、返答していただけると幸いです

//////////命令初期化////////// #include "hsp3utf.as";文字列処理をUnicodeに設定 #include "gdi32.as" #define ctype XSIZE(%1) int(1.0*%1*XDPI/96);HiDPI用マクロ #define ctype YSIZE(%1) int(1.0*%1*YDPI/96);HiDPI用マクロ GetDeviceCaps hdc,$00000058:XDPI=stat;XDPI GetDeviceCaps hdc,$0000005A:YDPI=stat;YDPI ;GUI枠描画命令定義 #module #uselib "user32.dll" #func DrawEdge "DrawEdge" int, int, int, int #deffunc edgebox int p0, int p1, int p2, int p3 qrc = p0, p1, p0 + p2, p1 + p3 DrawEdge hdc, varptr (qrc), $6, $F return #global ;オブジェクト編集不可命令定義 ;!!!(今回の問題に関連のあるユーザー定義命令)!!! #define objuneditable(%1=0,%2=1) sendmsg objinfo(%1, 2), $CF, %2 //////////メインウィンドウの初期化////////// ;「ウィンドウ生成とウィンドウサイズ記憶」 screen 0,XSIZE(512),YSIZE(512),2;非表示ウィンドウ Screen0X_Size = double(ginfo_winx);ウィンドウサイズを代入 Screen0Y_Size = double(ginfo_winy);ウィンドウサイズを代入 ;枠描画 edgebox XSIZE(-100), YSIZE(65)+1, Screen0X_Size+XSIZE(200), Screen0Y_Size edgebox XSIZE(-100), Screen0Y_Size-YSIZE(43)-2, Screen0X_Size+XSIZE(200), Screen0Y_Size //////////!!!ここからが問題の発生するスクリプト!!!////////// boxstr = "てすと。";input,mesboxに使用する仮の文字列 mesbox boxstr,100,300,4 objID_mesbox = stat;オブジェクトID代入 objuneditable objID_mesbox;オブジェクト編集不可( input boxstr objID_input = stat;オブジェクトID代入 objuneditable objID_input;オブジェクト編集不可 gsel 0,1;ウィンドウアクティブ stop



この記事に返信する


空気

リンク

2017/4/11(Tue) 05:15:35|NO.79073

HSPのバージョンは3.5β5
(OneDrive上の2017/04/11現在の最新版使用)となります。



いののて

リンク

2017/4/11(Tue) 12:10:20|NO.79080

名前に文字数制限がかかっているので変な名前になっていますが、InoueSoftwareです。
――――――
Unicodeのオブジェクトを使う場合はsendmsgではなく、user32のSendMessageWを使うと解決します。
※HSPのsendmsgは内部でSendMessageAを呼び出しています。


#include "user32.as" #define objuneditable(%1=0,%2=1) SendMessageW objinfo(%1, 2), $CF, %2, 0

HSP3.5β4ではsendmsgを使用しても問題ないようでしたが、仕様が変わったのかな。



空気

リンク

2017/4/14(Fri) 08:59:25|NO.79098

私用により返信が送れて申し訳ありません。
返答していただきありがとうございます。
やはりsendmsgにで呼ばれているAPIにはANSI版とUnicode版がありましたか。
マクロまで改造して頂きありがとうございました。使用させていただきます。



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