DirectX SDK

Step 4: Report Available Display Modes

[C++]

This section pertains only to application development in Visual Basic. See DirectDraw C/C++ Tutorials.

[Visual Basic]

A display mode is a hardware setting that describes the dimensions and bit-depth of graphics that the display hardware sends to the monitor from the primary surface. Display modes are described by their defining characteristics: width, height, and bit-depth. For instance, most display adapters can display graphics 640 pixels wide and 480 pixels tall, where each pixel is 8 bits of data. In shorthand, this display mode is called 640×480×8. As the dimensions of a display mode get larger or as the bit-depth increases, more display memory is required.

Support for display modes varies depending on the display adapter. To ensure a particular display mode is supported on the system, you should enumerate all the valid display modes using the DirectDraw7.GetDisplayModesEnum method. This method creates and fills a DirectDrawEnumModes enumeration object called DisplayModesEnum which is then used to retrieve the descriptions of individual display modes.

In the Tutorial 5 sample the methods of the DisplayModesEnum object are called for each supported display mode:

Dim DisplayModesEnum As DirectDrawEnumModes
Dim ddsd2 As DDSURFACEDESC2
Dim dd As DirectDraw7
Set dd = m_dx.DirectDrawCreate(sGuid)
dd.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL
Set DisplayModesEnum = dd.GetDisplayModesEnum(0, ddsd2)
OutList.AddItem " Display Modes"
For i = 1 To DisplayModesEnum.GetCount()
    DisplayModesEnum.GetItem i, ddsd2
    OutList.AddItem "  Index          " + Str(i)
    OutList.AddItem "  Width          " + Str(ddsd2.lWidth)
    OutList.AddItem "  Height         " + Str(ddsd2.lHeight)
    OutList.AddItem "  Bits Per Pixel" + Str(ddsd2.ddpfPixelFormat.lRGBBitCount)
    OutList.AddItem "  Refresh Rate   " + Str(ddsd2.lRefreshRate)
    OutList.AddItem ""
Next