#if !defined(AFX_EDITEX_H__4B42F103_8BDD_4F39_ABE3_0D96741FAEB3__INCLUDED_)
#define AFX_EDITEX_H__4B42F103_8BDD_4F39_ABE3_0D96741FAEB3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// EditEx.h : header file
//
/
// CEditEx window
class CEditEx : public CEdit
{
// Construction
public:
CEditEx();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CEditEx)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CEditEx();
// Generated message map functions
protected:
//{{AFX_MSG(CEditEx)
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_EDITEX_H__4B42F103_8BDD_4F39_ABE3_0D96741FAEB3__INCLUDED_)
// EditEx.cpp : implementation file
//
#include "stdafx.h"
#include "EditEx.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CEditEx
CEditEx::CEditEx()
{
}
CEditEx::~CEditEx()
{
}
BEGIN_MESSAGE_MAP(CEditEx, CEdit)
//{{AFX_MSG_MAP(CEditEx)
ON_WM_CTLCOLOR()
ON_WM_ERASEBKGND()
ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/
// CEditEx message handlers
BOOL CEditEx::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_KEYDOWN)
{
if (ES_READONLY == (ES_READONLY & GetStyle()))
return TRUE;
}
return CEdit::PreTranslateMessage(pMsg);
}
void CEditEx::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (ES_READONLY == (ES_READONLY & GetStyle()))
return;
CEdit::OnRButtonDown(nFlags, point);
}
BOOL CEditEx::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CBrush brush;
brush.CreateSolidBrush(RGB(255, 255, 255));
CRect rc;
GetClientRect(&rc);
pDC->FillRect(rc, &brush);
brush.DeleteObject();
return TRUE;
//return CEdit::OnEraseBkgnd(pDC);
}
//--this is only a example.
HBRUSH CEditEx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CEdit::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
//--copy this code to parent::OnCtlColor(...)
/*
{
CWnd* pCtrl = this;//--this ctrl(not this)
if (pWnd->GetSafeHwnd() == pCtrl->GetSafeHwnd())
{
pDC->SetBkColor(RGB(255, 255, 255));
}
}
*/
// TODO: Return a different brush if the default is not desired
return hbr;
}
//--在父窗口上
//--1。为控件绑定一个变量
CEditEx m_ctEditEx;
//--2。还需要这样添加父窗口的OnCtlColor到WM_CTLCOLOR
HBRUSH parent::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (pWnd->GetSafeHwnd() == m_ctEditEx.GetSafeHwnd())
{
pDC->SetBkColor(RGB(255, 255, 255));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}