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

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


EnableMenuItem dosn't work ?

Kent Fonager Kristensen -- KFK@SIEMENS.DK
Thursday, January 30, 1997

Environment: VC++ 4.0, NT3.51, NT 4.0

Hi everybody !!

I have this problem, when working with popup-menu's :

I have a popupmenu, where one of the item's state is dependent on
another event, eg. "Is this selection valid ?"... I try to control this,
using the code below...

...
	CMenu menu;	VERIFY(menu.LoadMenu(IDR_POPUP_TOPOLOGY_VIEW));	CMenu*
pPopup = menu.GetSubMenu(0);	ASSERT(pPopup != NULL);
	// if not valid, disable/gray the item, at pos. 2	if(!Valid_Selection)	
		pPopup->EnableMenuItem( ITEM_2, MF_BYPOSITION|MF_DISABLED|MF_GRAYED );
	
	CWnd* pWndPopupOwner = this;
	while (pWndPopupOwner->GetStyle() & WS_CHILD)		pWndPopupOwner =
pWndPopupOwner->GetParent();	
	pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x,
point.y,		pWndPopupOwner);
...

But nothing at all happens... I've implementet the eventhandler for the
ITEM_2, and m_bAutoMenuEnable is set to default (enabled).

 I've talked to another MFC-programmer in the company, and he faced the
same problem, months ago !!

 Hope that someone can help !!

 Thanks in advance,..


Kent Fonager
Software Engineer
ET317, Energy & Traffics Division
Siemens A/S, Technical Department

Phone           : +45 4477 5934
Fax             : +45 4477 4013
Email, business : kfk@siemens.dk
Email, private  : kfonager@post3.tele.dk    




Michael -- Michael.Dunphy@HBC.honeywell.com
Saturday, February 01, 1997

KFK@SIEMENS.DK wrote:

 // if not valid, disable/gray the item, at pos. 2
 if(!Valid_Selection) 
  pPopup->EnableMenuItem( ITEM_2, MF_BYPOSITION|MF_DISABLED|MF_GRAYED );

Your first and second arguments to EnableMenuItem don't match. Try
  pPopup->EnableMenuItem( ITEM_2, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED   
);
or
  pPopup->EnableMenuItem( 2, MF_BYPOSITION | MF_DISABLED | MF_GRAYED );


 - Mike Dunphy



Amir Salzberg -- amir@cryptont.com
Tuesday, February 04, 1997

>KFK@SIEMENS.DK wrote:
>
> // if not valid, disable/gray the item, at pos. 2
> if(!Valid_Selection) 
>  pPopup->EnableMenuItem( ITEM_2, MF_BYPOSITION|MF_DISABLED|MF_GRAYED );
>
>Your first and second arguments to EnableMenuItem don't match. Try
>  pPopup->EnableMenuItem( ITEM_2, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED   
>);
>or
>  pPopup->EnableMenuItem( 2, MF_BYPOSITION | MF_DISABLED | MF_GRAYED );
>
>
> - Mike Dunphy
>
>
In addition to that, Try to write at the constructor of your CMainFrame class:

m_bAutoMenuEnable = FALSE;

That should work;





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