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

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



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.92907への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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