問題:
用DialogBlocks設計了一個菜單,菜單中的圖標大小為16X16,并在DialogBlocks自動生成的代碼CreateControls()函數的后面設置所有菜單項的顏色為紅色。運行后效果如圖。

兩個菜單項:Page Setup和Exit不但沒有顯示紅色,而且與其它菜單項無法對齊。
原因:
查看了一下源代碼,發現menu item的ownerdraw屬性是在wxMenu::Append()時決定的。在調用wxMenu::Append()之后的代碼中對wxMenuItem的修改不會影響到實際物理菜單的ownerdraw屬性。
解決:
把所有非separator的所有菜單設置為owndraw。
修改wxWidgets目錄下的 \src\msw\menu.cpp文件:
bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
{
#if wxUSE_ACCEL
??? UpdateAccel(pItem);
#endif // wxUSE_ACCEL
?pItem->SetOwnerDrawn(!pItem->IsSeparator()); //Brent
?...
}
效果:
