on_message(wm_mouseleave,onmouseleave)
end_message_map()
.......
lresult cdlg::onmouseleave(hwnd hwnd, uint msg, wparam wparam, lparam lparam )
{
if(m_isautohide)
{
cpoint tpoint;
getcursorpos(&tpoint);
crect trect;
getwindowrect(&trect);
if(!(trect.ptinrect(tpoint)))
{
m_iswinhide=true;
trect.top= trect.top - trect.bottom +5;
trect.bottom= 5;
movewindow(trect);
::setwindowpos(
::getdesktopwindow()
,hwnd_topmost,trect.left,trect.top
,trect.width(),trect.height ()
,swp_showwindow);
}
}
return true;
}
void cdlg::onmousemove(uint nflags, cpoint point)
{
if(m_iswinhide)
{
crect trect;
getwindowrect(&trect);
trect.bottom+= (trect.bottom-trect.top-5);
trect.top=0;
movewindow(trect);
m_iswinhide= false;
}