問題タブ [aero-snap]
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.
c++ - アプリケーションで Aero Snap が機能しない
作業中のアプリケーション (Windows デスクトップ、ネイティブ C++ アプリケーション) で Aero Snap が機能しないという問題があり、何が起こっているのか少し混乱しています。箱。
最小限の win32 アプリケーションで Spy++ を使用しましたが、Win-Left を押すと次のメッセージが表示されます。
<00070> 00030D1C P WM_KEYDOWN nVirtKey:VK_LWIN cRepeat:1 ScanCode:5B fRepeat:0 fUp:0 <00071> 00030D1C P WM_KEYDOWN nVirtKey:VK_LWIN cRepeat:1 ScanCode:5B fRepeat:1 fUp:0 <00072> 00030KeyD1C P WM_KEYDOWN nVirt VK_LWIN cRepeat:1 ScanCode:5B fRepeat:1 fUp:0 <00088> 00030D1C S WM_GETMINMAXINFO lpmmi:0043FCBC
<00089> 00030D1C R WM_GETMINMAXINFO lpmmi:0043FCBC
<00090> 00030D1C S WM_WINDOWPOSCHANGING lpwp:0043FCC4
<00091> 00030D1C S WM_GETMINMAXINFO lpmmi:0043F8E8
< 00092> 00030D1C R WM_GETMINMAXINFO lmmi:0043F8E8
<00093> 00030D1C R WM_WINDOWPOSCHANGING
.. など
そのため、左キーの WM_KEYDOWN がアプリケーションに到達していないことがわかりますが、代わりにエアロ スナップの「ウィンドウのサイズ変更」が取得されています。
アプリケーションを Spy++ すると、左のキーが「傍受」されていないことがわかりますが、代わりにアプリケーションに渡されているため、スナップの良さは得られません。
<00043> 000F0F12 P WM_KEYDOWN nVirtKey:VK_LWIN cRepeat:1 ScanCode:5B fRepeat:0 fUp:0
<00044> 000F0F12 P WM_KEYDOWN nVirtKey:VK_LWIN cRepeat:1 ScanCode:5B fRepeat:1 fUp:0
<00045> 000FKey0F12 P WM_KEYDOWN nVirt VK_LWIN cRepeat:1 ScanCode:5B fRepeat:1 fUp:0
<00060> 000F0F12 P WM_KEYUP nVirtKey:VK_LEFT cRepeat:1 ScanCode:4B fRepeat:0 fUp:1
メッセージ処理のコアを掘り下げて何が起こっているかを確認しますが、得られるすべてのヒントを取り上げます:)
編集Win-Up と Win-Shift-Left/Right が実際には正しく機能することに気付きました。そのため、正しい位置/サイズに「エアロ スナップ」されていないのは Win-Down と Win-Left/Right だけです。
編集OK、問題は、ウィンドウが WS_THICKFRAME フラグで作成されていないことです。フラグを追加すると、スナップが機能します。今、私は実際に境界線を最初から望んでいませんが、少なくとも何が奇妙な動作を引き起こしているのかを知っています..
願わくば最後の編集境界線を取り除くことは、WM_NCCALCSIZE に応答して、クライアントがウィンドウ全体を占めるようにするのと同じくらい簡単でした。
wpf - WPFカスタムウィンドウ:Win7AeroSnapで最大化されたウィンドウを「スナップ解除」することはできません
カスタムウィンドウフレームを使用するWPFアプリケーションがあります。私の問題は、Windows7のAeroSnapで最大化されたウィンドウを「スナップ解除」できないことです。
私のウィンドウのプロパティ:
AllowsTransparency
に設定されていますtrue
WindowStyle
に設定されていますNone
ResizeMode
に設定されCanResizeWithGrip
ます。
私は次のようにウィンドウドラッグの動きを処理します:
ウィンドウを左、右、上にドッキングして、通常のウィンドウのように動作させることができます(それぞれ、画面の左半分に拡大、画面の右半分に拡大、最大化)。
Aero Snapがどのように機能するかはわかりませんが、奇妙なことに、通常のWPFウィンドウ(非カスタムウィンドウ)は問題なく機能します。問題なく最大化されていれば、スナップを外すことができます。それでは、なぜ上記のプロパティをウィンドウに適用すると、それが壊れるのでしょうか。
これを機能させるために、カスタムWMメッセージ処理を行う必要がある可能性はありますか?
c++ - GetWindowPlacementが誤ったウィンドウ位置を示します
エアロスナップ機能を使用してウィンドウのサイズが変更されたかどうかを確認するにはどうすればよいですか?GetWindowPlacement
関数は、最新の「復元された」ウィンドウサイズを提供します。私はそれを次のように使用します:
たとえば、wp.rcNormalPosition = {top=208 bottom=520 left=152 right=510}
あるべきときに、
を与えます{top=0 bottom=1920 left=152 right=510}
。
それは私のせいでしたGetWindowRect
まったく同じ誤った結果が得られることに注意してください。GetWindowRect
、正しい結果を与えます。
プログラムの終了時にウィンドウの状態を保存し、開始時にロードする必要があるため、ウィンドウがどのように配置されているかを知る必要があります。実際のウィンドウ座標を確認するにはどうすればよいですか?
さて、私は(そして他のいくつかの標準的なWindowsコンポーネント)でいくつかのテストを行いました、notepad.exe
そしてそれは同じ方法でその状態を保存します—それが「スナップ」されたかどうかを覚えていません。したがって、これはWindowsプログラムの意図された動作であると思います。
winapi - Windows 7 での Aero スナップ位置の保存と復元
ウィンドウがあり、ウィンドウが閉じたときにその位置を保存し、ウィンドウが再び開いたときにそれを復元したいとしましょう。これを行う典型的な方法は、GetWindowPlacement / SetWindowPlacement を呼び出すことです。これにより、位置と最大化/最小化状態が記憶されます。
Windows 7 では、「エアロ スナップ」機能を使用してウィンドウを画面の横にドッキングできます。私の質問は、「スナップ」状態を復元できるように、「スナップ」されたウィンドウをどのように保存および復元するかです。GetWindowPlacement / SetWindowPlacement ではこの問題は解決されず (私の知る限り)、Windows 7 で「スナップ」API を見たことがありません。
here にも同様の質問があり ます Windows7によってウィンドウのサイズが変更されたことを検出する方法ですが、この場合、OPは「スナップ」状態ではなく、復元位置を望んでいるようです。
c# - WinForm アプリケーションを起動します Aerosnaped 右揃え
これは簡単な質問ですが、search-foo には失敗しました。私の目標は、Aero (Vista または Windows 7) で実行していることを検出し、アプリケーションをデフォルトで Aerosnap にすることです。(私が作成した企業アプリケーションは、ほとんどの人が右側にエアロスナップし、Outlook を左側にスナップして実行していることがわかりました。)
アプリケーションはWinFormsで、現在やっています
私のフォームのロードイベントで。これはうまく機能しますが、WindowKey+Arrow を使用すると、通常の位置にあるフォームのように機能します。これは、最初に WindowKey+Right を押しても何も起こらず、WindowKey+Left で左にスナップすることを意味します。これは大きな問題ではありませんが、ウィンドウ サイズを指定し、アプリケーションを右にスナップして、これらのキーが他のアプリケーションと同じように機能するようにしたいと考えています。
これが可能かどうかはわかりませんが、私が見つけたものは次のとおりです。
これらは、利用可能な特別な AeroSnap メッセージがないことを示しているようです。他に誰か知っていますか?
c# - ウィンドウが画面の端にスナップしないようにする
WPF ウィンドウが画面の端にスナップしないようにする方法はありますか (つまり、Aero スナップ)?
OS でユーザーがこれを無効にできることはわかっていますが、自分のウィンドウだけが再配置されないようにしたいと考えています。
たとえば、モーダル ウィンドウはそのようにスナップされません。WPFウィンドウにも設定できると思いますが、方法がわかりません。
vim - いくつかのアクションの後にgVimがサイズ変更および再配置されるのはなぜですか?
数週間前にgVimを使い始めました。しかし、早い段階から、特定のアクションを実行すると、gVimウィンドウ全体のサイズが奇妙に変わることに気づきました。これは、Windows Aeroスナップ(Windows 7 x64システム)の使用に関連していると思います。
複製する手順(空の.vimrc
ファイルを使用し、vimfiles
フォルダーの名前を変更):
- gvimを開きます
- gvimウィンドウをモニターの左側に(数回タップして)win+で配置します。left arrow
- を使用して新しいタブを作成します
:tabe
結果: gVimは、画面上の他の場所に自分自身を再配置します。したがって、win+を使用して再配置する必要がありleft arrowます。とてもうるさい。
私は他のタブやウィンドウのアクションでもそれを持っています::vnew
、、C-W o
.. ..
なぜこれが起こっているのか、そしてそれを修正するために私ができることについてのヒントはありますか?プラグインの干渉を排除するために、ファイルをすでに空に.vimrc
し、一時的に〜/vimfilesフォルダーの名前を変更しました。
編集:マシューの返信とに関する情報に続いて:help bugs
、バグレポート(実際にはこの投稿)をに送信しましたbugs@vim.org
c# - C# コードからエアロ スナップ機能をプログラムで使用する方法
簡単な質問があります。C# コードからプログラムで Aero スナップにアクセスするにはどうすればよいですか。同様に、「左にスナップ」ボタンをクリックすると、手動でドラッグしたときと同じように、プログラムウィンドウが左にスナップします。私はSO全体を見ましたが、すべての質問は、エアロスナップがフォームで機能せず、フォームをスナップしないようにすることに関するものであるようです. プログラムでフォームをスナップしない。インターロッピングを使用して喜んでいます。ありがとう
qt - Qt のボーダレス ウィンドウを使用した Aero スナップ
Qt で Metro スタイルのインターフェイスを作成しようとしています。これは、Windows 7 の Aero 境界を使用しないことを意味します。ウィンドウをボーダレスに設定し、コードを追加してドラッグ可能にし、ボタンを最小化、最大化、および閉じるようにしました。ただし、エアロスナップは機能しません。
Visual Studio 2012、MS Word 2013、および Steam にはすべて、Aero Snap を使用したボーダレス ウィンドウがあるため、それが可能であることはわかっています。
Aero Snap をボーダレス Qt アプリケーションに実装するにはどうすればよいですか? ありがとう。
windows - Windows7 で、アプリケーションが最大化された状態でハングすると、アプリのウィンドウの位置に関係なく、ゴースト ウィンドウが常に左上隅に作成されます。
特定のケースでは、アプリケーションの UI スレッドが 5 秒以上かかる重い処理を行う必要があり、これが発生した場合、OS はアプリがハングしたと見なし、ゴースト ウィンドウを作成します。
このゴースト ウィンドウは、アプリが復元された状態のときにアプリの上に正しく作成されますが、アプリが最大化された状態のとき、このゴースト ウィンドウは常に左上隅として Point(0,0) を選択するため、アプリがジャンプしているように見えます単独で左上に移動します。このジャンプを避けることはできますか?
アプリのゴースト ウィンドウの作成を無効にしたくありません。回避策の 1 つは、定期的に PeekMessage (削除しないでください) を使用することです。ただし、可能であれば、OS が必要なときにいつでもゴースト ウィンドウを表示したいのですが、応答しない状態になる前にアプリがあった場所に正確に表示する必要があります。
WM_GETMINMAXINFO をオーバーライドして、アプリケーションの最大ウィンドウ サイズをカスタマイズすることに注意してください。
------------これがカスタム ウィンドウ サイズの設定方法です--------------