問題タブ [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 に答える
8151 参照

c# - TreeView.DrawNodeの問題-OwnerDrawText

リモートサーバーに接続し、必要に応じてデータをポーリングするアプリがあります。これにはTreeViewがあり、ノードは使用可能なオブジェクトを表し、テキストの色はデータがロードされているかどうかを示します。灰色の斜体はロードされていないことを示し、黒の通常のテキストはロードされています。

現在、TreeViewをOwnderDrawTextに設定し、TreeView.DrawNode関数でテキストを次のように描画しています。

それで十分だと思いましたが、これがいくつかの問題を引き起こしています。

  1. フォーカスされているかどうかに関係なく、ノードが選択されている場合、のようにすべてのテキストが含まれているわけではありません(imgurが問題ないことを願っています)。
  2. ノードにフォーカスがある場合、点線の輪郭も表示されません。このと比較すると。テキストに「log」が含まれるノードは、e.DefaultDraw=trueを使用しています。

この質問の例に従ってみました。次のようになりました。

しかし、結果はこれでした。(色を区別するためにピンクを使用していることに注意してください)。ご覧のとおり、強調表示された背景は、フォーカスされた点線がある場所までは伸びていません。また、同様に描かれている別のボックスもあります。

私はこれを修正する方法に少し困惑しています。私が欲しいのは、何かがロードされたときに灰色のイタリック体のテキストを表示することです。最初の最も単純なアプローチは完全には機能せず、2番目の方法は私がやりすぎているように感じます。

結局のところ、もっと簡単な方法が必要なので、これを適切に行う方法について誰かが何か提案がありますか。

前もって感謝します。

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

listview - 詳細モードのWindowsフォームListView-所有者の描画で行の高さを変更するにはどうすればよいですか?

詳細モードのWindowsフォームListViewコントロールがあります。複数の列があります。オーナードローを使用して、特に幅の広い列を他の列の「下」に配置しようとしています。

したがって、これの代わりに:

私はこれをやろうとしています:

下の列を描くために部屋に収まるようにアイテムの境界を拡大する方法がわかりません。何か案は?

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

c# - C# ColumnHeader の空き領域の背景色

FastObjectListView コントロールでカスタム ColumnHeaders を描画しようとしています。

これまでのところコードは機能しますが、ColumnHeaders の空き領域 (つまり、列ヘッダー atm を含まない部分) はデフォルトで描画されます。

追加した:

それがないと、列ヘッダーのデフォルト スタイルがカスタム スタイルの上に描画されますが、列ヘッダーバーの空き領域には列ヘッダーが含まれていないため、デフォルト スタイルで描画されます。

列ヘッダーの空き領域の意味を明確にするための写真を次に示します: 画像リンク

前もって感謝します。

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

c++ - Windows Mobileで所有者が描いたリストボックスの高さを動的に変更する方法は?

Windows Mobile 6.1 でオーナー描画リストボックスを作成しようとしていますLBS_OWNERDRAWFIXEDリストボックス コントロールの作成中にスタイルを指定しました。と対応WM_MEASUREITEMしておりWM_DRAWITEMます。

フォントが変更されるたびにリストボックス項目の高さを変更したい(WM_SETFONTコントロールを作成した後に使用して変更する)。問題は、WM_MEASUREITEMメッセージが 1 回しか送信されないことです。WM_MEASUREITEMアイテムの高さをフォントの高さに設定できるように、メッセージを再度生成する方法が必要です。http://www.codeguru.com/Cpp/controls/listview/advanced/article.php/c1013/の記事を見たことがありますが、WINAPI を使用してこのコントロールを直接開発している間、MFC を使用しています。一部の記事では、コントロールのサイズを変更するとWM_MEASUREITEMメッセージが再び生成されると述べています。ただし、私の場合は生成されません。

Windows Mobile でこれを実現する方法があれば教えてください。

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

c# - 選択時の TreeView 所有者描画グリッチ

標準の System.Windows.Forms.TreeView コントロールの要素にさらにいくつかのアイコンを追加しようとしています。

ツリービュー コントロールのラベル領域のみを変更する予定でしたが、奇妙な動作を示します。ノードをクリックして選択すると、マウス ボタンが押されたときに背景がハイライト カラーで正しく描画されます。ただし、マウスボタンを離すまで、テキストは選択されていない間違った色になります。e.Stateマウスボタンが押されてから離されるまでの間に間違った状態が含まれているかのようです。

私がやっていることは次のとおりthis.DrawMode = TreeViewDrawMode.OwnerDrawTextですthis.DrawNode += LayoutTreeView_DrawNode。ハンドラーは次のとおりです。

ハンドラーをデフォルトのケースに設定すると...

...同じことが起こります。これは、ウィンドウが実際に描画しているため、奇妙です。この動作は、Windows XP with .Net 3.5 にあります。

この奇妙な動作を回避する方法はありますか?

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

windows - 所有者の描画メニューで自分のサブメニューの矢印を描画するにはどうすればよいですか(ウィンドウが自分の上に矢印を描画しないようにします)

WM_DRAWITEMでペイントを行った、Windowsがサブメニューの矢印を描画しているようですが、Windowsが矢印を描画しないようにするにはどうすればよいですか?

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

.net - カスタム描画のサイズ変更可能なコンテナーを作成するにはどうすればよいですか?

グラフィックをカスタム描画したい多くの領域を持つWinForms guiアプリケーションがあります。これらの領域にはコントロールが含まれ、サイズ変更可能です。現在、a から継承してTableLayoutPanelonpaint メッセージを処理することを考えています。

これは良い方法のように思えますか、それとも他の/より良いオプションはありますか?

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

winapi - 所有者の描画リストボックスのDrawItemメソッドを呼び出せないのはなぜですか

WTLを使用して所有者描画リストボックスを作成しようとしています。私のコードは次のようになります

また、親のメッセージループに追加REFLECT_NOTIFICATIONSし、プロパティシートで[所有者の描画]を[固定]に設定しました。しかし、それでもメッセージを受信できません。次に、spy ++を使用してリストボックスが受信するメッセージを調べたところ、非常に奇妙なメッセージが見つかりました(WM_USER+7211)。
私のOSはWinXpで、VS2008を使用しています。

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

delphi - TListBox の「範囲外のリスト インデックス」

フォームに TListBox があり、アイテムが追加されます

grpは整数です。リストボックスは に設定されていlbOwnerDrawFixedます。

マークされた行でonDrawItem例外が発生した場合:EStringListError

msgおよびgrpは、ローカル文字列および整数変数です。

プロジェクト ### で例外クラス EStringListError が発生し、「リスト インデックスが範囲外 (1)」というメッセージが表示されました

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

c# - WinFormフォームの所有者を描画可能にする

WndProcサブルーチンをオーバーライドしようとしているフォームがあります。GetDCExを使用して、フォームへのDCハンドルを取得しています。GetDCExの使用に関するMicrosoftのドキュメントによると、GetDCExを使用するには、フォームにCS_OWNDCまたはCS_PARENTDCフラグでウィンドウクラスを設定する必要があります。Spy ++によると、私のウィンドウにはこれらのクラス属性がありません。私の質問は、CS_OWNDCを割り当てるか、フォームを所有者が描画できるようにして、プログラムでGetDCExを使用できるようにする方法です。ちなみに、私はC#を使用しています。