【问题标题】:How to write grey text on edit box?如何在编辑框上写灰色文本?
【发布时间】:2010-01-22 05:39:14
【问题描述】:

我想在我的编辑框上设置一些文本,但它应该是灰色的。

有什么办法吗?

我无法为此找到合适的 API。

有什么建议吗?

【问题讨论】:

  • 你的意思是,带有灰色阴影的文本还是只是文本颜色为灰色?

标签: user-interface text winapi fonts visual-c++


【解决方案1】:

您可能还对EM_SETCUEBANNER edit control message 感兴趣。它将导致编辑控件以灰色文本显示方向,而不会影响用户输入。

【讨论】:

    【解决方案2】:

    回复WM_CTLCOLOREDIT message,在传入的HDC上使用SetTextColor选择文字颜色。

    【讨论】:

      【解决方案3】:

      普通的SetTextColor怎么样?

      例如,

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

      【讨论】:

        【解决方案4】:

        这是来自 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;
        }
        

        【讨论】:

          【解决方案5】:

          我刚刚假设您指的是 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!"));
            }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-12-10
            • 2019-04-07
            • 2010-10-02
            • 2012-01-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多