問題タブ [common-controls]
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 - GWL_WNDPROC を使用してリッチエディットをサブクラス化する際の問題
edit と richedit の両方でこれとまったく同じことを行いますが、後者ではアクセス違反が発生します。なぜですか? tabctrl に対しても同じことが起こります。私は何を間違っていますか?どうすれば動作させることができますか?
私はvc++ 6を使用しています。
前もって感謝します。
c++ - コモン コントロール ダイアログ フックから Win7 ライブラリへの参照を取得するにはどうすればよいですか?
OFNHookProc
Windows 7 で共通コントロール ダイアログをインストルメント化するために実装してGetOpenFileName()
います。インストルメンテーションは C++ で記述されています。ユーザーがライブラリ (ドキュメントや画像など) を選択するまで、問題なく動作します。これが発生すると、CDN_FOLDERCHANGE
期待どおりに通知を受け取りCDM_GETFOLDERPATH
ますが、新しく選択したフォルダーを取得するメッセージをダイアログに送信すると、-1 のエラーが返され、CommDlgExtendedError
0 が返されます。ある意味では、これは理にかなっています。フォルダーではありませんが、他のメッセージはどれも機能していないようです (CDM_GETFOLDERIDLIST
または などCDM_GETFILEPATH
)。
OFNHookProc
では、現在選択されているアイテムまたはフォルダーがライブラリであることを からどのように判断しますか? それがライブラリであることがわかったら、どのファイル システム フォルダがライブラリを構成しているかを把握できるように、ライブラリへのインターフェイスをどのように取得しますIShellItem
か?IShellLibrary
(ダイアログを作成するコードはレガシ コードであるため、Windows 7 で推奨されているライブラリを適切な方法でサポートするインターフェイスにGetOpenFileName
置き換えることはできません)。IFileOpenDialog
windows - CHOOSECOLORダイアログでフォントを変更する
私はWindowsの共通コントロールのCHOOSECOLORダイアログを使用していますが、Win 7では、まだ「古い」Tahomaフォントを使用しているため、親指のように突き出ています。
Segoe UIまたは他のフォントを使用するためのかなり簡単な方法はありますか?
重要な場合は、Delphi / C++Builderを使用しています...
winapi - XP Common Controls マニフェスト: processorArchitecture='x86' vs. processorArchitecture='*'
と言うメリットは
それ以外の
マニフェストを指定するとき?
visual-studio - Common Controls 機能を保持しながら、マニフェストでビジュアル スタイルを無効にする
私は純粋な WINAPI を使用しており、TB_GETMETRICSメッセージを送信する必要があります。ただし、このメッセージは、Common Controls バージョン 6.0 への参照を含むマニフェスト ファイルをアプリケーションに追加した場合にのみ機能します。追加しました。メッセージは機能していますが、アプリケーションで Vista/Windows 7 のビジュアル スタイルが使用されていません。これは望ましくありません。
マニフェスト ファイルを変更するか、何らかの API 関数を呼び出して、Classic テーマを使用している間、Common Controls 6.0 参照を維持する方法はありますか?
注: SetWindowThemeを試しましたが、Classic と Aero が混在した結果になりました。
編集: SetWindowTheme 関数を正しく読んでいなかったので、親 hWnd に対して呼び出すと、そのすべての子に対して自動的に呼び出されると考えていました。Windows クラシックを使用するコントロールごとに呼び出す必要があることがわかりました。現在は正常に機能しています。
delphi - アルファブレンドアイコンのあるイメージリストは透明性を失います
これが(多かれ少なかれ)関連する質問です:Delphi-実行時にアイコンでイメージリストを作成します'破壊'透明度。
@TOndrejの回答をテストしました。しかし、これを機能させるには、ビジュアルスタイル(XPマニフェスト)を有効にする必要があるようです(Windowsの共通コントロールのバージョン6.0が使用されます-今は必要ありません)。実行時にとを介してアイコンを追加しExtractIconEx
ますImageList_AddIcon
。
どうやらImageList.Handle
システムイメージリストハンドルを使用するように設定すると、XPマニフェストは必要ありません。そのため、D3で書き戻した古いプログラムでも、システムイメージリストを使用してファイルリストを表示すると(を使用してTListView
)、アルファブレンドアイコンが正しく表示されます。
私はさまよっていました。システムイメージリストの何が特別で、どのように作成されるので、すべての場合にアルファブレンディングをサポートしますか?私はそれを理解することはできません。サンプルコードは次のとおりです。
無効なビジュアルスタイル:
有効なビジュアルスタイル:
回避策は、ここに示すようにインターポーザークラスまたはサブクラスを使用TImageList
してオーバーライドすることですが、私が本当に知りたいのは、システムイメージリストと同じイメージリストを作成する方法です。DoDraw
注:この場合、私はそれを知ってTPngImageList
いますが、使用したくありません。
編集: @Davidの答え(およびコメント)は正確でした:
ImageList_Create(v6)に明示的にリンクする必要があります。そうしないと、モジュールのロード時に暗黙的にリンクされ、v5.8にバインドされるためです。
サンプルコード(アクティベーションコンテキストAPIを使用しない):
Edi2: ActivationContextAPIを介して正しく実行される方法を示す@Davidによるサンプルコード。
c# - Could not find file 'Microsoft.Windows.Common-Controls, Version=6.0.0.0, Culture=*, PublicKeyToken=6595b64144ccf1df,
I'm trying to integrate this library into my application.
At first it crashed with
so I uncommented
as was recommended here.
Now the application won't compile with the following message:
Deleting app.manifest causes the app to crash, because I'm using Microsoft Ribbon.
How do I fix this error?
c++ - ComboBox サブクラス化リストボックス
いくつかのカスタマイズ上の理由から、リストボックスとコンボボックスの編集コントロールをサブクラス化しようとしています。以下はコード作業です。Edit Control のサブクラス化は完璧に機能していますが、Listbox は MouseDown のメッセージを受け取りません。
listview - 空のテキストを含む ListView の ListItems
しばらく変更されていない古い VB6 プログラムがありますが、現在は新しい動作をしています。共通コンポーネントがその下からアップグレードされたと思います。詳細はこちら。
SmallIcon モードの標準の ListView コントロールがあります。コードスニペット:
追加されるほとんどの ListItems には、SmallIcon と Caption (Text) の両方があります。TextBackground は Opaque として設定されます。つまり、テキストは色付きの四角形で囲まれてレンダリングされます。
ただし、キャプションが提供されていないアイテムや、キャプションがないようにユーザーが変更できるアイテムもあります。SmallIcon だけが表示されていれば、これは以前は問題ありませんでした。しかし、空の Text プロパティを持つ ListItem は、内部にテキストのないかなり幅の広い四角形をレンダリングします (ユーザーが一連のスペースをキー入力したかのように)。
ListItem を追加するコードは単純です。
ここでデバッガーを停止し、即時ウィンドウで次のことを実行しました。
ご覧のとおり、Text が空になるまで ListItem.Width が正しく再計算され、その後 96 ピクセルにジャンプします。
この動作を補う方法を知っている人はいますか? デフォルトの空の wdith を構成するために使用できる Windows メッセージがありますか? ListView の動作の変更に関する情報も役立つ場合があります。
c++ - ListView 内の項目の色を永続的に変更するにはどうすればよいですか?
リストビューを作成しました
そして、LPNMLVCUSTOMDRAW を使用してカラー アイテムを挿入します。
getcolor は関数応答 colorref です。各アイテムには独自のテキスト色があります。ただし、親ウィンドウを非表示にして再度表示すると、アイテムの色が変わります。変更しないようにする方法、またはテキストの色を設定する別の方法があります
もう1つ、この方法で新しいリストビューアイテムを作成します(誰かが必要な場合に備えて)