2016-09-18 31 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

如果它最初是由我創建的,我會擁有它。在這裏,我必須調整一個現有的控件,有很多邏輯已經依賴於它的編輯。 – feos

+0

相關:http://stackoverflow.com/q/8024157/694576 – alk

回答

1

如果您絕對必須擁有編輯控件,那麼我看不到解決方案。但是,通過一些調整,您可以使用豐富的編輯控件。它接受大部分與編輯控件相同的消息。技巧就是使用SetCharFormat來設置想要更改的行的格式。

+0

我已經嘗試切換到它,並沒有通常的上下文菜單編輯控件有:複製,粘貼,全選等。我目前正試圖爲它生成我自己的菜單。有沒有簡單的方法來顯示標準的編輯文本菜單,或者我必須手動創建它? – feos

+0

我認爲你必須推出你自己的處理程序和菜單。 –

+0

完全轉向RichEdit後,我發現它**不能**將特定顏色設置爲任意行的BG,而沒有使用編輯控件所具有的完全相同的hackery。您必須選擇它,或者選擇它,或者在自己的頂部繪製文本。 http://win32assembly.programminghorizo​​n.com/tut35.html – feos