問題タブ [window-messages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2133 参照

c++ - WinAPI の ::WaitMessage が WM_TIMER の送信を停止する

WinAPI の奇妙な動作に遭遇したので、私にはそう思われます。私のプログラムでは、ウィンドウのタイマーを設定しています

ウィンドウ プロシージャで WM_TIMER メッセージを処理します。必要な CPU 時間を短縮するため::WaitMessageに、メッセージ ポンプでも関数を使用しています。私がそこに関数を持っている限り::WaitMessage、しばらくすると WM_TIMER メッセージが来なくなることがわかりました。メッセージポンプから削除すると、すべてが期待どおりに機能します。

ここで、タイマーの設定が間違っているのか、それとも の標準的な動作なのか疑問に思います::WaitMessage。MSDN と Web を検索しても、このような理由がわかりませんでした。

私が使用するメッセージポンプは次のとおりです。

誰かが私のためにこれを片付けてくれることを願っています。

0 投票する
1 に答える
1259 参照

c++ - 親CDialogで制御メッセージを処理するにはどうすればよいですか?

のようなコントロールがありCtrlTreeますCMyDialog。クラスのようにON_WM_LBUTTONDOWN()メッセージを処理したい。CTreeCtrlCMyDialog

MFCにメッセージストリームを親にリダイレクトする方法はありますか?

0 投票する
1 に答える
3020 参照

winapi - WM_REFLECT_NOTIFYとWM_NOTIFY

WM_NOTIFYのドキュメントは簡単に見つけるWM_REFLECT_NOTIFYことができますが、ドキュメントを見つけることができない、を参照するかなりの量のサンプルコードと記事を見つけています。

とは何ですかWM_REFLECT_NOTIFY、そのドキュメントはどこにありますか?このメッセージはどのように異なりWM_NOTIFYますか?

参照例:

0 投票する
1 に答える
6210 参照

c++ - C ++ Builder XE、ユーザー定義メッセージの受け渡しと処理

VCLフォームアプリでメッセージを渡して処理する方法を学ぼうとしています。私はしばらくの間インターネットを掘っていて、これを見つけまし

メッセージを使用して更新したいプログレスバーがあるとします(他にもっと良い方法がある場合は、それを聞きたがっています)それで、私はものをテストするための簡単なプロジェクトを作成しました、そしてこれが私が持っているものです(RECEIVERはの名前ですプログレスバー付きのフォーム、SENDERはメッセージの送信に使用されるボタン、updBarはプログレスバーを更新する機能、123456は使用したいメッセージID):Unit1.cpp:

Unit1.h:

ご覧のとおり、メッセージの処理関数と適切なメッセージハンドラーの両方を定義しました。しかし、デバッガーを介して(ボタンを使用してメッセージを送信した後)それを調べると、実行ポイントが関数にもハンドラー行にも移動していないように見えます。前もって感謝します

0 投票する
1 に答える
413 参照

c++ - SendmessageAPIをインターセプトする方法

WM_GETTEXTを送信して、特定のウィンドウから誰かがテキストを取得するのを防ぐために、SendMessageAPIをインターセプトする必要があります。だから私にこれを行う方法を提案してください

0 投票する
1 に答える
1291 参照

c++ - Windowsマルチモニターの位置

モニターの位置が変更された場合、Windowsはメッセージを送信しますか?

たとえば、新しいモニターがWM_DEVICECHANGEからPCに接続された場合、メッセージが表示されます。

モニターの位置を変えるとき、このようなメッセージが必要です。

(poisitonの意味:最初のモニターを左に、2番目のモニターを右に。その後、poisitonを変更し、最初に右をモニターし、2番目に左をモニターします。)

0 投票する
2 に答える
685 参照

.net - モーダル ダイアログの WPF フォームと Windows メッセージング

テキストボックスとボタンを備えた単純な WPF フォームがあり、フォーカスを失うと、単にメッセージボックスが表示されます。私のコードは次のようになります

テキストボックスにフォーカスがあり、ボタンをクリックすると、メッセージボックスが表示されている場合はボタンクリックは発生しませんが、メッセージボックスを表示する前に Application.DoEvents() を呼び出すと、ボタンクリックが発生します。

私の実際のアプリケーションはもう少し複雑ですが、単純なテキスト ボックスとボタンを使用してこの動作をシミュレートしようとしました。実際のアプリケーションでは、ディスパッチャーに投稿されたバックグラウンド ワーカー スレッドの 1 つがモーダル メッセージ ボックス (または WPF フォーム) を表示し、キュー内の UI 保留中のメッセージはすべてメッセージ ボックスによって処理されるようです (私は疑っています)。たとえば、キャンバス コントロールをクリックすると理想的には、「Mouse Down」と「Mouse Up」を取得しますが、モーダルメッセージボックスがこの 2 つのメッセージの間にある場合、「Mouse Down」と「Mouse Up」のメッセージのみが表示されます。

注:非モーダル ダイアログの場合、この動作が見られないことはわかりません。

また、モーダル ダイアログと非モーダル ダイアログの場合に、Windows フォームが Windows メッセージ ポンプをどのように処理するかについての素敵な記事を誰かが私に指摘してくれれば、私の知る限りでも役に立ちます。

0 投票する
1 に答える
229 参照

c# - コントロール間でマウスクリックを同期する

TableLayoutPanel と Treeview があり、マウスクリックを互いに同期させたいと考えています。この理由は、TableLayoutPanel で何かを選択できるようにしたいので、Treeview でも何かを選択する必要があるためです。

これはどのように見えるかです:

ここに画像の説明を入力

私の最初の試みは機能しますが、多少の遅延があります。Treeview を NodeMouseClick イベントに接続し、そのイベントが発生すると TableLayoutPanel をRefresh()して、CellPaint イベントが呼び出されて行全体をペイントするようにします。このアプローチでは、Treeview が最初に描画され、次に TableLayoutPanel が描画されるため、遅延が発生しています。

同じ方法を使用しているが、逆の場合 (TableLayoutPanel をクリックして Treeview で対応するノードを選択) は、それほど遅延は発生しません。これは、ノードを選択するよりも行をペイントするのに時間がかかるためだと思います。

私は別の解決策を試しました:

私の Treeview クラスでは、これを追加しました:

Treeviewスクロールバーを同期する方法の例を思いついた

これに関する問題は、 Update()を使用しても、TableLayoutPanel の CellPaint イベントが発生しなくなったことです。ただし、ツリービューで正しいノードを選択します。

ここに画像の説明を入力

また、Treeview で同じことを実装しようとすると (WndProc をオーバーライドする)、これに関するいくつかの問題が予測されますが、コピーされたメッセージのクレイジーなループが発生しますか?

これを行う(簡単な)方法はありますか?

ありがとう</p>

0 投票する
1 に答える
446 参照

c# - TVN_SELCHANGING C#のメッセージ

TreeViewからTVN_SELCHANGINGメッセージをキャッチしようとしています。BeforeSelectイベントもあることは知っていますが、メッセージをキャッチできない理由を理解したいと思います…</ p>

私はmsdnでTVN_SELCHANG(ED)(ING)を読みました。LParamはNMTREEVIEW構造体へのポインターです。また、コードはWM_NOTIFYメッセージの形式で送信されます。

だから私はそれを実装しようとしました:( これは私を助けました)

私はすべてのアクションを試しましたが、どれも機能していないようです。私は何が間違っているのですか?

0 投票する
1 に答える
420 参照

windows - 毎秒手動でチェックせずにフルスクリーン モードの切り替えを検出する

一番上のウィンドウがあります。他の最上位ウィンドウよりも最上位にする必要がありますが、フルスクリーン ウィンドウをカバーしないでください: 特に: {Windows Media Player, Youtube flash player, RDP}

継続的なチェックによる解決策があります:

  • 私がチェックする YYY ミリ秒ごとに、(同じディスプレイ上に) 画面の寸法と同じ寸法の別の最上部のウィンドウがあります。
  • もしそうなら、私のウィンドウを一番上にしないでください。そうでなければ、一番上にします。

しかし、数十回のシステムコールを実行せず、最上位のウィンドウのツリー全体を毎秒トラバースする、リソース消費の少ない別のソリューションを探しています。

どんなWM_でも扱えます

プロセスにフックを挿入できます。

問題:

同じデスクトップで全画面ウィンドウを検出する方法は?

着信 WM_(s) または継続的なチェック以外の手法を使用してフルスクリーン モードを検出する方法は?