MFC自定義搜索編輯框CEdit,得到焦點提示文本消失,失去焦點,提示文本顯示

#pragma once


// CSearchEdit

class CSearchEdit : public CEdit
{
	DECLARE_DYNAMIC(CSearchEdit)

public:
	CSearchEdit();
	virtual ~CSearchEdit();

public:
    void ShowTip();
    const CString GetTip()const { return m_strTip; }

private:
    const CString m_strTip = _T("搜索圖片");

protected:
	DECLARE_MESSAGE_MAP()
    afx_msg void OnEnKillfocus();
    afx_msg void OnEnSetfocus();
    afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
};


// SearchEdit.cpp : 實現文件
//

#include "stdafx.h"
#include "TestDlg.h"
#include "SearchEdit.h"


// CSearchEdit

IMPLEMENT_DYNAMIC(CSearchEdit, CEdit)

CSearchEdit::CSearchEdit()
{

}

CSearchEdit::~CSearchEdit()
{
}

void CSearchEdit::ShowTip()
{
    SetWindowText(m_strTip);
}


BEGIN_MESSAGE_MAP(CSearchEdit, CEdit)
    ON_CONTROL_REFLECT(EN_KILLFOCUS, &CSearchEdit::OnEnKillfocus)
    ON_CONTROL_REFLECT(EN_SETFOCUS, &CSearchEdit::OnEnSetfocus)
    ON_WM_CTLCOLOR_REFLECT()
END_MESSAGE_MAP()



// CSearchEdit 消息處理程序


void CSearchEdit::OnEnKillfocus()
{
    CString str;
    GetWindowText(str);
    if (str == _T(""))
    {
        SetWindowText(m_strTip);
    }
}


void CSearchEdit::OnEnSetfocus()
{
    CString str;
    GetWindowText(str);
    if (str == m_strTip)
    {
        SetWindowText(_T(""));
    }
}

HBRUSH CSearchEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
    // TODO:  在此更改 DC 的任何特性

    CString str;
    GetWindowText(str);
    if (str == m_strTip)
    {
        pDC->SetTextColor(RGB(192, 192, 192));
        return (HBRUSH)GetStockObject(WHITE_BRUSH);
    }


    // TODO:  如果不應調用父級的處理程序,則返回非 null 畫筆
    return NULL;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章