加上SetCapture ,在MouseMove中调用PtInRect判断,离开窗口就ReleaseCapture
解决方案 »
- 如何在对话框显示一个网格的控件,而且如何把一个文件的一个一个字的在每个网格内填入和并能进行编辑。有这样的控件吗? 如何去完成?(V
- 如何做一个圆形的控件 并且可以改变颜色
- 请大家帮忙,谁有用RTC SDK1.2做的messenger
- 怎么根据ip地址确定用户地区?
- 怎么在vc6为已有的文件建立工程?3个.h,一个cpp
- 为什么我用下面的代码截取屏幕保存为BMP的颜色数值很怪,不是24K也不是256,居然是15??!!害得我后面的处理程序出错,不知道应该怎么
- 多行CEdit,保持总行数不变,不断增加新行,删除旧行,出现滑动条不停地在开始和结束之间闪烁。
- 请问哪里有WINDOWS MEIDA PLAYER 控件的使用说明
- ★决定改用BCB和Delphi,VC把我搞晕了什么MFC、STL去死!★
- APIENTRY的提问
- MFC:怎样使dialog上的控件对dialog透明
- Python兄,没关系,小弟就重新下载吧,就麻烦你再压缩一次吧,其他人的也得重新下载,一样的,多谢了!
1.
void CKeyButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
RECT Rect;
GetClientRect(&Rect);
if(PtInRect(&Rect,point))
{
SetCapture(); //捕获鼠标
if(m_nClick!=1)
{
m_nOldState=m_nState;
m_nState=1;
if(m_nOldState!=m_nState)
this->Invalidate(); //Button redraw
}
}
else
{
ReleaseCapture(); //释放鼠标 m_nClick=0;
m_nState=0;
this->Invalidate(); //Button redraw
//AfxMessageBox("bye");
}
CButton::OnMouseMove(nFlags, point);
}或者
2.
void CKeyButtonCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_nState==0)
{
// draw with button borders
m_nState = 1; //设置状态为moveon
Invalidate();
TRACKMOUSEEVENT TrackMouseEvent;
TrackMouseEvent.cbSize = sizeof(TrackMouseEvent);
TrackMouseEvent.dwFlags = TME_LEAVE;
TrackMouseEvent.hwndTrack = GetSafeHwnd();
TrackMouseEvent.dwHoverTime = HOVER_DEFAULT;
_TrackMouseEvent(&TrackMouseEvent); //捕获mouse leave
}
COleControl::OnMouseMove(nFlags, point);
}
LONG CKeyButtonCtrl::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
m_nState=0; //set normal
Invalidate(); return 0;
}