問題タブ [comctl32]

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

windows - TaskDialogでデフォルトのボタンを設定するには?

win32 アプリで TaskDialog API を使用しています。はい/いいえボタンを含むタスク ダイアログを作成しましたが、いいえボタンをデフォルトとして設定するオプションが見つかりません。YES ボタンは常にデフォルトです。NOボタンをデフォルトにする方法があれば教えてください。TaskDialogIndirect がデフォルトのボタンオプションをサポートしていることは知っていますが、私がやろうとしていることはやり過ぎです。デフォルトとしてNOボタンを備えた単純なYES / NOダイアログが欲しいだけです。タイトルバーに閉じるボタンが必要ないため、MessageBox API を使用しませんでした。

ありがとう、

アビナイ

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

winapi - win32コントロールをサブクラス化し、古いバージョンのcomctl32.dllとの互換性を維持するにはどうすればよいですか?

共通コントロールのバージョン6.0(comctl32.dll)は、古いバージョンのWindowsでは使用できないコントロールをサブクラス化するための新しいアプローチを実装しています。いずれかのバージョンの共通コントロールライブラリをサポートするシステムで機能するようにサブクラス化を実装するための最良の方法は何ですか?

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

c# - DragDrop でのみ発生する例外

ComCtl32.dll の Vista スタイルのダイアログを利用するTaskDialog ライブラリを利用する WinForms アプリケーションがあり、下位の OS ではエミュレートされた win フォームを使用します...

しかし、それは問題ではありません...このライブラリは正常に動作し、問題が発生したことはありません. 今までは... 実際、通常の状況でダイアログを起動すると、問題ないように見えます。

ただし、他のソース (Windows エクスプローラーなど) からドロップされたファイル パスをキャプチャするために、メイン フォームにドラッグ アンド ドロップ ハンドラーを追加しました。そのドラッグ アンド ドロップ ハンドラがダイアログが初めて表示された場合、次の例外が発生します。

DLL 'ComCtl32' で 'TaskDialogIndirect' という名前のエントリ ポイントが見つかりません。

これは、サード パーティ ライブラリの次の呼び出しで発生します。

ダイアログがすでに表示されている場合、ハンドラーは正常に実行されます。

フォームの DragDrop ハンドラは表示されませんが、とにかくInvokeRequiredダイアログを表示するように注意しました。Form.Invoke

余談ですが、64ビットのWindows 7マシンでコンパイル(および実行)していますが、「AnyCPU」アーキテクチャフラグを使用しています。

最初の呼び出しがTaskDialogIndirectDragDrop ハンドラーを介した場合にのみ例外が発生する理由についての考え/解決策???

0 投票する
0 に答える
163 参照

vsto - VSTO アドインと comctl32.dll

VSTO 4.0 および .NET 4.0 を使用して Word および Excel 2010 アドインを開発しています。このアドインは、MFC で記述されたシック クライアントの一部の機能を統合します。また、アドインから呼び出したときに Win2k スタイルを使用する MFC ダイアログ (シック クライアントでは通常のように見えます)。読み込まれたライブラリのリストには、comctl32.dll の 2 つのバージョン (5.82 と 6.10) があります。Word と Excel で正しいバージョンの comctl32.dll を使用するにはどうすればよいですか? マニフェスト Excel を変更しようとしました - 役に立ちますが、この方法は私には合いません。

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

vb6 - ActiveXコントロールをComctlib.Toolbar(mscomctl)コントロールに追加できますか?

$ Hello_all、

VB6アプリケーションに機能を追加しています(そうです、すばらしいタスクです:P)。ActiveXコントロール(ボタンのように見えますが、より多くのことを実行します)をcomctlib(Microsoft Common Controls)ツールバーにドロップする必要があります。

これは可能ですか?この機能が本当に必要なので、Winapi、相互運用機能、または必要なものを使用してもかまいません。Comctlibコントロールでこれが不可能な場合、他のActiveXコントロールをドロップできるVB6用の別のツールバーコントロールはありますか?

この時代遅れのテクノロジーを手伝ってくれてありがとう。

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

winapi - Windows RT のデスクトップ アプリから "comctl32.dll" を読み込めませんでした

http://forum.xda-developers.com/showthread.php?t=1944675で説明されている方法を使用して、Windows RT を使用してサーフェスで win32 デスクトップ アプリを実行しました。

LoadLibraryを使用して、user32.dll、kernel32.dll、gdi32.dllなどのWindows dll をロードできます。しかし、LoadLibraryを使用して「comctl32.dll」または「comdlg32.dll」をロードしようとすると、NULL が返されます。

GetLastError()によって返されるエラー コードは1114です。「ダイナミック リンク ライブラリ (DLL) の初期化ルーチンが失敗しました」という意味です。

編集: x86 用にコンパイルしたアプリをテストすると、問題なく動作します。ARM 用にビルドして Windows RT で実行すると、このエラーが発生しました。

サンプルコード:

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

delphi - Delphi TMonthCalendar - stop auto scrolling, and what month am I on?

Drop a TMonthCalendar control onto a form. Set it to show one month. Use US English locale (Sunday as first day of week). View January 2013. Your calendar actually is showing December 30th, 2012 to February 9th, 2013 because it shows 42 days total. Set your MaxSelCount to 42 and set MultiSelect to true so you can select and number of these days.

Issue 1 - Click on December 31st, and hold the mouse down. Drag to January 1st and let go. You have two days selected. Works as expected. Clear this selection by selecting another date in January. Now select the same two days again, but this time select January 1st FIRST, and drag left in order to get December 31st highlighted. Notice how the calendar scrolls left into December? How can I stop the calendar from scrolling???

Issue 2 - In both scenarios above you had the same two dates selected, but the displayed month of the calendar was completely different. How can I tell what month is actually being displayed by the calendar?

Issue 3 - Select from January 24th to February 1st. The calendar now scrolls to February, and then cuts off the 24th, 25th, and 26th from view. Seems completely broken.

I've also tried the Jedi controls which are wrappers.

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

c - comctl32 エディット コントロールの代わりに ANSI エディット コントロールを強制する

Windows の EDIT ウィンドウクラスからエディット ボックス付きのウィンドウを作成するモジュールを作成しました。ANSI 文字セットでのみ動作し、Unicode を使用しないように設計されています。

EM_GETHANDLEを使用して、エディット コントロールへのバッファーを受け取ります。

ここに私の問題があります:(上記のリンクから引用)

Note For Comctl32.dll version 6, the buffer always contains an array of WCHARs, regardless of whether an ANSI or Unicode function created the edit control. For more information on DLL versions, see Common Control Versions.

そのため、comctl32 が初期化されたアプリケーションによってモジュールが読み込まれると、コード全体が壊れます。

私の質問: CreateWindowA が comclt32 を使用するのを防ぐ方法はありますか、またはこの問題を解決するアイデアはありますか?

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

c# - チェックボックス コントロールの Visible が true になったときの comctl32.dll による過剰なメモリ使用

C# .NET アプリケーションの実行時に Windows フォームにコントロールを追加しています。これらの各コントロールは特定の信号と相互作用し、その信号からのデータ (信号名、説明、ソース、単位、値など) を使用します。

これらのコントロールには、チェック ボックスがあります。これらのシグナルの 1 つだけのチェックボックスの Visible プロパティが true になると、アプリケーションのコミット済みメモリが 800MB を超えます。他の何百もの信号には問題はありません。

DebugDiag ツールを使用して、comctl32.dll が 805.45 MB を割り当てていることを確認しました。特に:

  • 関数 comctl32_72380000!CCHeapAllocArraySize+3a
  • 割り当てタイプ ヒープ割り当て
  • ヒープ ハンドル 0xf37893cd
  • 割り当て回数 1 個の割り当て
  • 割り当てサイズ 803.20 MB
  • リーク確率 16%

次のトラブルシューティング手順は何ですか? どのようなツールが役立ちますか?

更新: 親コントロールの System.Windows.Forms.TrackBar に問題を追跡しました。トラック バーの最大値は 200,000,000 を超えていました。最大値を 100,000,000 に減らすと、約半分のメモリが使用されました。最大値を約 1,000,000 に設定すると、より妥当な量のメモリが使用されました。

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

c#-4.0 - CallingConvention.Cdecl を使用して comctl32 を呼び出す PinvokeStackImbalance

プロジェクトを .NET 3.5SP1 から .NET 4.5 にアップグレードしたところ、comctl32 から DllGetVersion への呼び出しで PInvokeStackImbalance MDA を取得しています。フレームワークがデフォルトで誤った呼び出し規則に対して回復力がなくなっていることを読み、理解しました。奇妙なのは、私が正しいと信じている CallingConvention.Cdecl を既に指定していることです。CallingConvention 属性を完全に削除してデフォルト (CallingConvention.WinAPI) にすると、PInvokeStackImbalance が取得されません。誰でもこれに光を当てることができますか?OSはWin 7 64ビットで、違いがあれば32ビットアプリです。DllGetVersion 関数のヘッダー ファイルを調べてみましたが、呼び出し規約がどうあるべきかわかりません。