Как получить wxColor из wxVariant? Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
martynov77
Experienced Solver
Experienced Solver
Posts: 74
Joined: Wed Apr 28, 2010 9:41 am

Как получить wxColor из wxVariant?

Post by martynov77 » Mon Oct 31, 2011 9:09 pm

Здравствуйте!

Я мспользую wxWidgets 2.8.10. Мне нужно полоучить значение wxColor из wxVariant. value.GetType() возвращает строку - "wxColour", но как получить само значение цвета? variant.GetData() возвращает wxVariantData* , который реально указывает на wxColourVariantData. Но класс wxColourVariantData определен только в исходниках wx (src/common/colourcmn.cpp) и не доступен в моей программе. Также variant.GetData()->Write(str) возвращает false (и не модифицирует str).
Есть ли какой-либо документированный путь получить wxColor из wxVariant?

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: Как получить wxColor из wxVariant?

Post by borr_1 » Tue Nov 01, 2011 5:27 am

Но класс wxColourVariantData определен только в исходниках wx (src/common/colourcmn.cpp) и не доступен в моей программе.
[крестится]

Как у тебя этот колор в вариант вообще попал? Если тебе нужно что-то более стандартное типа RGB так это всего то три цифры. Зачем тебе вообще вариант?
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

martynov77
Experienced Solver
Experienced Solver
Posts: 74
Joined: Wed Apr 28, 2010 9:41 am

Re: Как получить wxColor из wxVariant?

Post by martynov77 » Tue Nov 01, 2011 8:15 pm

borr_1 wrote:
Но класс wxColourVariantData определен только в исходниках wx (src/common/colourcmn.cpp) и не доступен в моей программе.
[крестится]

Как у тебя этот колор в вариант вообще попал? Если тебе нужно что-то более стандартное типа RGB так это всего то три цифры. Зачем тебе вообще вариант?
Попал примерно так:

Code: Select all

            m_propertyGrid->Append( new wxColourProperty( wxString(::cli::rc::findString(::carno::mvc::tstring(_T("colors/"))+colorName).c_str())
                                                        , wxString(colorName.c_str())
                                                        , wxColour(COLORREF_GET_RED(*pClr),COLORREF_GET_GREEN(*pClr),COLORREF_GET_BLUE(*pClr))
                                                        ) 
                                  );
И при событии OnValueChanged(wxPropertyGridEvent& event) я извлекаю variant из event'а

martynov77
Experienced Solver
Experienced Solver
Posts: 74
Joined: Wed Apr 28, 2010 9:41 am

Re: Как получить wxColor из wxVariant?

Post by martynov77 » Wed Nov 02, 2011 1:09 am

В англоязычном форуме подсказали

Code: Select all

wxVariant var;
var << wxColor(255, 0, 0);

wxColor col;
col << var;

Post Reply