Platform SDK: DirectX

Step 1: Create the Palette

[Visual Basic]

The information in this section pertains only to applications written in C and C++. See DirectDraw Visual Basic Tutorials.

[C++]

The DDEx2 sample first loads the palette into a structure by using the following code.

lpDDPal = DDLoadPalette(lpDD, szBackground); 
 
if (lpDDPal == NULL) 
    goto error; 
 

The sample function DDLoadPalette is part of the common DirectDraw functions found in the Ddutil.cpp file located in the \Dxsdk\Sdk\Samples\Misc directory. Most of the DirectDraw sample files in this SDK use this file. Essentially, it contains the functions for loading bitmaps and palettes from either files or resources. To avoid having to repeat code in the example files, these functions were placed in a file that could be reused. Make sure you include Ddutil.cpp in the list of files to be compiled with the rest of the DDExn samples.

For DDEx2, the DDLoadPalette sample function creates a DirectDrawPalette object from the Back.bmp file. The DDLoadPalette sample function determines if a file or resource for creating a palette exists. If one does not, it creates a default palette. For DDEx2, it extracts the palette information from the bitmap file and stores it in a structure pointed to by ape.

DDEx2 then creates the DirectDrawPalette object, as shown in the following example.

pdd->CreatePalette(DDPCAPS_8BIT, ape, &ddpal, NULL); 
return ddpal; 
 

When the IDirectDraw7::CreatePalette method returns, the ddpal parameter points to the DirectDrawPalette object, which is then returned from the DDLoadPalette call.

The ape parameter is a pointer to a structure that can contain either 2, 4, 16, or 256 entries, organized linearly. The number of entries depends on the dwFlags parameter in the CreatePalette method. In this case, the dwFlags parameter is set to DDPCAPS_8BIT, which indicates that there are 256 entries in this structure. Each entry contains 4 bytes (a red channel, a green channel, a blue channel, and a flags byte).

Next: Step 2: Set the Palette