Если я вас правильно понимаю, вы хотите иметь CListBox
, который позволяет пользователю выбрать CPen
для использования в другом месте.
Я бы, наверное, сделал небольшой вспомогательный класс:
struct PenHelper
{
CString m_displayName;
LOGPEN m_penProps;
bool CreatePen(CPen* pPen)
{
return pPen->CreatePenIndirect(&m_penProps) == 1;
}
};
Идея в том, что у вас может быть контейнер типа std::map
с несколькими PenHelper
каждый с именами типа "Solid Red" и соответствующей структурой LOGPEN
со свойствами, соответствующими названию. В CListBox
вы добавляете строку отображаемого имени. Когда они выбирают один, вы можете найти его по имени и использовать функцию создания, чтобы фактически сделать соответствующий CPen
Всего один из миллиона способов обнажить кошку.
Редактировать: Быстрая заметка. Чтобы обработать ON_LBN_SELCHANGE
в вашей карте сообщений, когда они делают выбор в вашем CListBox
, убедитесь, что вы указали стиль LBS_NOTIFY
в вызове Create
, иначе он не сработает.