请教大家一个问题,我现在MOUSEMOVE中实现,当鼠标移动动到某一点的时候,判断这个点在矩形内就显示矩形,不在就不显示,这个显示和不显示可以用什么函数实现,我的矩形是通过_dc.Rectangle(rect)来实现的.
比如这样的:
if (!m_rcLastCharacter.PtInRect(point))
{
不显示上次画的矩形;
}
else
{
显示上次矩形;
}
画矩形是用的下面的方法画的:
int _oldROP2 = _dc.SetROP2(R2_NOTXORPEN);
COLORREF _oldBkColor = _dc.SetBkColor(RGB(0, 0, 255));_rc.left = _ChangeCharacterType.x - 5;
_rc.top = _ChangeCharacterType.y - 5;
_rc.right = _ChangeCharacterType.x + 5;
_rc.bottom = _ChangeCharacterType.y + 5;SwitchToScreenSpace(&_dc);
_dc.Rectangle(_rc);
m_rcLastCharacter = _rc;_dc.SetROP2(_oldROP2);
_dc.SetBkColor(_oldBkColor);想问问这个显示和不显示部分,怎么实现?
比如这样的:
if (!m_rcLastCharacter.PtInRect(point))
{
不显示上次画的矩形;
}
else
{
显示上次矩形;
}
画矩形是用的下面的方法画的:
int _oldROP2 = _dc.SetROP2(R2_NOTXORPEN);
COLORREF _oldBkColor = _dc.SetBkColor(RGB(0, 0, 255));_rc.left = _ChangeCharacterType.x - 5;
_rc.top = _ChangeCharacterType.y - 5;
_rc.right = _ChangeCharacterType.x + 5;
_rc.bottom = _ChangeCharacterType.y + 5;SwitchToScreenSpace(&_dc);
_dc.Rectangle(_rc);
m_rcLastCharacter = _rc;_dc.SetROP2(_oldROP2);
_dc.SetBkColor(_oldBkColor);想问问这个显示和不显示部分,怎么实现?
把画矩形做成一个成员函数 如DrawRect(CDC* pDC, ...); // XOR显示if (!m_rcLastCharacter.PtInRect(point))
{
// 不显示
if(m_bDrawRect){
DrawRect(&_dc,...);
m_bDrawRect = FALSE;
}
}
else
{
// 显示
if(!m_bDrawRect){
DrawRect(&_dc,...);
m_bDrawRect = TRUE;
}
}
再在OnDraw中加
if(m_bDrawRect){
DrawRect(&pDC,...);
}
显示与不显示时都重绘一次,如果你只有一个矩形|