固定分割窗口的分隔线

takpod 2014-07-01 08:37:45
我用CSplitterWnd分割出了两个类,CMyView (CView)和CCantrol(CFormView),它们响应了mousemove lbuttondown和消息,现在我想固定分割窗口的分隔线,写了一CSplitterWnd子类,重写OnMouseMove,OnLButtonDown,OnSetCursor
方法,现在是窗口一捕捉到鼠标就 死机了,请问如何解决?

void CFixSplitterWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
if(!m_block)
CSplitterWnd::OnLButtonDown(nFlags, point);
else
CWnd::OnLButtonDown(nFlags, point);
}

void CFixSplitterWnd::OnMouseMove(UINT nFlags, CPoint point)
{
if(!m_block)
CSplitterWnd::OnMouseMove(nFlags, point);
else
CWnd::OnMouseMove(nFlags, point);
}

BOOL CFixSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if(!m_block)
return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message);
else
return CWnd::OnSetCursor(pWnd, nHitTest, message);
}



...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2014-07-01
  • 打赏
  • 举报
回复
"CString strPos;" 改 全局的试试
schlafenhamster 2014-07-01
  • 打赏
  • 举报
回复
pS->SetPaneText(1,strPos); strPos.Empty(); 状态条 还在 用 ?
takpod 2014-07-01
  • 打赏
  • 举报
回复
事实上去掉这个就可以了,求原因 strPos.Empty();
takpod 2014-07-01
  • 打赏
  • 举报
回复
void CMyView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	/*
	CDC *pDC=GetDC();
	CRect rect;
	GetClientRect(rect);
	pDC->SetMapMode(MM_LOMETRIC);	//设置坐标系单位
	pDC->SetViewportOrg(50,rect.bottom-50);//原点
	pDC->DPtoLP(&point);
	point.x=point.x*MUL;
	point.y=point.y*MUL;
	CString strPos;
	strPos.Format("X:%d""Y:%d",point.x,point.y);
	CMainFrame *pMF=(CMainFrame *)AfxGetApp()->m_pMainWnd;
	CStatusBar *pS=&pMF->m_wndStatusBar;
	pS->SetPaneText(1,strPos);
	strPos.Empty();	
	*/
	CView::OnMouseMove(nFlags, point);
}
注掉这些就可以了
takpod 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
BOOL CFixSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { if(!m_block) return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message); // else return TRUE;// CWnd::OnSetCursor(pWnd, nHitTest, message); } 不要调 CWND
BOOL CFixSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message); } 就是这样也会出现错误,捕捉到鼠标就出现致命错误
schlafenhamster 2014-07-01
  • 打赏
  • 举报
回复
BOOL CFixSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { if(!m_block) return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message); // else return TRUE;// CWnd::OnSetCursor(pWnd, nHitTest, message); } 不要调 CWND

15,979

社区成员

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

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