Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Popup-menü-punkt deaktivieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
11.10.2003, 18:47 Uhr
Martin



Tach zusammen

Ich habe mit VC++ 6.0 ein Menü erstellt:
Ansicht
|
+-> Analog1
| |
| +-> Ein
| |
| +-> Aus
|
+-> Analog2

Jetzt möchte ich "Analog1" in meinem Fenster EIN bzw. AUS schalten. In den Menü-Eigentschaften gibt es die Option "Grau". Damit ist die Option deaktiviert. Ich möchte das jetzt vom Programm aus steuern (Toggeln).

Ich habe es schon mit dem Befehl: "EnableMenuItem" ausprobiert, aber kein Ergebnis bekommen ( Auch kein Fehler)

C++:
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_ANSICHT_ANALOG1_AUS, MF_GRAYED);



Kann mir jemand helfen...???

DANKE
Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.10.2003, 19:36 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst noch beim 2ten Parameter MF_BYCOMMAND angeben!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.10.2003, 21:55 Uhr
Martin



Danke FloSoft!
Es funktioniert immer noch nicht

Hier ist mal mein Programmcode.....

C++:
//###################################################// Analog-Meter: EIN / AUS

void CUSBTestDlg::OnUpdateAnsichtAnalog1Aus(CCmdUI* pCmdUI)
{
   GetDlgItem(IDC_AN1_METER)->ShowWindow(false);    //Objekt ausblenden
   GetDlgItem(AN1_Box)->ShowWindow(false);            //Rahmen ausblenden
   CMenu* mmenu = GetMenu();
   CMenu* submenu = mmenu->GetSubMenu(0);
   submenu->EnableMenuItem(ID_ANSICHT_ANALOG1_AUS, MF_GRAYED);
   submenu->EnableMenuItem(ID_ANSICHT_ANALOG1_EIN, MF_BYCOMMAND);
}

void CUSBTestDlg::OnUpdateAnsichtAnalog1Ein(CCmdUI* pCmdUI)
{
   GetDlgItem(IDC_AN1_METER)->ShowWindow(true);        //Objekt einblenden
   GetDlgItem(AN1_Box)->ShowWindow(true);            //Rahmen einblenden
   CMenu* mmenu = GetMenu();
   CMenu* submenu = mmenu->GetSubMenu(0);
   submenu->EnableMenuItem(ID_ANSICHT_ANALOG1_EIN, MF_GRAYED);
   submenu->EnableMenuItem(ID_ANSICHT_ANALOG1_AUS, MF_BYCOMMAND);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.10.2003, 22:00 Uhr
Martin



Sorry, habe wohl nicht genau gelesen.
Du hast es bestimmt so gemeint:

C++:
void CUSBTestDlg::OnUpdateAnsichtAnalog1Aus(CCmdUI* pCmdUI)
{
   GetDlgItem(IDC_AN1_METER)->ShowWindow(false);    //Objekt ausblenden
   GetDlgItem(AN1_Box)->ShowWindow(false);            //Rahmen ausblenden
   CMenu* mmenu = GetMenu();
   CMenu* submenu = mmenu->GetSubMenu(0);
   submenu->EnableMenuItem(ID_ANSICHT_ANALOG1_AUS, MF_GRAYED | MF_BYCOMMAND);
}  




Es funktioniert aber auch noch nicht

Gruß
Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.10.2003, 01:31 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich benutz meistens MF_BYPOSITION und gebe dann die relative Position des Menu-Item's an, ich finde das funktioniert besser!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.10.2003, 20:26 Uhr
~Martin
Gast


Hast Du gerade ein Beispiel zur Hand???

Wäre dafür sehr dankbar!

Gruß Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.10.2003, 21:17 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Menü:

Code:
Datei
| - A
| - B




C++:
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(0, MF_DISABLED| MF_BYPOSITION); // A deaktivieren


--
class God : public ChuckNorris { };

Dieser Post wurde am 12.10.2003 um 21:18 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.10.2003, 21:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Was mir gerade auffällt, die EIN und AUS menüeinträge sind ja nochmal ein SubMenu tiefer!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.10.2003, 23:08 Uhr
Martin



Im ersten SubMenue kann ich jetzt die einzelnen Eigenschaften deaktivieren. Aber auf die untere Ebene (EIN / AUS) kann ich noch nicht zugreifen. Obwohl ich bei GetSubMenue(1), GetSubMenue(2), usw. ausprobiert habe.

Kannst Du FloSoft, bzw ihr anderen Experten mir nochmal weiter helfen????

Vielen Dank
Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.10.2003, 23:43 Uhr
~toxic
Gast


hallo, ich hab zwar jetzt nich so die ahnung aber logisch wäre doch :

C++:
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
CMenu* subsubmenu = submenu->GetSubMenu(0);
subsubmenu->EnableMenuItem(0, MF_DISABLED| MF_BYPOSITION);


??? oder ???

gruß !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: