問題タブ [ownerdrawn]

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

.net - リストボックスの所有者描画アイテム vb2008

追加しようとしているアイテムのテキストまたはそれに含まれるテキストに基づいて、リストボックスに各アイテムを描画する必要があります。次に、リストボックスの先頭にアイコンを配置する必要があります。指定した単語に応じて、他の 2 つの色とアイコンを配置します。

  • 項目にエラー テキストが含まれている場合は、エラー (16x16 ピクセル) アイコンを先頭に配置し、背景を薄い赤で、テキストを太い濃い赤で描画します。

  • 準備完了または開始テキストが含まれている場合は、明るいオレンジ色の背景と濃い太字の青色のテキストを使用します。

  • OK または成功のテキストが含まれている場合は、明るい緑色の背景と濃い太字の緑色のフォント テキストを使用します。

これどうやってするの?

編集

これは私がすでに持っているものですが、このコードは無限に更新されるようです。色を選択する必要があるのは、e.index の値です。e.index を e.stringvalue のような somthinf に変更できますか?

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

c++ - オーナー描画リストボックスから境界線を削除する

CListBox を派生させてオーナー描画リストボックスを作成しましたが、ボーダーを持たせたくありません。代わりに、境界線は親ダイアログの背景に描画されるため、リストボックスはカスタム境界線を持っているように見えます。境界線を削除するにはどうすればよいですか? 派生クラスでオーバーライドするフラグまたは関数はありますか?

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

delphi - TToolButtonのMenuItemがドロップダウンされているかどうかを知る方法は?

メニューエントリ(MenuItemおよびGroupedプロパティが設定されたTToolButtons)をホストするために使用される所有者描画ツールバーのコンテキストで、対応するmenuitemがドロップされるかどうかを知りたいです。問題は、OnAdvancedCustomDrawButtonのStateプロパティがその情報を反映していないことです。

ツールボタンがクリックされると、そのDownプロパティはtrueになりますが、上記の特定のケース(MenuItemsetおよびGrouped= True)では、メニューがドロップされた直後に、別のOnAdvancedCustomDrawButtonが起動されますが、今回はDownがfalseに設定されます。

これは、ボタンを下にしない状態で描画することになることを意味します。

VCLのソースを見ると、どのツールボタンがドロップされたかに関する情報がTToolBarのFMenuButtonプライベートフィールドに格納されているようで、WindowsはPerform(TB_SETHOTITEM)によってホット状態を通知されますが、どちらも読み取りアクセスを提供しません。 ..

また、VCLはプライベートFTempMenuを介してドロップダウンを実行するため、そのハンドルにはアクセスできません。

PS: FWIWハッキーソリューションを使用している場合、使用可能な唯一のプライベートフィールドはFButtonMenuであるようです。これは、CustomDrawのButton.MenuItemと比較する必要があります。他のプライベートフィールドは、十分に早く設定されていないか(FMenuButtonなど)、プライベートです。変数の場所を持つ変数(MenuButtonIndexなど)。それでも満足のいくものではありません。

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

delphi - Owner Drawn TListBox のキャンバスを選択的に無効にする方法は?

TListBox (lbVirtualOwnerDraw) を描画した所有者がいます。そのコンテンツは動的に更新されます (1 秒間に 10 回もの更新が行われる可能性があります)。リスト ボックスには、一度に最大 300 個のアイテムを含めることができます。各項目には、約 5 行のテキストとそれに関連付けられた画像が含まれる場合があります。項目が更新されるたびに、VCL フレームワークによって ListBoxDrawItem が呼び出されるように、TListBox を更新 (または無効化) する必要があります。ただし、これは冗長な再描画がすべて行われるため、全体的なパフォーマンスに悪影響を及ぼします。だから私の質問は:

  1. 1 つの項目またはその一部の描画を含むキャンバスのごく一部のみを無効にする方法はありますか? (たとえば、1 行のテキストまたはビットマップを含む四角形)。

  2. Draw Item でこのような選択的な無効化長方形をどのように処理できますか? Refresh または invalidate の一部として整数を渡すことができれば、DrawItem でそれを使用して何を更新するかを決定できます。

  3. 項目が TListBox で (インデックスによって) まったく表示されているかどうかを確認する方法はありますか?

前もって感謝します!

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

c# - OwnerDraw DateTime Picker

DateTimePickerの代わりにMonthPickerを使用したいのですが、(日、月、年ではなく)月と年の選択のみを表示するドロップダウンパネルを除いて、DateTimePickerとまったく同じ実装になります-投稿できませんここでニュービーとしての画像を作成しましたが:(

DateTimePickerレンダリング(ownerdrawのようなもの)をオーバーライドする方法はありますか、またはこれが不可能な場合にDateTimePickerの動作を再現するための最良の方法は何でしょうか?

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

c - How to draw a button using winAPI

I have successfully created an owner drawn button.

But how do I now draw/color the darn thing, to make it look like a Button using the Windows API? Currently, it just looks like a colored label?

Any C examples?

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

c# - 位置記号の描き方

Winforms 用の C# で独自のテキスト ボックス コントロールを作成しています。

私が理解できないことの1つは、テキスト位置記号をさまざまなサイズで描画する方法ですか?

テキスト位置記号

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

c# - フォーカスを失ったときに OwnerDrawn ListBox が空白になる

イベントにサブスクライブすると、ListBox.DrawItemフォーカスがあるときはうまく描画されますが、移動すると何も描画されません。

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

c++ - WIN32: 所有者が描画した静的コントロールにそれ自体を更新するように指示するにはどうすればよいですか?

2 つのソース イメージ (塗りつぶしと塗りつぶしなし) を使用してプログレス バーを描画する WIN32 所有者描画の静的コントロールがあります。最初のドローでうまく機能します:

しかし、うまく消したり塗り直したりすることができないようです。SendMessage を WM_PAINT と RedrawWindow で試しましたが、どちらもうまくいきませんでした:

新しい値でウィンドウを再描画する代わりに、最初に描画された画像をそこに置き、それ以降の描画コマンドを無視します。0%、50% などの初期値の進行状況を正しく描画し、WM_DRAWITEM メッセージ ハンドラー コードが呼び出されていることを確認できます。

では、WIN32 でこのコントロールに消去と再描画を指示する正しい方法は何ですか?

BeginPaint/EndPaint のようなことをしたり、渡された DRAWITEMSTRUCT の hDC を削除したりする必要がある可能性はありますか?

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

c++ - MFCVC++カスタムチェックボックスイメージ

不確定状態に別のビットマップを使用するための3状態チェックボックスを取得するにはどうすればよいですか?

スリーステートチェックボックスで使用されている画像を別の画像に変更したい。コントロールはWin98スタイルであり、そのようなチェックボックスの不確定な状態を無効なチェックボックスと区別するのは困難です(これが、WinXPスタイルのコントロールでこれを変更した理由と思われますが、プロジェクトの他の詳細のために使用できません) 。

Visual C ++ 2010を使用しており、VSのリソースエディターで8x8ビットマップを定義しました。ビットマップのIDはIDB_INDET_CHECKです。

このようなものの標準的な「技術」が何であるかは完全にはわかりません。私は本当にWindowsコントロールとMFCの操作を始めたばかりです。

私の最初の試みは、CTriButtonから派生したクラスを作成しCButton、関数をオーバーライドして、DrawItem自分で描画しようとすることでした。次にSubclassDlgItem、ウィンドウのチェックボックスの1つをこのクラスに変えていました(私は思いますか?)。これは…ある種の作品?チェックボックスが表示されなくなり、本来あるべき場所をクリックすると、空のチェックボックスフレームが表示されますが、それ以外は何も起こりません(コード内のデバッグメッセージが送信されません)。

これが関連するコードですが、これが正しいかどうはわかりません。まず、私のウィンドウのからのコードOnInitDialog

次に、カスタムボタンのコードDrawItem