問題タブ [winapi]

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

c - 仮想リストビューコントロールの(メイン)バッファーにはいくつの行が必要ですか?

仮想リストビューコントロールの(メイン)バッファーにはいくつの行が必要ですか?

Win32APIに対して純粋な「c」のアプリケーションを作成しています。アイテム(実際には行)を取得するデータベースへのODBC接続があります。

MSDNのサンプルコードは、エンドキャッシュ用に30の固定サイズのバッファーを意味します(これはほぼ確実に最適ではありません)。エンドキャッシュとメインキャッシュは同じサイズにする必要があると思います。

私の考えでは、バッファは、リストビューで一度に表示できるアイテムの最大数よりも多くする必要があります。Listivewのサイズが変更されるたびに、これを再計算できると思いますか?

または、大きな固定値を使用する方がよいでしょうか。もしそうなら、その値は何ですか?

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

c++ - スプリッターをドラッグするためのマウス カーソルの Win32 リソースはどこにありますか?

カスタムの win32 コントロール/ウィジェットを構築しており、コントロールの特定の垂直線にカーソルを合わせたときに、カーソルを水平の「スプリッター」記号に変更したいと考えています。IE: この垂直線 (スプリッター バー) を左右 (WEST と EAST) にドラッグしたい。

システム カーソル (OCR_*) のうち、意味のある唯一のカーソルは OCR_SIZEWE です。残念ながら、これはシステムがウィンドウのサイズを変更するときに使用する大きくて扱いにくいカーソルです。代わりに、高さ約 20 ピクセル、幅約 3 または 4 ピクセルで、左右に 2 つの小さな矢印があるカーソルを探しています。

これを簡単に描画してアプリケーションのリソースとして含めることができますが、カーソル自体が非常に普及しているため、何かが欠けていないことを確認したかったのです。

たとえば、COM のドラッグ アンド ドロップ メカニズム (CLSID_DragDropHelper、IDropTarget など) を使用すると、"ドラッグ" アイコン (ポインターの下の小さなボックス) に暗黙的にアクセスできます。この男の明示的な OCR_* 定数は見当たりませんでした...同様に、このスプリッターカーソルが完全に見つからない場合は、それが COM オブジェクトの一部なのか、それとも win32 lib の他の何かなのか疑問に思っています。

0 投票する
6 に答える
10735 参照

c# - Windows ファイル キャッシュを使用せずにファイルをコピーする

パス A からパス B にファイルをコピーし、Windows ファイル システムのキャッシュを抑制する方法を知っている人はいますか?
一般的な用途は、USB ドライブまたはサーバーから大きなファイルをローカル マシンにコピーすることです。ファイルが非常に大きい場合、たとえば 2GiB の場合、Windows はすべてをスワップアウトするようです。C# の例を優先しますが、可能であれば、これは何らかの Win32 呼び出しになると思います。

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

winapi - Win32 ダイアログのタブ オーダーをプログラムでどのように変更しますか?

ダイアログ テンプレートと CreateDialogIndirect を使用してダイアログが生成された後、ダイアログにコントロールを追加する必要があることがよくあります。このような場合、タブ オーダーはダイアログ テンプレートによって設定され、新しく作成されたコントロールを含めてタブ オーダーを変更する明らかな方法はありません。

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

windows - Windows でのディスク ジオメトリの決定

Windows XP から、物理ディスク上にあるセクター、ヘッド、およびシリンダーの数をプログラムで特定する必要があります。これを決定するためのAPIを知っている人はいますか? Windows はこの情報をどこに公開する可能性がありますか?

0 投票する
5 に答える
5726 参照

winapi - カスタム描画サブアイテムのWin32リストビューコントロールサブアイテムパディング?

custom-draw (NM_CUSTOMDRAW) を使用して ListView SubItem のコンテンツ全体を (レポート/詳細ビューで) 描画する場合、カスタム ペイント メソッドで同じ左右のパディングを適用できると便利です。カスタム描画されていないアイテムに対してそれ自体を制御します。

このパディング値をプログラムで取得する方法はありますか? 特定の文字の幅 (" " または "w" など) に関連しているのか、それとも固定値 (左が 6px、右が 3px など) なのか、それとも...?

編集:明確にするために、コントロールが描画するアイテムに追加するのと同じパディングを NM_CUSTOMDRAWn SubItems に追加したいと思います。たとえば、探しているメトリックは、2 番目の列の先頭の間の空白ですおよび次のスクリーンショットの「シャム」という単語 (注: MSDN のスクリーンショットを追加して、質問の説明に役立ててください):

レポート ビューのリスト ビュー
(ソース: microsoft.com )

「シャム」という単語は、ヘッダー項目 (「品種」) と一致していることに注意してください。カスタムドローアイテムでも同じ位置合わせを保証できるようにしたいと思います。

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

windows - Win32 ToolTip が消えて Commctl 6 で再表示されない

ToolTipウィンドウを作成し、フラグ TTF_IDISHWND | を使用してツールを追加しています。TTF_SUBCLASS。(c++、win32)

プログラムが新しい WindowsXP テーマ (comctrl32 バージョン 6) を使用するようなマニフェスト ファイルがあります。

登録済みのツールにカーソルを合わせると、ヒントが表示されます。
良い。
マウスをクリックすると、先端が消えます。
Ok。
ただし、ツールから離れて戻っても、先端は再表示されません。別のツールにカーソルを合わせてからツールに戻って、ヒントを表示する必要があります。

マニフェスト ファイルを削除すると (XP 以外の古い comctrl32 を使用するため)、問題は解決します。

いくつかの実験を行った後、Comctl32 バージョン 5 (古い) と Comctl32 バージョン 6 (新しい) のツールチップの間に次の違いがあることを発見しました。

  • 新しい TTF_TRANSPARENT ツールチップ (インプレースで使用した場合) は、マウス ボタンが押されている場合、実際には WM_NCITTEST から HTCLIENT を返します。これにより、アプリケーションの境界線が点滅します。

  • 古い TTF_TRANSPARENT ツールチップは、常に WM_NCHITTEST から HTTRANSPARENT を返すため、WM_LBUTTONDOWN 自体を取得したり、フォーカスを盗んだりすることはありません。(これは単なる美学のようですが、次のポイントに影響を与える可能性があります...)

  • 新しいツールチップは、マウス クリック後に WM_TIMER イベントを取得しないようで、非アクティブ化および再アクティブ化された後にのみ (一連の) タイマー イベントの取得を再開します。したがって、マウスをクリックして離した後、ヒントウィンドウを再表示しません。

  • 古いツールチップは、クリック/リリース後にマウスが再び動かされるとすぐに WM_TIMER メッセージを受け取るので、チップを再表示する準備ができています。

したがって、comctl32 の回避策として、次のことを行う必要がありました。

  • TOOLTIPS_CLASS ウィンドウをサブクラス化し、ツールが透明性を要求した場合は常に WM_NCHITTEST から HTTRANSPARENT を返します。

  • TTF_SUBCLASS の使用を避け、マウス メッセージを自分で処理して、WM_xBUTTONUP を受信したときに非アクティブ化/再アクティブ化できるようにします。

内部動作の変更は、ハイパーリンクなどのツールヒントの新しい「クリック可能な」機能に対応するためだったと思いますが、ホバー動作は壊れているようです。

サブクラスの回避策よりも優れた解決策を知っている人はいますか? 私は他の点を見逃していますか?

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

windows - 子ウィンドウをクリックしてもアプリケーションが最前面に表示されない場合があるのはなぜですか?

アプリケーションが別のアプリケーションの背後にあり、アプリケーションのタスクバー アイコンをクリックすると、アプリケーション モーダルの WS_POPUP ダイアログ ボックスが開いていても、アプリケーション全体が z オーダーの一番上に来ると思います。

ただし、私の (および他の) ダイアログ ボックスの一部では、ダイアログ ボックスのみが前面に表示されることがあります。アプリケーションの残りの部分は残ります。

Spy++ を調べたところ、正常に動作するものについては、WM_WINDOWPOSCHANGING がダイアログの親に送信されていることがわかります。アプリケーションの残りの部分を残すものについては、WM_WINDOWPOSCHANGING がダイアログの親に送信されていません。

通常、1 つのダイアログでアプリ全体が表示され、もう 1 つのダイアログでは表示されない例があります。作業ダイアログ ボックスと非作業ダイアログ ボックスの両方で、同じウィンドウ スタイル、サブスタイル、親、所有者、個体発生があります。

つまり、どちらも DialogBoxParam() で作成された WS_POPUPWINDOW ウィンドウであり、3 番目の引数として同一の HWND を渡しています。

Windows プログラムのこの奇妙な動作に気付いた人はいますか? ボタンをクリックすると、TaskBar はどのようなメッセージをアプリケーションに送信しますか? アプリケーションのすべてのウィンドウが前面に表示されるようにするのは誰の責任ですか?

私の場合、基本親子関係は MDI フレームです...それはどういうわけか考慮されますか?

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

winapi - GDI および GDI+ のポリゴン塗りつぶしモード

現在のデバイス コンテキストでのシステムのデフォルトのポリゴン塗りつぶしモードはALTERNATE(Windows プログラミングに関する Petzold の本から学んだように) でありPolygon、モードを で変更しない限り、Win32 関数で使用されますSetPolyFillMode

私の質問は次のとおりです: GDI+ Graphics::FillPolygon(FillModeシグネチャにパラメータなし) メソッドも現在のデバイス コンテキスト フィル モードを使用するか、既知の既定値を設定してから、呼び出される前に設定されたモードに戻しますか?

ありがとう!

0 投票する
5 に答える
25894 参照

winapi - Vista BEX エラー

最近、Vista で jar の読み込み中に IE7 がクラッシュし (おそらく)、次のエラーが表示されました。

グーグルは、この種の問題 Vistaで一般的 であり、 Javaに関連していることを明らかにしました(ただし、SUN は否定します)。また、DEPと関係があると思います。公式の Microsoft Kb が見つかりませんでした。

したがって、質問は次のとおりです。

  • BEXは何の略ですか?
  • どんな内容ですか?
  • この種のエラーに対処するにはどうすればよいですか?