MFC 单文档程序菜单栏的按钮勾选效果,该怎么处理

MFC 单文档程序菜单栏的按钮勾选效果
废话不多说,我的问题是:
程序初始化完成之后,我需要指定菜单栏的某一个选项设置为选中状态(即有一个对勾)
如记事本程序的“查看”-->“状态栏”
我的方式是:


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
     // ....
    GetMenu()->GetSubMenu(1)->CheckMenuItem( 3, MF_CHECKED | MF_BYPOSITION);
     // 把这个代码加到菜单项的Command消息中,可以正常切换状态
    return 0;
}


但是在初始化的时候这样弄却没有效果,现在很迷茫,不知道怎么弄。
默认情况下,菜单项目前面也是没有“对勾”效果的。

------解决方案--------------------
ON_UPDATE_COMMAND_UI中用
pCmdUI->SetCheck();是否选中打钩为setcheck参数,BOOL或FALSE
"自动换行"菜单项左边是否打勾的操作放在ON_UPDATE_COMMAND_UI响应函数里.

传统SDK程序要改变选单命令项状态,可以呼叫EnableMenuItem或是 CheckMenuItem,但这使得程序杂乱无章,因为你没有一个固定的位置和固定的原则处理命令项状态。MFC提供一种直觉并且仍旧依赖讯息观念的方式,解决这个问题,这就是UPDATE_COMMAND_UI讯息。

其设计理念是,每当选单被拉并尚未显示之前,其命令项(以及对应之工具栏按钮)都会收到UPDATE_COMMAND_UI讯息,这个讯息和WM_COMMAND有㆒样的绕行路线,我们(程序员)只要在适当的类别上放置其处理函式,并在函式上做某些判断,便可决定如何显示命令项。

   这种方法的最大好处是,不但把问题的解决方式统化,更因为 Framework传给UPDATE_COMMAND_UI处理程序的参数是个「指向CCmdUI对象的指针」,而CCmdUI对象就代表着对应的选单命令项,因此你只需呼叫    CCmdUI    所准备的,专门用来处理命令项外观的函式(如Enable或SetCheck)即可。我们的工作量大为减轻。  


------解决方案--------------------
老问题了
ON_UPDATE_COMMAND_UI //控制打勾
ON_COMMAND  //实现函数功能
必须同时用
ON_UPDATE_COMMAND_UI后面的一个函数实现带pCmdUI入参
代码为:
pCmdUI->SetCheck(全局布尔变量); //TRUE就打勾,反之不打勾

以后就可以依靠设置   全局布尔变量  来控制是否打勾了