用vb写了一个小程序,全屏显示的,但当接两个显示器的时候,在第二个屏幕上执行全屏操作时,全屏显示在第一个屏幕上,有没有可以强制显示在第二个屏幕上的办法。全屏转换代码如下If Not fullscreen Then
        SetWindowPos lngHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
        Call SetWindowLong(lngHwnd, GWL_STYLE, WS_CLIPCHILDREN)
        form1.Top = 0
        form1.Left = 0
        form1.Width = Screen.Width
        form1.Height = Screen.Height
        fullscreen = True
        Me.Show
    Else
        SetWindowPos form1.hwnd, -2, 0, 0, 0, 0, SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
        Call SetWindowLong(lngHwnd, GWL_STYLE, 382664704)
        form1.BorderStyle = 2
        form1.Width = 13785
        form1.Height = 8745
        fullscreen = False
        Me.Show
    End If

解决方案 »

  1.   

    把SetWindowPos第三个参数改为当前屏幕的宽,比如1280.
      

  2.   

    vb么,1280肯定不行了,1280*13。如果是横向的延伸
    If Not fullscreen Then
            SetWindowPos lngHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
            Call SetWindowLong(lngHwnd, GWL_STYLE, WS_CLIPCHILDREN)
            Me.Show
            form1.Top = 0
            form1.Left = 0
            form1.Width = Screen.Width
            form1.Height = Screen.Height
            fullscreen = True
                Else
            SetWindowPos form1.hwnd, -2, 0, 0, 0, 0, SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
            Call SetWindowLong(lngHwnd, GWL_STYLE, 382664704)
            Me.Show
            form1.BorderStyle = 2
            form1.left=1280*13
            form1.top=1280*13

            form1.Width = 13785
            form1.Height = 8745
            fullscreen = False
    End If
      

  3.   

    form1.top=1280*13 改成 form1.top=0
      

  4.   

    设置成 form1.left=1280*13
    form1.top=1280*13
    之后成功,单纯只设置left,或者top都能有效,想问一下是什么原因。
      

  5.   

    Private Sub Form_Load()
        Me.Move 0, 0, VB.Screen.Width, VB.Screen.Height
    End Sub
      

  6.   

    那么怎么判断当前所在的屏呢?如果是在两屏中间位置,会倾向于哪个屏幕。
    还有为什么top或者left设置一个就能有效果,两个屏幕之间的关系是什么样的,我做过一个小实验,时时显示一个屏幕的左上角坐标,结果从1屏到2屏的时候,只是横坐标扩大,这大概可以解释left的问题,那么top怎么解释呢?还有在窗口最大化的时候,左上角的纵坐标居然是负值,应该怎么理解,求解中。
    还有,我如果获取Screen.Width,只能获取第一个屏幕的,但两个屏幕又有点连续的意思,为什么会出现这样的情况。
      

  7.   


    多显示器编程,你需要知道第2个显示器的 width和 height如果需要双屏的全屏,可以直接指定位置  0,0,第1个屏幕宽+第2个屏幕宽,屏幕高你想让他在第2个屏幕上全屏则是,  第1个屏幕宽,0,第2个屏幕宽,屏幕高也就是说,第2个屏幕可以视为第1个屏幕的计量长度的扩展,当然。。这和你的双屏工作模式的设置有关如果是普通的屏幕扩展类型则是这样,如果是双屏独立则需要其他方法实现
      

  8.   

    你说的是其他的问题了,另起帖子,回答你。HOHO。
      

  9.   

    已开新帖http://topic.csdn.net/u/20110110/10/2d57145e-c300-4b90-8cd4-d5ddd3b81d25.html