为什么小弟我自绘的edit控件 鼠标无法选择文本
为什么我自绘的edit控件 鼠标无法选择文本
先上个版主 CometNet大人的正确截图
下面这个是我的截图
我的鼠标在edit框内就是无法选择文本,不知道为何???
代码如下:
MyEdit.h
MyEdit.cpp
------解决方案--------------------
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
这个函数的最后调用一下基类的函数
CEdit::OnMouseMove(nFlags, point);
先上个版主 CometNet大人的正确截图
下面这个是我的截图
我的鼠标在edit框内就是无法选择文本,不知道为何???
代码如下:
MyEdit.h
#pragma once
#ifndef _H_MYEDIT_H
#define _H_MYEDIT_H
class CMyEdit :public CEdit
{
DECLARE_DYNAMIC(CMyEdit)
public:
CMyEdit(void);
~CMyEdit(void);
void DrawFrame();
protected:
afx_msg void OnMouseLeave();
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnNcPaint();
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
public:
bool m_isinedit;
CBrush m_normalbrush1;
CBrush m_normalbrush2;
CBrush m_hoverbrush1;
CBrush m_hoverbrush2;
};
#endif
MyEdit.cpp
#include "StdAfx.h"
#include "MyEdit.h"
IMPLEMENT_DYNAMIC(CMyEdit, CEdit)
CMyEdit::CMyEdit(void)
{
m_isinedit=false;
m_hoverbrush1.CreateSolidBrush(0xFDC860);
m_hoverbrush2.CreateSolidBrush(0xE7AC49);
m_normalbrush1.CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
m_normalbrush2.CreateSolidBrush(GetSysColor(COLOR_WINDOWFRAME));
}
CMyEdit::~CMyEdit(void)
{
}
BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
ON_WM_MOUSEMOVE()
ON_WM_MOUSELEAVE()
ON_WM_NCPAINT()
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
{
if (!m_isinedit)
{
TRACKMOUSEEVENT mouseevent;
mouseevent.cbSize=sizeof(mouseevent);
mouseevent.dwFlags=TME_LEAVE;
mouseevent.dwHoverTime=10;
mouseevent.hwndTrack=m_hWnd;
_TrackMouseEvent(&mouseevent);
m_isinedit=true;
DrawFrame();
}
}
void CMyEdit::OnMouseLeave()
{
m_isinedit=false;
DrawFrame();
}
void CMyEdit::OnNcPaint()
{
CEdit::OnNcPaint();//先调用基类的OnNcPaint()让系统画图,系统画完后再我们画
DrawFrame();
}
void CMyEdit::OnPaint()
{
CEdit::OnPaint();
}
void CMyEdit::DrawFrame()
{
CDC* pDC = GetWindowDC( );
CRect rect;
GetWindowRect( &rect);
rect.OffsetRect( -rect.left, -rect.top);
if (m_isinedit)
{
pDC->FrameRect( &rect, &m_hoverbrush1);
rect.InflateRect(-1,-1);
pDC->FrameRect( &rect, &m_hoverbrush2);
}
else
{
pDC->FrameRect( &rect, &m_normalbrush1);
rect.InflateRect(-1,-1);
pDC->FrameRect( &rect, &m_normalbrush2);
}
ReleaseDC( pDC);
}
------解决方案--------------------
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
这个函数的最后调用一下基类的函数
CEdit::OnMouseMove(nFlags, point);