如题

解决方案 »

  1.   

    Dim dxSet As New DirectX7
    '声明DirectX7对象
    Dim ddSet As DirectDraw7
    '声明DirectDraw7对象
    Dim DisModesEnum As DirectDrawEnumModes
    '声明DirectDrawEnumModes对象
    Dim dds2 As DDSURFACEDESC2'以下四个数组存储显示模式的相关数据
    Dim lntWid(100) As Integer
    '存储宽度
    Dim lntHig(100) As Integer
    '存储高度
    Dim lntBB(100) As Integer
    '存储颜色位数
    Dim lntRefR(100) As Integer
    '存储刷新频率
    Private Sub Command1_Click()
        Dim intSel As Integer
        intSel = List1.ListIndex
        '取得在列表框中选择的显示模式
        Call ddSet.SetCooperativeLevel(Me.hWnd, DDSCL_ALLOWMODEX Or DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE)
        '设置协作水平
        ddSet.SetDisplayMode lntWid(intSel), lntHig(intSel), lntBB(intSel), lntRefR(intSel), DDSDM_DEFAULT
        '设置显示模式
    End SubPrivate Sub Form_Load()
        Set ddSet = dxSet.DirectDrawCreate("")
        'dxSet建立DirectDraw对象ddSet
        ddSet.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL
        '设置协作水平
        Set DisModesEnum = ddSet.GetDisplayModesEnum(DDEDM_DEFAULT, dds2)
        'DisModesEnum获得支持的显示模式
         
         For i = 1 To DisModesEnum.GetCount()
            DisModesEnum.GetItem i, dds2
            '将指定的显示模式的相关数据存入dds2
            lntWid(i) = dds2.lWidth
            '将该显示模式下的宽度存入数组lntWid
            lntHig(i) = dds2.lHeight
            '将该显示模式下的高度存入数组lntHig
            lntBB(i) = dds2.ddpfPixelFormat.lRGBBitCount
            '将该显示模式下的色彩深度存入数组lntBB
            lntRefR(i) = dds2.lRefreshRate
            '将该显示模式下的刷新率存入数组lntRefR
            List1.AddItem "显示模式:" + Str(i - 1) + _
                          "      宽度" + Str(lntWid(i)) + _
                          "      高度" + Str(lntHig(i)) + _
                          "      颜色位数" + Str(lntBB(i)) + _
                          "      刷新率" + Str(lntRefR(i))
        Next
        '在列表框中显示各种显示模式的宽度、高度、色彩深度、刷新率,并为各显示模式编号
    End Sub