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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0520
UT-Xコンテキストメニューやスクロールバーで処理が止まらないようにする2解決


UT-X

リンク

2021/5/20(Thu) 21:04:22|NO.92907

HSPで作られたプログラムの処理は、
input/mesbox内でのコンテキストメニュー(右クリックまたはShift+F10)表示中やスクロールバーの操作中に停止してしまいます。
これを行っている最中にもメインの処理を止まらないようにするためにoncmdとウィンドウタイマーを使用することにしたのですが、
input/mesboxに使用できそうなWM_NOTIFY、WM_CONTEXTMENU、EN_MSGFILTERではoncmdでのジャンプが行われませんでした。
oncmdの検証に使用したコード↓
#define global WM_NOTIFY        $004E
#define global WM_CONTEXTMENU $007B #define global EN_MSGFILTER $0700 oncmd gosub *cmdtest,WM_NOTIFY oncmd gosub *cmdtest,WM_CONTEXTMENU oncmd gosub *cmdtest,EN_MSGFILTER a=0 b="" c="\n\n\n\n\n\n\n\n\n\n\n\n" input b,200,20,0 mesbox c,200,100,1,0 *mainloop if a=1:a=0:else:a=1 title ""+a await 10 goto *mainloop *cmdtest mes "msg:"+iparam+" wparam:"+wparam+" lparam:"+lparam return
input/mesboxでコンテキストメニューが開かれたことやスクロールバーを操作中であることを
検知するには、どうすればよいのでしょうか?ご教授よろしくお願いします。
(メインで行おうとしている処理の関係で、ウィンドウタイマーは本来処理が止まってしまうような場面でのみ使いたいと思っています)



この記事に返信する


TOMATO

リンク

2021/5/22(Sat) 15:30:59|NO.92916

>input/mesboxでコンテキストメニューが開かれたことやスクロールバーを操作中であることを
>検知するには

サブクラス化して取得してください。
HSPのサンプルにメッセージボックスのサブクラス化をしているものがあります。
(コンテキストメニューも操作しています)
sample\new35\clbk_gwlwndpproc.hsp

スクロールバーもサンプル内のサブクラス化したウィンドウプロシージャで
下記メッセージIDのウィンドウメッセージを処理すればできると思います。

#define WM_HSCROLL 0x0114 // 水平スクロール #define WM_VSCROLL 0x0115 // 垂直スクロール



UT-X

リンク

2021/5/23(Sun) 12:31:48|NO.92926

回答ありがとうございます。
お教えいただいたようにサブクラス化を行う方法で動かしたところ正しく検知し、
ウィンドウタイマーとうまくつなげることができました。



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