問題タブ [nonclient]
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++ - 非クライアント領域に描画する方法は?
ウィンドウの非クライアント領域で、メニュー バーの右側に描画できるようにしたいと考えています。
C++ / MFC を使用して、これは可能ですか?
winapi - Windows: ウィンドウ装飾でマウスダウン
ほとんどすべての Windows アプリケーションで、クライアント以外の領域でマウス ボタンを押したままにすると、描画が停止することに気付きました。なぜこれが必要なのですか?
たとえば、回転する立方体を表示するマネージド ダイレクト 3D アプリケーションがあります。ポインターをタイトル バーの上に置いてマウス ボタンを押したままにすると、ループにそのような条件をコーディングしていなくても、キューブの回転が停止します。
塗装はなぜ中止?利点は何ですか?最も重要なのは、これを回避するにはどうすればよいですか?
winapi - Vista/Aero で WM_NCPAINT を処理すると DWM グラス レンダリングが「壊れる」
WM_NCPAINT
ユーザー設定に基づいて、Aero/Glass とカスタム レンダリング フレーム (を処理することにより) を交互に切り替えるウィンドウを作成しようとしています。(Windows Vista)。
DwmComposition
有効になっています。私のアプリはグラス フレームを表示しますが、カスタム コードパスをトリガーするように設定をWM_NCPAINT
切り替えてから useDefWindowProc
のWM_NCPAINT
処理に戻るとすぐに、ネイティブ フレームは「Vista Basic」スタイルで永久に動かなくなります - もう半透明ではありませんキャプション ボタンは、通常の Aero/Glass のものとは異なって見えます。
SWP_FRAMECHANGED
送信からウィンドウスタイルの変更、元に戻す、非表示など、ウィンドウを突き刺すほぼすべての方法を試しましたが、すべて役に立ちませんでした。WM_NCPAINT
窓を延期するのではなく、ガラス窓を処理するとすぐにDefWindowProc
、永遠に「壊れた」ようです。
MSDN (code dot msdn dot microsoft dot com slash chrome) で C#/WPF の例を見つけました。これは、単に WM_NCPAINT の処理を停止する必要があり、ガラスが返されることを示しているようですが、自分のアプリでは機能しないようです。
この状態をきれいにリセットする方法はありますか? 私のコードはC++で、ここに住んでいます:
delphi - Delphi:Windows 7のようなエアロでビスタのキャプションフォームにテキストを描く
Windows 7 のような aero を使用して、Vista のキャプション バーに (onClick イベントを使用して) テキストを描画するにはどうすればよいですか?
代替テキスト http://img529.imageshack.us/img529/3643/imaginembl.jpg
delphi.about.comの例は、 Aero を使用する Vista では機能しません。あなたはなにか考えはありますか?
ありがとうございます。
私の悪い英語でごめんなさい。
gdi - DWM コンポジションの切り替えにより、クライアント領域のアルファが失われる
ここに単純な Windows アプリケーションがあります。
http://www.bengoodger.com/software/chrome/dwm/app.cc
私のアプリは、DWM 合成がアクティブなときはカスタマイズされたグラス フレームを提供し、非アクティブまたは利用できないときは完全なカスタム フレームを提供します。
「カスタマイズされたガラス フレーム」は拡大されたタイトル バー領域で構成されています。これは_
、透明なコントロールをレンダリングしたいので、クライアント領域の一部である WM NCCALCSIZE の実装によって報告されます。ウィンドウのこの「高いタイトル バー領域」の部分が透明になるように、透明な黒 (上記の単純な例では BLACK_BRUSH) で塗りつぶし、DWM によってガラスとして描画されます。
たとえば、外観設定コントロール パネルを使用して Vista Basic または Windows Standard に切り替えたり、システムで DWM を無効にする必要があるアプリを起動したりして、システムの DWM を切り替えると、アプリは WM_NCPAINT などを処理して完全なカスタム レンダリング モードに切り替わります。 . 元に戻すと、逆のことが予想されますが、これはほとんどの場合発生しますが、「背の高いタイトル バー領域」が真っ黒になります。
ウィンドウの配置を取得し、ウィンドウを非表示にしてから、WM_DWMCOMPOSITIONCHANGED 処理でウィンドウの配置を再度設定することで、この問題を回避できることがわかりましたが、これにより他の恐ろしいバグが発生します (ウィンドウの z オーダーの変更が最も少ない)。
私の質問は - ここで何が間違っているのですか? どういうわけかウィンドウが偽の状態になっているようで、非表示/表示すると修正されます。どうすればこれを防ぐことができますか? ガイダンスをいただければ幸いです。
注:これをいくらか絞り込みました。DWM グラスが有効な場合、クライアント領域の上にレンダリングされる黒く塗られたクライアント領域の部分は、透明にレンダリングされます。Glass 以外から Glass に戻ると、クライアント領域が透明ではなく、真っ黒にレンダリングされることに気付きました。ただし、ウィンドウを最大化して復元すると、ウィンドウは透明に戻ります。その後、ウィンドウのサイズを小さくドラッグしても、上部のウィンドウは透明のままです。大きくドラッグすると、ウィンドウの上部が再び黒くなります。DWM がウィンドウの背後にあるピクセルをキャッシュしており、ウィンドウのサイズを大きくすると、キャッシュが十分に大きくないため、そこに何も描画できなくなるかのようです。この状態をリセットする DWM 関数が見つからないようです。
php - PHP の非現行ユーザー セッション データへのアクセス
現在接続しているクライアント ($_SESSION) でアクティブなセッション以外のユーザー セッションのデータにアクセスすることは可能ですか?
もしそうなら、どのように?
winforms - 透明な非クライアント領域
Windows フォームを使用して TextBox コントロールのサブクラスを作成しています。クライアント領域を変更する (非クライアント領域を拡大する) ために WM_NCCALCSIZE を使用していますが、非クライアント領域を透明にする方法についての解決策が見つかりませんでした。WM_NCPAINT の非クライアント領域に透明な方法でペイントして、子コントロールの交差領域で下層のウィンドウの背景を複製する簡単な方法はありますか?
c# - クライアント領域がない場合、WM_NCPAINT を受け取る必要がありますか?
カスタム コントロールで理解したいことがあります。WM_NCCALCSIZE を処理して、クライアント領域をウィンドウ全体に設定します。つまり、非クライアント領域はありません。WM_NCPAINT を受信しないことを期待していましたが、ウィンドウ サイズが変更されるたびに受信します。ここに私のWndProcコードがあります:
そのため、サイズ変更が発生したときに確認したところ、WM_NCCALCSIZE が正しく受信され、_drawManager.NcCalcSize は「rect」を変更しません。次に、WM_NCPAINT が受信され、境界とクライアント rect を比較して、非クライアント ペインティングが発生するかどうかを確認する必要があります。 . これは正常ですか?
winapi - IDirect3DDevice9::SetCursorProperties を使用すると、非クライアント領域でカーソルが点滅する
Direct3D9 でアプリケーションを実行しています。アプリケーションは、Direct3D HW カーソル API (IDirect3DDevice9::SetCursorProperties
など) を使用してカーソルを制御しています。ほとんどすべてが正常に動作します:
- アプリケーション ウィンドウ内では、SetCursorProperties で指定されたカーソルが表示されます。
- アプリケーション ウィンドウの外にある場合、デスクトップまたは他のウィンドウの必要に応じて、通常の OS カーソルが表示されます。
問題は、ウィンドウの非クライアント領域 (タイトル バー、画面の端) にあります。非クライアント領域で移動すると、その領域の機能に対応するカーソルが短く表示されますが、移動を停止すると、SetCursorProperties で設定されたカーソルが再び表示されます。
IDirect3DDevice9::SetCursorProperties
ウィンドウの非クライアント領域でデフォルトの OS カーソルを取得するための正しい使用方法は何ですか?
c# - winform、つまり非クライアント領域のスタイル (タイトル バーの色、境界線) を変更します。
winforms のタイトル バーの色を変更し、非クライアント領域のルック アンド フィールを変更する簡単な方法はありますか?
私はこのリンクを見つけましたが、初心者にとっては非常に典型的なようです: