MFC无标题栏窗口移动问题。
我在做一个小系统,为了美化界面,我把标题栏去掉了。
1.还剩下菜单栏和工具栏。我把菜单栏高度设置为70,请问能通过菜单栏和工具栏移动窗口吗?(客户区内移动我会),怎么做?
2.360安全管家那种软件C#做的吧,我想知道它那非客户区是怎样做的的(类似去放大版的工具栏,且能移动),MFC能做到相同的效果么?不懂的可不答,主要是解决第一问。
谢谢大家!
MFC 无标题栏 窗口移动 界面美化
[解决办法]
360安全管家是c++做的。
它没有非客户区。
一般拖动是在OnNcHitTest中处理,由于没有非客户区,所以可以根据鼠标点的位置来判断,如果拖动,返回HTCAPTION,如果不拖动,返回HTCLIENT
[解决办法]
WM_NCHITTEST消息判断拖曳的位置
[解决办法]
UINT CMainWindow::OnNcHitTest (CPoint point)
{
UINT nHitTest = CFrameWnd::OnNcHitTest (point);
if (nHitTest == HTCLIENT) //如果是客户区
{
nHitTest = HTCAPTION; //则把它当成标题栏
}
return nHitTest;
}
[解决办法]
http://baike.baidu.com/view/2095670.htm
[解决办法]
窗口映射WM_LBUTTONDOWN消息 然后在消息响应函数中 类似
void CUpdateDlg::OnLButtonDown( LPPOINT lpPoint )
{
if( lpPoint->y < 54 )
{
::PostMessage( m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, (WPARAM)lpPoint );
}
}
[解决办法]
void CDlgXXX::OnLButtonDown(UINT nFlags, CPoint point)
{
//处理移动
if (point.y < 26&&!IsZoomed())
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
}