2010-01-22 69 views
0

我想在我的編輯框中設置一些文字,但它應該是灰色的。如何在編輯框中編寫灰色文本?

有沒有辦法做到這一點?

我無法爲此找到適當的API。

有什麼建議嗎?

+0

你的意思是,文本與灰色陰影或只是文本顏色灰色? – YOU 2010-01-22 05:42:23

+0

帶灰色的文字。 – anand 2010-01-22 05:44:19

回答

0

正常SetTextColor怎麼樣?

例如,

SetTextColor(hdc, RGB(0xc0, 0xc0, 0xc0)); 
0

這是從MFC應用程序(因此PWND),但它是相對容易改變純SDK代碼:

HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{ 
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 

    switch (nCtlColor) 
    { 
     case CTLCOLOR_EDIT: 

     if (pWnd->GetDlgCtrlID() == IDC_MY_EDIT) 
     { 
      pDC->SetTextColor (COLOR_GRAYTEXT); 
     } 
     break; 

     default: 
     break; 
    } 
    return hbr; 
} 
0

剛纔我假設你指的是Win32 API的。如果沒有,請忽略我的答案。

如果要編輯/輸入灰色或不同顏色的編輯框中的文本,可以參考上面的回覆,告訴您如何重載OnCtlColor()。

但是,如果您只是在禁用的編輯框中顯示文本,則默認情況下將顯示灰色文本(確保編輯框不是隻讀的,以便您可以寫入編輯框控件)。例如,如果您在對話框類的你的OnInit()方法,下面的線,它會禁用編輯框,並顯示在灰色的文本:

virtual void OnInit() 
    { 
    // Assuming IDC_MY_DISABLED_EDIT is the ID you entered for the editbox 
    // in the dialog designer. 
    // the above state will disable the edit box and display text in grey. 
    GetDlgCtrl(IDC_MY_DISABLED_EDIT)->EnabledWindow(FALSE); 

    // Hello World! will be displayed in grey. 
    GetDlgCtrl(IDC_MY_DISABLED_EDIT)->SetWindowText(_T("Hello World!")); 
    }