問題タブ [mdi]

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 投票する
3 に答える
2066 参照

c# - 子フォームが空白のmdiでのメモリリーク

メニューから空白の子フォームを開くmdi親フォームを使用して空白のアプリケーションを作成しました。

子フォームの親フォームがmdiに設定されている場合、システムがメモリを解放していないように見えるため、リークが発生します。

親フォームが設​​定されていない場合、子フォームは削除されます。

この明らかなメモリリークを解決できる理由を誰かが知っていますか?

私はアリのメモリプロファイラーを使用しています。

ボブ。

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

c++ - ウィンドウメニューで利用可能なウィンドウを表示する方法

最近VS2003からVS2008に移植したMFCMDIアプリケーションがあり、同時にStingray Objective Studio2006v2からv10.1に移行しました。以前のバージョンのアプリケーションでは、複数のビューを開いていた場合、ウィンドウメニューには、使用可能なビューの列挙リストが表示されます。たとえば、1 MyViewA2 MyViewBなどです。多数のビューがある場合は、また、ビューを選択できるようにするWindows...メニューオプションも表示されます。これはもう起こりません。これは私のGUIレベルの回帰テストのいくつかを破っています。私の推測では、この機能はCMDIFrameWndまたはSECMDIFrameWndのいずれかによって実装されましたが、ドキュメントでそれへの参照を見つけることができませんでした。この機能を取り戻す方法を知っている人はいますか?

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

.net - MDI アプリケーションの最小化/復元の問題

さて、VB .Net MDI フォーム アプリケーションができました。

frmMain は、IsMDIContainer が TRUE に設定された「親」フォームです。

MDIparent プロパティを frmMain に設定して、frmMain から "frmChild" をロードします。

フォームを最小化してから、アプリケーションを最小化します。数分後にアプリケーションを復元し、frmChild を復元すると、frmChild が完全に空白になっていることがわかりました...?

これは、子フォームを最小化してからアプリケーションを最小化し、その後アプリケーションを復元してから子フォームを復元すると断続的に発生します...

0 投票する
3 に答える
4759 参照

user-interface - GUIデザイン-複数のフォームとシミュレートされたMDI(タブ)とPageControl

次のスタイルのどれが好きですか?

  • タスクを実行するアプリケーションが新しいフォームを開きます
  • さまざまな「フォーム」をさまざまなタブに保持するアプリケーション
  • PageControlに基づいており、実行したい内容に応じて適切なタブを表示するアプリケーション。
  • 他の何か

また、GUIデザインのための良いリンクはありますか?

0 投票する
10 に答える
15987 参照

c# - MDI 親の背景画像

私は手に入れることができるすべてを絶対に試しましたが、うまくいきません! 誰かがこの問題を解決したことがありますか?

画像を背面に配置することはできますが、フォームのサイズを変更しようとしない場合にのみ機能します (縮小は問題ありません。拡大すると空の灰色のスペースが残ります...)。

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

windows-7 - Windows 7 での MDI 子ウィンドウの色の変更

Windows XP で見栄えのする C++ で記述された MDI アプリケーションがあります。MDI 子ウィンドウはすべて、最終的に親ウィンドウのように見えます。良い。ただし、Windows 7 (およびおそらく Vista) では、親ウィンドウにはエアロ グラスがあり、子ウィンドウは、この忌まわしく変更不可能な水色 (Windows 7 の基本テーマと同じ) です。したがって、私のアプリケーションは本当に非常に悪いように見えます。

Office 2003 を起動し、MDI 子ウィンドウ (おそらく Excel) を見てみると、これと同じ醜い動作が見られます。ただし、Office 2007 には、実際には、青、銀、および黒の 3 つのカラー テーマがあります。これらのテーマは、何らかの形で Excel の MDI 子ウィンドウに引き継がれます。

Microsoft が Office 2007 でこれをどのように行っているかはわかりません。トリックを知りたいです。MDI 子ウィンドウの描画をフックして引き継いで、Office 2007 チームが実現したものを複製する必要があります。問題は、すべての DrawTheme* 呼び出しを使用して、グラデーションと丸みを帯びたエッジとボタンをすべて適切に描画することです。そして、これらすべてのシステム コールには、テーマへのハンドルが必要です。ただし、たとえば SetWindowTheme を使用して、別のテーマの配色を使用するように変更することはできないようです。少なくとも私が知る限り。

マイクロソフトがこれをどのように達成したか知っている人はいますか?

0 投票する
3 に答える
3231 参照

qt - OpenGLを使用したQtMDIアプリ:有効なスクリーンショットを取得する方法は?

Qtで書かれたMDIアプリがあります。一部のサブウィンドウにはQGLWidget、OpenGLコンテキストなどが含まれます。これらの中で最も顕著なものは、OpenGL頂点シェーダーとフラグメントシェーダーを使用してデータを視覚化します。

アプリケーションのメインウィンドウのスクリーンショットをプログラムでキャプチャする必要があります。もちろん、たまたま表示されているすべてのサブウィンドウも含まれます。最初は簡単に聞こえますが(「間違いなく何度も尋ねられるので、ググってみましょう!」)、よく見ると少し注意が必要です...

これが私がこれまでに試したことです:

  1. QPixmap::grabWidgetシェーダープログラムを使用するサブウィンドウでは機能しません。これは、リダイレクトコンテキストが必要なOpenGL拡張機能をサポートしていないように見えるためです。(レンダリングコードは、関連付けられたコンテキストが必要な拡張機能をサポートしていることを確認し、サポートしていない場合は続行を拒否します。)
  2. QPixmap::grabWindow基本的なプリミティブのみを使用するものも含め、すべてのOpenGLコンテキストをサイレントに空のままにします。
  3. QGLWidget::grabFrameBufferAlt+PrtScr動作しますが、特定のサブウィンドウのOpenGLコンテキストのみをキャプチャしますが、アプリケーション全体(基本的にはWindowsで何が行われるか)を取得したいと思います。

また、最初に#2を実行してから、すべてのサブウィンドウに対して#3を繰り返し、#3の結果を#2から画像の正しい場所にコピーしてみました。これは、いくつかのサブウィンドウをオーバーラップさせるまでは非常にうまく機能しました。その場合、#3の画像がサブウィンドウのフレームなどを上書きします。したがって、このアプローチでは、厄介なコーナーケースをすべて処理するために、おそらくはるかに多くのコードが必要になります...

いくつかの追加の背景:スクリーンショットを取得したら、ビデオを作成するためにそれらのいくつかをシーケンスに入れます-おそらくffmpegを使用します。そのため、この質問は私の前の質問(の最初の部分)の一種の続きになります。アプリがシングルコンテキストのスタンドアロンOpenGLプログラムから、ウィンドウやUIウィジェット全体にQtを使用し、サブウィンドウにグラフィックを埋め込むものに進化しただけです。

もちろん、Qt風のクロスプラットフォームソリューションを好む一方で、Windows固有のハックに頼ることも検討したいと思います。Alt+PrtScr(私は非常に正しいことをしていることがわかるので、これは可能であるはずです。)

それで、何か提案はありますか?

0 投票する
3 に答える
5399 参照

c# - MDI ウィンドウ リストが子タイトル バーのテキストを更新しない

MDI コンテナー フォームと、タイトル バーのテキスト自体を個別に更新するいくつかの子フォームがあります。子フォームで Text プロパティが変更された後、メニューを開いたときに、ウィンドウ リスト メニューで子からの新しいタイトル バー テキストが更新されません。これは、MdiWindowListItem プロパティを介して .NET によって提供される、自動生成されたウィンドウ リストです。

変更は、別のイベントがウィンドウ リストを物理的に変更した場合 (新しい子を開く、子を閉じる、別の子に切り替える) にのみ伝播します。

プログラムでウィンドウ リストを強制的に更新する方法はありますか? 子のタイトルバーのテキストが変更されると同時に、メニューの有効化/無効化を行うコードが既にいくつかあります。

次のことを試しましたが、成功しませんでした:

  • メイン MenuStrip の Update()
  • メインの MenuStrip の Refresh()
  • ウィンドウ MenuStrip の Invalidate()
  • 実行時にウィンドウ リスト項目の 1 つで Invalidate()
  • 実行時にウィンドウ リスト項目の 1 つで Checked 状態を 2 回切り替える

メニュー項目、その親 ToolStrip、またはメニュー システムを含む親フォームで呼び出す、リモートで実行可能な関数は他にないようです。

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

c# - MDIParent で無効なクロススレッド操作の取得

重複の可能性:
クロススレッド操作が無効です

別のスレッドからフォームのベースを閉じようとしています。次のエラーが表示されます。

System.InvalidOperationException: クロススレッド操作が無効です: コントロール 'MDIParent' は、それが作成されたスレッド以外のスレッドからアクセスされました。

以下の行の場合:

0 投票する
4 に答える
493 参照

.net - MDIUIを取り除くためのインスピレーション

Microsoftは、私たちにMDIの使用をやめさせたいようですが、私のような人が増えると、以前の状況にとらわれてしまいます。WordやExcelのようなソフトウェアは、MDIなしで簡単に作成できますが、MDIなしで優れたUIを考えるのに苦労しています。

私や私のような他の人が、MDIを使用せずに優れたWinFormsUIを作成する方法の例を見ることができる場所はありますか。MDIの賛否両論について議論を始めるのは私の意図ではなく、インスピレーションとして良い例を望んでいます。

編集:私は、質問に実際には関係のない回答を受け入れることにしました。それは、どのように進めるかについての良いアイデアを私に与えてくれたからです。それは質問に対する一般的な答えではないかもしれませんが、それは私を助けました。さらなる提案もいつでも歓迎されます...:)