hur.cn - 华软网

 热门搜索

关于WM_NCHITTEST消息的问题

  作者:未知    来源:网络    更新时间:2011/8/20
基于对话框直接重载WM_NCHITTIEST就OK了,
UINT CTestDlg::OnNcHitTest(CPoint point)
{
UINT nHitTest = CDialog::OnNcHitTest(point);
Return (nHitTest==HTCLIENT)?HTCAPTION:nHitTest;
}
基于单文档,如果对View重载WM_NCHITTIEST,则客户区能动,但框架不能动,如果对CMainFrame重载WM_NCHITTIEST,则只是标题栏能动,客户区不能动。

问题:基于文档视图结构的程序, 我要鼠标点击客户区拖动,客户区和框架都能动,怎么处理。
单单对CView或CMainFrame重载WM_NCHITTEST我试过了,不行!或者是我还不理解,请指教!
---华软 网友回答---
C++">UINT CXXView::OnNcHitTest(CPoint point) 
{
// TODO: Add your message handler code here and/or call default
UINT nHitTest = CView::OnNcHitTest(point);
if(HTCLIENT == nHitTest)
{
nHitTest = AfxGetMainWnd()->SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(1, 1));
}
return nHitTest;
}

差不多就是这样,不过WM_NCLBUTTONDOWN里的坐标需要自己转换一下
---华软网友回复---
引用 1 楼 visualeleven 的回复:
C/C++ code
UINT CXXView::OnNcHitTest(CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    UINT nHitTest = CView::OnNcHitTest(point);
    if(HTCLIENT == nHitTest)
 ……
如你说写,对于SendMessage很难掌握,谁发送给谁,上述代码我还以为是CView发送给CMainFrame,差点走眼,不过这样我就更迷惑了,得查查资料了,尤其那两个参数,该填充些什么呢,不同的消息有不同的写法,呼呼      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。