我现在是做个这样的功能,当鼠标移动到对话框的时候,会有一个半透明的显示信息的子对话框显示出来。
这个对话框的高宽为200,假设屏幕分辨率为1440*900的,我的鼠标放在X点大于1240,我就想把对话框移动到上边的位置,当鼠标移动到Y点大于700以上,我就想把对话框移动到左边来。代码如下。可是老是出不来。也不知道问题出哪,如果我按照鼠标当前的位置显示对话框还是没问题的。      int cx = LOWORD(lParam); //鼠标在窗口中的X坐标
      int cy = HIWORD(lParam);//鼠标在窗口中的Y坐标      CPoint point(cx, cy);
//    int iScreenWidth = GetSystemMetrics(SM_CXSCREEN);
//    int iScreenHeigh = GetSystemMetrics(SM_CYSCREEN);
      ClientToScreen(&point); //获得鼠标在屏幕中的坐标
      if (point.x >1240)
      {
            point.x -= 200;
      }      msgDLg = new CMyMsgDlg;
      msgDLg->m_point = point;
      msgDLg->Create(IDD_MESSAGEDLG);
      msgDLg->ShowWindow(SW_SHOW);
      return 0;求高手指点。谢谢

解决方案 »

  1.   

    以前做的一个小程序,随着鼠标的移动透明对话框跟着移动时:
    把窗口显示出来了后,设置一个定时器,然后用MoveWindow()移动窗体
    我有事,只能把以前的代码贴出来看看 CPoint point;
    ::GetCursorPos(&point);
    int xPos,yPos;
    if(point.x>(mX-163)&&point.y>(mY-158))
    {
    xPos=point.x-163;
    yPos=point.y-158;
    }
    else if(point.x>(mX-163))
    {
    xPos=point.x-163-10;
    yPos=point.y+5;
    }
    else if(point.y>(mY-158-25))
    {
    xPos=point.x-5;
    yPos=point.y-158-10;
    }
    else
    {
    xPos=point.x+5;
    yPos=point.y+30;
    }
    pTransDlg->MoveWindow(xPos,yPos,163,158,TRUE);
      

  2.   

    我没有MoveWindow.因为我在对话框初始化的时候已经setwindowpos了,
    msgDLg->m_point = point; 这就是传的坐标给对话框。
      

  3.   

    对话框初始化的时候setwindowpos是否有问题,在msgDLg->Create(IDD_MESSAGEDLG);之后
    msgDLg->setwindowpos(。。);试试