問題タブ [propertysheet]
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++ - アプリを強制的に最前面に表示してフォーカスするにはどうすればよいですか?
私も取り組んでいるインストーラーのブートストラップであるアプリケーションに取り組んでいます。アプリケーションは、いくつかの MSI 呼び出しを行って、アプリケーションのメイン ウィンドウであるウィザードをまとめるために必要な情報を取得します。これにより、情報の収集中に進行状況ウィンドウが開き、完了すると消えます。次に、ウィザードがセットアップされ、起動されます。私の問題は、ウィザード (CPropertySheet から派生) が前面に出てアクティブなアプリケーションになりたくないということです。
OnInitDialog() メソッドで次のコードを使用して、前面に表示する問題を解決しました。
私の問題は、ウィンドウを自己アクティブ化する方法 (つまり、ウィンドウ自体をフォーカスする方法) をまだ理解していないことです。SetFocus() は、このコンテキストでは機能しません。ウィンドウを強制的に Z オーダーの一番上に移動し、できればできるだけ少ない呼び出しでアクティブにするものが必要です。
私の推測では、最初に MSI 呼び出しによって開かれた進行状況ウィンドウが原因でメイン ウィンドウが台無しになっていると思われますが、そのウィンドウが表示されないようにする方法はありません。また、メイン ウィンドウが表示される前に何が起こっているかをユーザーに知らせるため、これを非表示にしても意味がありません。
winapi - ページが処理した後、PropertySheet の [OK] または [適用] ボタンに応答する方法は?
PropertySheet
API を使用すると、[OK] または [適用] ボタンが押されたときに (Windows XP 以降で) メッセージを受信できる を定義できますPropSheetProc
。これにより、これらのボタンのいずれかがクリックされたときに処理を実行できます。
ただし、このハンドラーは、個々のプロパティ ページがそれぞれのダイアログ プロシージャを介して通知を受け取る前に呼び出されます。これらの通知が処理された後、できれば醜いハックなしでPSN_APPLY
処理を行いたいです。どうすればいいですか?
背景:構成を単一の に保存しています。struct
個々のページstruct
は、適用時にそれぞれの部分を変更します。struct
次に、これらの値が書き込まれた後、各プロパティ ページからすべての設定を再適用するのではなく、すべての設定を一度に適用したいと考えています。
c++ - PropertySheet をラップします。コールバックを処理するには?
Windows をラップする (アンマネージ) C++ クラスを作成していますPropertySheet
。基本的に、次のようなものです:
コンストラクターはd_header
メンバーを初期化するだけです。
その後、次の方法でモーダルに表示できます。
問題は、コールバックが静的であるため、ラッパー クラスにアクセスできないことです。これが通常のウィンドウで、 のWindowProc
代わりに を使用している場合、 in を使用しPropSheetProc
てウィンドウに追加データを追加できます。この記事のように、ポインターをラッパーに戻すことができます。ただし、プロパティ シートにはこの機能はありません。cbWndExtra
WNDCLASS
さらに、プロパティ シートはモーダルに表示されるため、コールバックまたはシートのウィンドウ プロシージャの 1 つを介してコードが実行される場合を除いて、実際のウィンドウの作成と破棄の間にコードを実行することはできません。
これまでに思いついた最善の解決策は、プロパティ シートを表示する直前に、ラッパー クラスへのポインターをグローバル変数内に格納することです。しかし、これは、一度に 1 つのプロパティ シートしか表示しないことを前提としており、いずれにしても非常に見苦しいものです。
これを回避する方法を知っている人はいますか?
eclipse-plugin - Eclipseプラグイン:そのようなプロパティビューを実装する方法は?
次のように、PropertyView/PropertySheetにオブジェクトの配列を表示したいと思います。
どうやってするの?どうも。
visual-c++ - CMake を使用して Visual C++ プロパティ シートを追加する
現在、gcc プロジェクトを Visual C++ に移植しています。これは CMake ファイルで定義されており、互換性を保つために Visual C++ プロパティ シートを作成しました (GccCompat.props)。Visual C++ プロジェクト ファイルが CMake によって再生成されるたびに、プロパティ シートを手動で追加する必要があります。プロパティ シートを自動的に追加する方法がわからないからです。したがって、質問は次のとおりです。
生成された Visual C++ ソリューションにプロパティ シートを追加するように CMake に指示するにはどうすればよいですか?
winapi - 実行時のプロパティ シートへのコントロールの追加 (ダイアログ テンプレートなし)
私が見る限り、通常 Win32 (私は MFC ではなく API を使用しています) プログラミングでプロパティ シートを作成する方法は、タブ ページごとに多数のダイアログ テンプレートがあり、それらからプロパティ シートを作成することです。「メモリ内」でダイアログ テンプレートを作成することについて読んだことがありますが、この方法では実行したくありません。BUTTON
実行時にウィンドウを作成して追加できるのと同じように、実行時にコントロールをプログラムでプロパティ シートに追加するにはどうすればよいでしょうか。
c++ - クリックすると PropertySheet タブが閉じます
Windows API を使用して PropertySheet コントロールを作成していますが、何らかの理由でタブをクリックすると閉じてしまいます。
たとえば、4 つのタブを追加すると、次のようになります。
次に、アクティブなタブ以外のタブをクリックすると (この場合は何も起こりません)、次のようになります。
非アクティブなタブをクリックすると、タブが 1 つだけ残って消えます。
次のように作成された、メモリ内のダイアログテンプレートを使用してタブを作成しています。
次に、次のように PropertySheet を作成します。
PROPSHEETHEADER psh;
そして、次のように 4 つのページを追加します。
最後に、これが私の DialogProc です。
しかし、なぜか「へい」が表示されない。また、任意のインデックスで PSM_INDEXTOHWND を送信すると、常に NULL が返されます。なぜこれが起こっているのか誰にも分かりますか?
c++ - プロパティ シート ページのハンドラーからスローされた例外
プロパティ シート ページのハンドラー (たとえば、OnInitDialog ハンドラー) 内ではなく、最上位アプリケーションの try-catch ブロックによって例外をキャッチして処理したいと考えています。したがって、以下のコードでは、これらの例外は catch (...) ブロックで処理されることになっています。
ただし、OnInitDialog が例外をスローすると、Windows デストラクタの実行後に (デバッグ モードで) アサートが表示されます。CMyPropertySheet デストラクタで EndDialog(m_hWnd, IDCANCEL) を呼び出しても、アサートは残ります。不足しているものや間違っているものを検出するのを手伝っていただけますか? WTLを使用しています。私のプロパティ シート claa は、CPropertySheetImpl から派生しています。
ありがとう。
c++ - プロパティシートデータの検証
ユーザーがプロパティシートの[OK]または[適用]ボタンをクリックし、プログラムが一部のページのデータが無効であると判断した場合、エラーを含むページをエラーを説明するメッセージボックスとともに表示するにはどうすればよいですか?
現在、検証を行うプロシージャは、PSN_APPLY通知の処理中に次のことを行います。
これは、検証(A)を実行しているページが現在表示されている場合は問題なく機能しますが、他のページ(B)が表示されている場合は、そのページ(B)が表示された状態でメッセージボックスが表示され、メッセージボックスに応答すると、そのページが表示されます。検証エラー(A)が表示されます。そのページ(A)がPSN_SETACTIVE通知を受け取ると、メッセージボックスが表示されるようにフラグを設定することを考えましたが、それはちょっとおかしなようです。
Win32 APIはC++で、MFCも、NETも、派手なものもありません。
winapi - WINAPIの例を使用したダイアログのプロパティシート(MFCを使用しない場合)
WINAPI(MFCではない)を使用してダイアログボックスにプロパティシートを埋め込むWINAPIの例を誰かに教えてもらえますか?