問(wèn)題:
用DialogBlocks設(shè)計(jì)了一個(gè)菜單,菜單中的圖標(biāo)大小為16X16,并在DialogBlocks自動(dòng)生成的代碼CreateControls()函數(shù)的后面設(shè)置所有菜單項(xiàng)的顏色為紅色。運(yùn)行后效果如圖。

兩個(gè)菜單項(xiàng):Page Setup和Exit不但沒(méi)有顯示紅色,而且與其它菜單項(xiàng)無(wú)法對(duì)齊。
原因:
查看了一下源代碼,發(fā)現(xiàn)menu item的ownerdraw屬性是在wxMenu::Append()時(shí)決定的。在調(diào)用wxMenu::Append()之后的代碼中對(duì)wxMenuItem的修改不會(huì)影響到實(shí)際物理菜單的ownerdraw屬性。
解決:
把所有非separator的所有菜單設(shè)置為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
?...
}
效果:
