15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Problem with ON_UPDATE_CMD_UI & checking a menu item

Dave Wruck -- media119@mail.idt.net
Saturday, December 07, 1996

Environment: VC++ 1.52, Windows 3.1/NT 3.51

I have developed a CMDIChildWnd derived object that manages it's own menu
replacement with the parent frame.  When the CMDIChildWnd object
initializes, it loads a copy of the main frame menu from the exe resources
as well as the pop-up menu dedicated to the child window.  It then merges
the menus with an "InsertMenu" on the mainframe menu.  The CMenu is then
detached from this new merged menu and the HMenu is stored in the child
object.  When the child window is activated, it replaces the MDI parent's
menu with the
one it has constructed.

This all seems to work just fine.  However, I have placed an
ON_UPDATE_COMMAND_UI macro in my message map to check or uncheck one of the
items in my merged sub-menu based on a value in the class.  The mapping is
working correctly and the function is called when I pull down the "merged"
popup menu.  However, when I call the "SetChecked" function on the pCmdUI
object, it doesn't have any effect on the menu item.  I have verified the
item id and the index in the CCmdUI structure and I don't see any obvious
problems.

Also, I've stepped through the SetChecked function in the debugger through
the
CMenu "CheckMenuItem" function to no avail.

What the heck am I missing here?

Any help will be much appreciated,

David A. Wruck
Creative Media Software Corp.
media119@mail.idt.net



Dave Wruck -- media119@mail.idt.net
Tuesday, December 10, 1996

Just to give you an update, I solved this problem today by eliminating my
use of CMenu and instead used the straight Windows 3.1 API function calls
for inserting a menu.  I suspect that the "GetSubMenu(0)" function of CMenu
was hosing up my menu handles somehow.  Once I made the API calls,
everything worked just fine.

If anyone has any insight into why CMenu was rendering my inserted popup
unresponsive to the "SetChecked" funcion, I would appreciate the info.

----------
> From: Dave Wruck 
> To: MFC Mailing List 
> Subject: Problem with ON_UPDATE_CMD_UI & checking a menu item
> Date: Saturday, December 07, 1996 7:30 AM
> 
> Environment: VC++ 1.52, Windows 3.1/NT 3.51
> 
> I have developed a CMDIChildWnd derived object that manages it's own menu
> replacement with the parent frame.  When the CMDIChildWnd object
> initializes, it loads a copy of the main frame menu from the exe
resources
> as well as the pop-up menu dedicated to the child window.  It then merges
> the menus with an "InsertMenu" on the mainframe menu.  The CMenu is then
> detached from this new merged menu and the HMenu is stored in the child
> object.  When the child window is activated, it replaces the MDI parent's
> menu with the
> one it has constructed.
> 
> This all seems to work just fine.  However, I have placed an
> ON_UPDATE_COMMAND_UI macro in my message map to check or uncheck one of
the
> items in my merged sub-menu based on a value in the class.  The mapping
is
> working correctly and the function is called when I pull down the
"merged"
> popup menu.  However, when I call the "SetChecked" function on the pCmdUI
> object, it doesn't have any effect on the menu item.  I have verified the
> item id and the index in the CCmdUI structure and I don't see any obvious
> problems.
> 
> Also, I've stepped through the SetChecked function in the debugger
through
> the
> CMenu "CheckMenuItem" function to no avail.
> 
> What the heck am I missing here?
> 
> Any help will be much appreciated,
> 
> David A. Wruck
> Creative Media Software Corp.
> media119@mail.idt.net




| Вернуться в корень Архива |