如题

解决方案 »

  1.   

    dialog和window有区别嘛?
    POINT oldPoint;
    ......
    case WM_LBUTTONDOWN:
    {
    if(wParam == MK_LBUTTON)
    {
    oldPoint_Can.x = LOWORD(lParam);
    oldPoint_Can.y = HIWORD(lParam);
    }
    }
    break;
    case WM_LBUTTONUP:
    {
    if(wParam == MK_LBUTTON)
    {
    oldPoint_Can.x = 0;
    oldPoint_Can.y = 0;
    }
    }
    break;
    case WM_MOUSEMOVE:
    {
    if(wParam == MK_LBUTTON)
    {
    RECT rc;
    GetWindowRect(hWnd,&rc);
    SetWindowPos(hWnd,NULL,
    rc.left + LOWORD(lParam) - oldPoint_Can.x,
    rc.top + HIWORD(lParam) - oldPoint_Can.y,
    NULL,NULL,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);
    }
    }
    ......
      

  2.   

    获取鼠标移动的事件,得到一个x,y坐标,然后调用MoveWindow函数或者SetWindowPos函数来进行设置
    当然,你还要获取一下你本身的对话框的一个大小,免得大小发生改变
      

  3.   

    获取Dialog句柄hDlg;
    OnLButtonDown(...)
    {
     ...
     SendMessage(hDlg,WM_SYSTEMCOMMAND,61458,0);
     ...
    }
      

  4.   

    由于楼主题目有歧义,故写上两种:
    1,无标题对话框的拖动:OnLButtonDown中PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y));
    2,WM_DROPFILE消息:int nFileCount=DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);
    int nIndex=0;
    while(nFileCount--)
    {
    TCHAR szFilePath[MAX_PATH];
    memset(szFilePath,0,MAX_PATH*sizeof(TCHAR));
    DragQueryFile(hDropInfo,nIndex++,szFilePath,MAX_PATH);
                    ........
                    //处理szFilePath 

    }
      

  5.   

    WM_MOVING/WM_WINDOWPOSCHANGING ??