2013-03-03 12 views
0

我是一个新的wxWidgets。我的wxWidgets版本:wxWidgets-2.8.12,codeblocks:12.11,minGW。wxWidgets关于追加menuItems

我的代码是:

item=new wxMenuItem(settings,id,wxT("showTip"),wxT(""),wxITEM_CHECK); 
item->Check(true); 
settings->Append(item);/* after Append to 'settings', item->IsChecked()==false. */ 

首先我创建了一个菜单项,并设置检查状态为“真”。然后添加到菜单中。 发生了一件奇怪的事情,检查状态变为'假'。 请告诉我为什么?

顺便说一句,这是我对这个问题的测试代码。

wxMenu *settings=new wxMenu; 
wxMenuItem *item=new wxMenuItem(settings,menuID_MENU,wxT("test menu"),wxT("help message"),wxITEM_CHECK); 
item->Check(true); 
bool check_status=item->IsChecked(); 
settings->Append(item); 
bool check_status_after=item->IsChecked(); 

if(check_status!=check_status_after) 
    wxLogMessage(wxT("not equal")); 

回答

0

我真的不能告诉它为什么以这种方式实现,但documentation表明Check“只有当该项目已被添加到菜单的作品。”

内部(在Windows上),IsChecked将检查它是否附加到菜单;如果是这样,它会从中获得Checked的状态,否则它将返回它自己存储的标志的值。这就是为什么当你Append项目结果发生变化。

交换CheckAppend行应该是一个直截了当的解决方法。

+0

是的,没错!我忽略了那个重要的指示。谢谢。 – Donglei 2013-03-04 03:15:33