void FillMajorTypes(ListBox& listbox)
{
    listbox.ClearItems();

    // Fill the specified list box with major type name/GUID
    for (int i=0; i < NUM_MAJOR_TYPES; i++)
    {
        listbox.AddItem(majortypes[i].szName, (void *) majortypes[i].pGUID);
    }

    listbox.Select(0);
}
void FillSubType(ListBox& listboxMajor, ListBox& listboxMinor)
{
    const GUIDINFO *pSubtype;
    UINT nSelection = 0;
	
	listboxMajor.GetCurrentSelection(&nSelection);
    int nMajorType;

    // First clear the subtype list
    listboxMinor.ClearItems();

    // If the "don't care" item was selected, clear and exit
    if (nSelection == 0)
    {
        listboxMinor.AddString(L"<No subtypes>\0");
        listboxMinor.Select(0);
        return;
    }
    else
	{
        nMajorType = nSelection - 1;
	}

    // Determine how to fill the minor type list, based on the
    // currently selected major type.
    pSubtype = pSubTypes[nMajorType];

    // If there's no associated subtype, just add a default
    if (!pSubtype)
    {
        listboxMinor.AddString(L"<No subtypes>\0");
        listboxMinor.Select(0);
        return;
    }
    else
    {
        // Set a default item for "don't care"
        listboxMinor.AddString(L"<Don't care>\0");

        int i=0;

        // Fill the subtype list box.  Enter N item data to the N+1 list slot.
        while (pSubtype[i].pGUID != NULL)
        {
            listboxMinor.AddItem(pSubtype[i].szName, (void *) pSubtype[i].pGUID);
            i++;
        }

        listboxMinor.Select(0);
    }
}