喫茶XRAYトップページ

[スレッド全体
]

[6331] マスター 質問です。返信 削除
2012/9/8 (土) 23:15:03 Taki
▼ マスター 度々ですみませんが質問です。

報告で使った低レベルのマウスフックとキーフックのサンプルですが、
マウスフックやキーフックのコールバック関数内に直接操作内容をListViewに
表示するコードは書いてはいけないのでしょうか。

DLLを使ってないので自分から自分にメッセージを送る事が?です。

メッセージを留めないという意味ではこうするべきなのかもしれませんが。

[6332] Re:マスター 質問です。返信 削除
2012/9/8 (土) 23:41:41 Mr.XRAY
▼ Takiさん,どうもどうも,留守にしていたもんで.

> マウスフックやキーフックのコールバック関数内に直接操作内容をListViewに
> 表示するコードは書いてはいけないのでしょうか。


> DLLを使ってないので自分から自分にメッセージを送る事が?です。

全く問題ありませんです.ハイ.
表示そのものに時間がかかりますが,受け取れなかった分は表示できない
だけです,でも,人のキー操作の速度より,TListViewの描画の方が
はるかに速いハズです.通常のディスプレイ画面に表示する領域ぐらいは
問題ないと思います.何万行も表示するディスプレイだと問題あるかも?

それに,メッセージはキューに格納されて,順番に取り出されますから,
もし,メッセージの処理が追いつかないのであれば,操作終了後,
TListView にはキュー内のメッセージがなくなるまで表示続けることに
なります.強制的にキューに溜まったメッセージを削除すれば別ですが.

[キーバッファ等のクリア例]
http://mrxray.on.coocan.jp/Delphi/plSamples/840_CancellLockDisable.htm#08
この例はあまりよくないです.
実際には,KEY_FIRST,KEY_LAST というのを使った方が,よりベターてす.


[6333] ゴメンなさい.間違えました返信 削除
2012/9/9 (日) 00:02:23 Mr.XRAY
わわっ,スミマセン.間違えました.

>マウスフックやキーフックのコールバック関数内に直接操作内容をListViewに

コールバック関数内に書く,というのはやめた方がいいです.
問題あります.
必ずPostMesssge で送信して,このメッセージを憂げ取る
プロシージャーを作成して,処理してください.
やってもかまいませんが,動作は保証できません.

よく読まないでゴメンなさい.

[6334] Re:ゴメンなさい.間違えました返信 削除
2012/9/9 (日) 11:25:41 Taki
▼ マスター お世話になります。

> わわっ,スミマセン.間違えました.
>
> コールバック関数内に書く,というのはやめた方がいいです.
> 問題あります.


了解しました。

コールバック関数はあちら(Windows)の世界で呼び出される関数だから
こちらの世界のListViewに直結するコードは書かない方がいいのでしょうか。

メッセージを使ってスレッド間のデータの受け渡しをするのが安全なの
かなと推測(納得)します。

マスターがオーダーを間違ってあわてているのを見てしまいました。(^c^)

[6335] Re2:ゴメンなさい.間違えました返信 削除
2012/9/9 (日) 13:44:41 Mr.XRAY
▼ Takiさん

> コールバック関数はあちら(Windows)の世界で呼び出される関数だから
> こちらの世界のListViewに直結するコードは書かない方がいいのでしょうか。


そういうことだと思います.

> メッセージを使ってスレッド間のデータの受け渡しをするのが安全なの
> かなと推測(納得)します。


ですね.
 
> マスターがオーダーを間違ってあわてているのを見てしまいました。(^c^)

ハハハッ.
誤字脱字のMr.XRAYが,誤字脱字に「誤読」が含まれてしまいました.
まっ,今に始まったことじゃないですけどね.

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82