如何获得对话框所在屏幕的坐标。实现的效果:关闭对话框时记录对话框所在屏幕坐标,下次打开时就记录的坐标显示。

解决方案 »

  1.   


    CDialog::GetWindowRect(rt); 
      

  2.   


    CRect rc;
    AfxGetMainWnd()->GetWindowRect(&rc);行不???
      

  3.   

    RECT rectdlg;
    HWND hwnd;
    hwnd=::FindWindow(NULL,"SNSearch.exe")->GetSafeHwnd();
    hwnd->GetWindowRect(&rectdlg);获得了hwnd,怎么用这个句柄获得位置,直接这样用出错
      

  4.   

    RECT rectdlg;
    HWND hwnd;
    hwnd=::FindWindow(NULL,"SNSearch.exe");
    ::GetWindowRect(hwnd,&rectdlg);这样代码通过,但结果错误,怎么回事??
      

  5.   

    这样用肯定错,hwnd是句柄,又不是CWnd指针。你自己处理自己的程序不用FindWindow吧,在对话框类中调用GetWindowRect就行了。
      

  6.   

    这个代码应该没错,不过,你确定FindWindow(NULL,"SNSearch.exe")成功了吗?
      

  7.   

    直接调用GetWindowRect即可
    然后rect信息写注册表或存盘
      

  8.   

    我也向直接GetWindowRect(),就是不知道怎么用,要获取对话框的句柄,获取对话框句柄有上面方法.
      

  9.   

    我也向直接GetWindowRect(),就是不知道怎么用,要获取对话框的句柄,获取对话框句柄有上面方法.
    ==========
    我想问一下,你要获取的对话框是你自己写的程序里的还是你想控制另一个程序啊?
      

  10.   

    是自己的程序,程序在点击关闭的时候记录所在屏幕的坐标,下次打开用这个坐标
    ==========
    既然是自己的程序就不用FindWindow之类的了。直接在对话框的关闭部分调用GetWindowRect就行了。
      

  11.   

     - -!!!!傻了,m_hWnd就是对话框的句柄嘛.........谢谢!!
      

  12.   

    我觉得不用m_hWnd也行的,比如你可以这样写:
    void CMy55Dlg::OnClose()
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
        CRect rect;
    GetWindowRect(rect);

        //可以将rect中的数值存到注册表中,启动使用。
    CDialog::OnClose();
    }
      

  13.   

    已经完成了,我是读到当前对话框坐标,转成CTRING,存到INI文件里,下次打开的时候读这个文件。