+wxObjectRefData *wxIcon::CloneRefData(const wxObjectRefData *dataOrig) const
+{
+ const wxIconRefData *
+ data = wx_static_cast(const wxIconRefData *, dataOrig);
+ if ( !data )
+ return NULL;
+
+ wxIcon *self = wx_const_cast(wxIcon *, this);
+ self->UnRef();
+ self->m_refData = new wxIconRefData(*data);
+
+ if ( data->m_hIcon )
+ {
+ ::CopyIcon(HICON(data->m_hIcon));
+ }
+
+ return m_refData;
+}
+
+void wxIcon::CopyFromBitmap(const wxBitmap& bmp)
+{
+#ifndef __WXMICROWIN__
+ HICON hicon = wxBitmapToHICON(bmp);
+ if ( !hicon )
+ {
+ wxLogLastError(wxT("CreateIconIndirect"));
+ }
+ else
+ {
+ SetHICON((WXHICON)hicon);
+ SetSize(bmp.GetWidth(), bmp.GetHeight());
+ }
+#endif // __WXMICROWIN__
+}
+
+void wxIcon::CreateIconFromXpm(const char **data)
+{
+ wxBitmap bmp(data);
+ CopyFromBitmap(bmp);
+}
+