none
求助:SetWindowPos函数在多显示器扩展桌面下无法移动窗口到指定坐标的问题 RRS feed

  • 问题

  • 各位达人:

    我最近被一个问题弄得非常头疼,SetWindowPos函数可以设置窗口位置和窗口大小,在单显示器下,可以可以任意移动窗口到想要的坐标上

    但是现在有几台电脑,上面带有双显示器,桌面设置为扩展显示模式,1号器左上角坐标为(0,0),2号显示器左上角坐标为(1440,0)

    我想移动对话框至2号显示器的左上角,使用类似如下的语句

    ::SetWindowPos(this->m_hWnd,HWND_BOTTOM,this->scTopX,this->scTopY,this->scWidth,70,SWP_NOZORDER);

    调用SetWindowPos函数后窗口并不会移动至2号显示器左上角,而是出现在1号显示器的中间部分

    而且无论怎么修改SetWindowPos的位置坐标,出现的位置依然还是在1号显示器的中间部分,请问这个问题应该如何解决?

    谢谢。

    我的开发环境是WINDOWS 7 旗舰版+ VS 2008 SP1

    2012年5月2日 9:40

答案

  • 被风吹跑的翔,你好!

    你有没有尝试把SetWindowPos 的第三和第四个参数设置为1440、0?

    另外请你在调用完SetWindowPos以后,请检测它的返回值、用GetLastError的得到错误代码。

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Helen Zhao 2012年5月10日 2:18
    2012年5月3日 6:47
  • 检查程序其它地方不会有居中的设置吧,我这里貌似一切正常

    0xBAADF00D

    • 已标记为答案 Helen Zhao 2012年5月10日 2:18
    2012年5月9日 8:58
    版主

全部回复

  • 被风吹跑的翔,你好!

    你有没有尝试把SetWindowPos 的第三和第四个参数设置为1440、0?

    另外请你在调用完SetWindowPos以后,请检测它的返回值、用GetLastError的得到错误代码。

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Helen Zhao 2012年5月10日 2:18
    2012年5月3日 6:47
  • 检查程序其它地方不会有居中的设置吧,我这里貌似一切正常

    0xBAADF00D

    • 已标记为答案 Helen Zhao 2012年5月10日 2:18
    2012年5月9日 8:58
    版主