【问题标题】:wxStaticBitmap constructor takes wxGDIImage instead of wxBitmapwxStaticBitmap 构造函数采用 wxGDIImage 而不是 wxBitmap
【发布时间】:2013-01-27 03:14:10
【问题描述】:

我正在尝试创建一个静态位图,但构造函数只接受 wxGDIImages。 这是来自 FormBuilder 的代码:

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

有没有办法将 wxBitmap 转换为 wxGDIImage?或者在给定目录的情况下创建一个 wxGDIImage?

也许还有另一种方法可以做到这一点。

谢谢。

【问题讨论】:

  • wxBitmap IS A wxGDIImage (这是 wxWidgets 中的一个内部类,您不应该真正需要关心)所以无论您遇到的问题与此无关,请始终包括(如有必要,缩写)询问编译错误时的错误消息。
  • 好的,我会记住的。

标签: c++ visual-c++ bitmap wxwidgets wxformbuilder


【解决方案1】:

wxStaticBitmap 在其构造函数中接受 wxBitmap (wx API-Doc)
编译器产生的错误信息可能有点误导 我猜你看到的是这样的:

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 );

【讨论】:

  • 你说得对,我不小心从 wxFormBuilder 复制代码。 'this' 不是 wxWindow。谢谢。
  • 不要用NULL 父窗口创建wxStaticBitmap,子窗口必须有一个有效的父窗口。当然,不要将非窗口投射到wxWindow,这只会崩溃。
  • 也许我应该更具体一点,当然使用“Null-Parents”或只是转换为wxWindow * 通常不是一个好主意。这只是为了验证编译器输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2022-11-21
  • 1970-01-01
  • 2021-12-25
  • 2013-05-06
相关资源
最近更新 更多