Я пытаюсь создать статическое растровое изображение, но конструктор принимает только изображения wxGDII. Вот код из FormBuilder:

wxStaticBitmap* tmtBitmap = new wxStaticBitmap( this, wxID_ANY, wxBitmap( wxT("directory"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );

Есть ли способ преобразовать wxBitmap в wxGDIImage? Или создать wxGDIImage с учетом каталога?

Может, есть другой способ сделать это.

Спасибо.

1
YahooMania 12 Фев 2013 в 02:17
1
wxBitmap ЯВЛЯЕТСЯ wxGDIImage (который является внутренним классом в wxWidgets, о котором вам действительно не нужно заботиться), поэтому, какая бы проблема у вас не была, всегда включайте (сокращенно, если необходимо) сообщение об ошибке при запросе об ошибках компиляции.
 – 
VZ.
13 Фев 2013 в 18:32

1 ответ

Лучший ответ

wxStaticBitmap принимает wxBitmap в своем конструкторе ( wx API-Doc < / a>)
Сообщение об ошибке, выдаваемое компилятором, может вводить в заблуждение. Я предполагаю, что вы видите что-то вроде этого:

include/wx/msw/statbmp.h:80: note: candidates are: wxStaticBitmap::wxStaticBitmap(const wxStaticBitmap&)
include/wx/msw/statbmp.h:34: note:                 wxStaticBitmap::wxStaticBitmap(wxWindow*, wxWindowID, const wxGDIImage&, const wxPoint&, const wxSize&, long int, const wxString&)
include/wx/msw/statbmp.h:25: note:                 wxStaticBitmap::wxStaticBitmap()   


Поскольку это единственное, что зависит от контекста, похоже, проблема с указателем this, либо вы не находитесь "внутри" wxWindow или ваш компилятор не может определить статический тип. Вы можете использовать что-то вроде этого для проверки: (не делайте этого в продуктивном коде)

wxStaticBitmap* tmtBitmap = new wxStaticBitmap( (wxWindow*)NULL, wxID_ANY, wxBitmap( wxT("directory"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );

Или

wxStaticBitmap* tmtBitmap = new wxStaticBitmap( (wxWindow*)this, wxID_ANY, wxBitmap( wxT("directory"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );
1
baxit 15 Фев 2013 в 15:41
Вы правы, я неосторожно копировал код из wxFormBuilder. 'this' не было wxWindow. Спасибо.
 – 
YahooMania
12 Фев 2013 в 20:11
2
Не создавайте wxStaticBitmap с родителем NULL, дочернее окно должно иметь действительного родителя. И, конечно же, не приводите неокно к wxWindow, это просто приведет к сбою.
 – 
VZ.
13 Фев 2013 в 18:31
1
Может быть, мне следовало быть более конкретным, конечно, использование "Null-Parents" или просто приведение к wxWindow * в целом не очень хорошая идея. Это было предназначено только для проверки вывода компилятора
 – 
baxit
15 Фев 2013 в 15:36