高手帮忙!!!!!!!!!!!!1

fx_guo 2006-04-21 08:23:26
怎样制作类似QQ自动隐藏的窗口。提供一些提示也行。
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiaosan 2006-04-21
  • 打赏
  • 举报
回复
转载的

1.首先处理自动停靠.
1).建立一个对话框类CDlg.
2).
///dlg.h
class CDlg
{
private:
bool m_isAutoHide; //窗口是否可以自动隐藏
bool m_isWinHide; // 窗口是否隐藏
...........
}

///dlg.cpp
.....
void CDlg::OnMove(int x, int y)
{
CDialog::OnMove(x, y);

///窗口从显示到隐藏时,不做其它操作
if(m_isWinHide)
{
return;
}

CRect tRect;
GetWindowRect(tRect);
if(tRect.top<10)
{///如果窗口移动后的位置和到屏幕上方的距离小于10
///就使窗口停靠到屏幕上方.

tRect.bottom-= tRect.top;
tRect.top= 0;
MoveWindow(tRect);
///窗口停靠后就可以自动隐藏
m_isAutoHide= true;
}
else
{
///如窗口没有停靠就不可以自动隐藏
m_isAutoHide= false;
}

}

void CDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
if((pRect->top < 10)
&& (!m_isAutoHide) )
{///如果窗口移动到的位置和到屏幕上方的距离小于10
///就使窗口停靠到屏幕上方.

pRect->bottom-= pRect->top;
pRect->top= 0;
m_isAutoHide= true;
}

CDialog::OnMoving(fwSide, pRect);
}
2.处理自动收缩
//dlg.h
class CDlg
{
.....
LRESULT OnMouseLeave( HWND hwnd, UINT msg,
WPARAM wParam,LPARAM lParam );
}

//dlg.cpp
BEGIN_MESSAGE_MAP(CDlg, CDialog)
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;
}

TRACKMOUSEEVENT EventTrack;
EventTrack.cbSize= sizeof(TRACKMOUSEEVENT);
EventTrack.dwFlags= TME_LEAVE;
EventTrack.hwndTrack= this->m_hWnd;
_TrackMouseEvent(&EventTrack);

CDialog::OnMouseMove(nFlags, point);

}

Kudeet 2006-04-21
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20050409/17/3922759.html
Kudeet 2006-04-21
  • 打赏
  • 举报
回复
看看TrackMouseEvent相关
zblaoshu1979 2006-04-21
  • 打赏
  • 举报
回复
怎么个自动隐藏,说详细点
xuzheng318 2006-04-21
  • 打赏
  • 举报
回复
http://www.vckbase.com/english/code/misc/TrackMouseEvent.shtml.htm
laogong165 2006-04-21
  • 打赏
  • 举报
回复

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧