2016-09-18 7 views
-1

複数行の文字列を表示する読み取り専用の編集コントロールがあります。コントロールのサブクラス化されたダイアログのウィンドウプロシージャでWM_CTLCOLORSTATICを使用して背景色を設定しました。ウィンドウが縮小されている場合は、編集コントロールのスクロールバーが表示されます。それはすべて正常に動作し、あなたは選択し、コピーし、左右にテキストをスクロールすることができます。WinAPI:編集コントロールテキストの後ろに矩形を描きます。

case WM_CTLCOLORSTATIC: 
     if ((HWND)lParam == GetDlgItem(hwndDlg, IDC_DEBUGGER_DISASSEMBLY)) 
     { 
      SetBkColor((HDC)wParam, RGB(255, 255, 255)); 
      return (LRESULT) GetStockObject(DC_BRUSH); 
     } 
     break; 

特定の行の背景にカスタム背景色を付けることができます。私の普通のBGはそこに白くあり、そのラインのために、私は、例えば、青色をしたい。

編集コントロールにWM_PAINTを使用しようとしましたが、もう一度テキストを描画する必要があるようです。または、コントロールの元のテキストが選択されるまで表示されません。私は手動でテキストを描画しても、元のテキストと同じようにスクロールしません。

+0

これはライン指向のように見えるので、代わりにリストコントロールを使用しますか? – alk

+0

私が元々私によって作成されていれば私は持っていました。ここでは既存のコントロールを調整しなければなりません。すでに多くのロジックがEditに依存しています。 – feos

+0

関連:http://stackoverflow.com/q/8024157/694576 – alk

答えて

1

編集コントロールが必要な場合は、解決策が表示されません。しかし、いくつかの微調整では、豊富な編集コントロールを使用することができます。エディットコントロールと同じメッセージのほとんどを受け取ります。そのトリックは、SetCharFormatを使用して、変更したい行の書式を設定します。

+0

私はすでにそれに切り替えようとしていますが、通常のコンテキストメニューは編集コントロールにはありません:コピー、貼り付け、すべて選択など私は現在、自分のメニューを生成しようとしています。標準の編集テキストメニューを表示させる簡単な方法はありますか、それとも手動で作成する必要がありますか? – feos

+0

あなた自身のハンドラとメニューをロールしなければならないと思います。 –

+0

RichEditに完全に移動した後、私は**編集コントロールで行っているのとまったく同じハッカーを使わずに**任意のラインのBGに特定の色を設定できないことを知りました。それを選択するか、またはキャレットを置くか、テキストを独自のものの上に描画する必要があります。 http://win32assembly.programminghorizo​​n.com/tut35.html – feos