にwxBitmapの更新:私は、単一のwxButtonを使用していwxBitmap
wxButtonAction::wxButtonAction(wxWindow* parent) : wxButton(parent,wxID_ANY) {
#if defined __WXMSW__
wxIcon ms_icon(wxT("START_ICON"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16);
wxBitmap button_bmp;
button_bmp.CopyFromIcon(ms_icon);
#else
wxFileName icon_path(DATA_DIR, wxT("start.ico"));
wxBitmap button_bmp(icon_path.GetFullPath(), wxBITMAP_TYPE_ICO);
#endif
SetLabel(_("&Start"));
SetBitmap(button_bmp);
}
bitmapedボタンが期待通りに表示されています。このメソッドは、ユーザーがそのボタンをクリックしたときに、私は、ビットマップとラベルの両方を変更することができます:
void wxButtonAction::updateOnAction(bool isRunning) {
#if defined __WXMSW__
wxIcon ms_icon((isRunning) ? wxT("STOP_ICON") : wxT("START_ICON"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16);
wxBitmap button_bmp;
button_bmp.CopyFromIcon(ms_icon);
#else
wxFileName icon_path(DATA_DIR, (!isRunning) ? wxT("stop.ico") : wxT("start.ico"));
wxBitmap button_bmp(icon_path.GetFullPath(), wxBITMAP_TYPE_ICO);
#endif
SetLabel((!isRunning) ? _("&Stop") : _("&Start"));
SetBitmap(button_bmp);
}
となりましリソースファイル:
AAPP_ICON ICON DISCARDABLE "../data/app.ico"
ABOUT_ICON ICON "../data/about.ico"
CLOSE_ICON ICON "../data/close.ico"
START_ICON ICON "../data/start.ico"
STOP_ICON ICON "../data/stop.ico"
1 24 "../data/manifest.xml"
ラベルは、ユーザーのトグルボタンをクリックするとpropertly変更しましたが、されていませんアイコンは常に「開始」ビットマップにあります。他のプラットフォームの下で、彼らはまったく同じことだから、私は(wxBitmap
からwxIcon
からの暗黙的な変換がMSWの下にあり、あなたはまったくCopyFromIcon()
を使用する必要はありませんすべてのアイコンが同じフォルダに存在すること
wxBITMAP_PNGに関するヒントをお寄せいただきありがとうございます。本当にコード行を減らしてください。しかし、アイコンがユーザーのクリックにスワップすることはありません。 – Joel
私はあなたのコードで何か間違っているとは思わない、 'SetBitmap()'イベントハンドラの外側からビットマップを停止して呼び出してみてください、それは動作しますか?たぶん、ビットマップに何か問題がありますか? –