本帖最后由 Sandrer 于 2012-07-17 17:03:30 编辑

解决方案 »

  1.   

    WM_NCCALCSIZE 消息处理过程:
    void CToolWindow::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
    {
        DWORD dwStyle = GetStyle();
        if (bCalcValidRects && (dwStyle & STWS_HIDEBUTTON))
        {
            RECT *prc = &lpncsp->rgrc[0];
            int nAlign = ALIGN(dwStyle);
            if (nAlign == STWS_ALIGNLEFT || nAlign == STWS_ALIGNRIGHT)
                prc->top += HIDEBUTTON_HEIGHT;
            else
                prc->left += HIDEBUTTON_WIDTH;
        }    CWnd::OnNcCalcSize(bCalcValidRects, lpncsp);
    }
      

  2.   

    问题解决了,要先处理 WM_NCHITTEST 消息,然后再返回相应的位置才能有 WM_NCMOUSEMOVE 消息