读书人

MFC无标题栏窗口移动有关问题

发布时间: 2013-08-06 16:47:25 作者: rapoo

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;
  }

[解决办法]

引用:
Quote: 引用:

WM_NCHITTEST消息判断拖曳的位置


哥能说具体点吗!我为主框架添加了这个消息。然后呢。
这个要具体百度一下有很多啊
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));

读书人网 >VC/MFC

热点推荐