Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ Menu problem (https://www.delphipraxis.net/193520-menu-problem.html)

EWeiss 9. Aug 2017 21:52


Menu problem
 
Erstelle Menu

Code:
AppendMenuW(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hSubMenu, L"Select video stream");
wie kann ich das jetzt beim start disablen? Hab ja keine ID.
ohne submenu ist das kein Problem
Code:
AppendMenuW(hMenu, MF_STRING, ID_KEEPASPECTRATIO, L"Keep aspect ratio (&R)");
EnableMenuItem(hMenu, ID_KEEPASPECTRATIO, MF_DISABLED);
Bin total durch den Wind ;)
Ich habe mich schon Informiert.
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

OK:
werde das wohl Hardcoden müssen.
Code:
EnableMenuItem(hMenu, 5, MF_POPUP | MF_BYPOSITION | MF_DISABLED);
gruss

EWeiss 10. Aug 2017 01:28

AW: Menu problem
 
trotzdem habe ich noch ein seltsames Phänomen.

Es werden bei mir beide Einträge in die jeweiligen Sub Menus gepackt.
Habe ich was übersehene?

Code:
        // VideoStreams zum Menu addieren
        AppendMenuW(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hSubMenu, L"Select video stream");
        if (aMediaProperty.NumVideoStream == 0)
            EnableMenuItem(hMenu, 5, MF_POPUP | MF_BYPOSITION | MF_DISABLED);
        else
        {
            int IntI = 0;
            for (IntI = 0; IntI < aMediaProperty.NumVideoStream; IntI++)
            {
                if (KVideo_GetStreamInfo(stVideo, IntI, &StreamInfo))
                {
                    EnableMenuItem(hMenu, 5, MF_POPUP | MF_BYPOSITION | MF_ENABLED);
                    AppendMenuW(hSubMenu, MF_STRING, (UINT_PTR)ID_SELECTVIDEOSTREAM, StreamInfo.ppszName);
                }
                if (IntI = 0)
                    CheckMenuItem(hSubMenu, ID_SELECTVIDEOSTREAM, MF_CHECKED);
            }
        }

        // AudioStreams zum Menu addieren
        AppendMenuW(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hSubMenu, L"Select audio stream");
        if (aMediaProperty.NumAudioStream == 0)
            EnableMenuItem(hMenu, 6, MF_POPUP | MF_BYPOSITION | MF_DISABLED);
        else
        {
            int IntI = 0;
            for (IntI = 0; IntI < aMediaProperty.NumAudioStream; IntI++)
            {
                if (KVideo_GetStreamInfo(stAudio, IntI, &StreamInfo))
                {
                    EnableMenuItem(hMenu, 6, MF_POPUP | MF_BYPOSITION | MF_ENABLED);
                    AppendMenuW(hSubMenu, MF_STRING, (UINT_PTR)ID_SELECTAUDIOSTREAM, StreamInfo.ppszName);
                }
                if (IntI = 0)
                    CheckMenuItem(hSubMenu, ID_SELECTAUDIOSTREAM, MF_CHECKED);
            }
        }
gruss

jaenicke 10. Aug 2017 05:23

AW: Menu problem
 
Zitat:

Zitat von EWeiss (Beitrag 1378466)
Es werden bei mir beide Einträge in die jeweiligen Sub Menus gepackt.
Habe ich was übersehene?

Ich sehe nirgends einen Aufruf von CreatePopupMenu für hSubMenu. Ich nehme mal an der steht weiter oben. Wenn es so ist, fügst du aber in beide Menüeinträge das gleiche Popupmenü ein.
Du müsstest separate Popupmenüs erzeugen, z.B. hSubMenuVideo und hSubMenuAudio.

EWeiss 10. Aug 2017 13:36

AW: Menu problem
 
Zitat:

Zitat von jaenicke (Beitrag 1378470)
Zitat:

Zitat von EWeiss (Beitrag 1378466)
Es werden bei mir beide Einträge in die jeweiligen Sub Menus gepackt.
Habe ich was übersehene?

Ich sehe nirgends einen Aufruf von CreatePopupMenu für hSubMenu. Ich nehme mal an der steht weiter oben. Wenn es so ist, fügst du aber in beide Menüeinträge das gleiche Popupmenü ein.
Du müsstest separate Popupmenüs erzeugen, z.B. hSubMenuVideo und hSubMenuAudio.

Arghh ..selbstverständlich ;)
Man sollte einfach nicht mehr so spät Arbeiten.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz