menu bar item (kein pop-up) highlighten, aber wie? menu bar item (kein pop-up) highlighten, aber wie?
Ergebnis 1 bis 11 von 11
  1. Hallo alle zusammen,

    folgender Fall:
    Ich habe eine Applikation vorliegen, die aus 5 Dialogen besteht. Zwischen den einzelnen Dialogen wird hin und hergeschaltet, indem man in der "menu bar"(ganz unten) auf das entsprechende Feld tippt. Die "menu bar" besteht also aus 5 Einträgen und diese sind keine "Pop-up-Menüs". Sobald ich ein "menu bar item" betätige, wird dieser (solange ich drauf tippe) gehighlighted und die Applikation wechselt in den richtigen Dialog. Sobald ich jedoch das "menu item", also den getippten Menü-Punkt wieder loslasse, verschwindet die gehighlightete Fläche und ich weiß nicht, in welchem Dialog ich mich befinde.

    Ich benutze:
    PPC 2003(iPAQ) mit Windows CE 4.2
    unter embedded Visual C++4.0 SP4
    MFC

    Bei der Erstellung des Dialogs wird unter ::InitDialog() folgender code ausgeführt, um die "menu bar" zu erstellen:

    SHMENUBARINFO mbi = {0};

    memset(&mbi, 0, sizeof(SHMENUBARINFO));
    mbi.cbSize = sizeof(SHMENUBARINFO);
    mbi.hInstRes = AfxGetResourceHandle();
    mbi.hwndParent = m_hWnd;
    mbi.nToolBarId = IDR_MENUBAR_MAIN;
    mbi.nBmpId = 0;
    mbi.cBmpImages = 0;

    if(SHCreateMenuBar(&mbi)==FALSE)
    return FALSE;
    }


    FRAGE:
    Kann mir jemand verraten, was ich tun soll, damit der Menü-Punkt nach dem drauftippen gehighlightet bleibt?

    Folgende Funktionen schon ohne Erfolg ausprobiert:
    -MENUITEMINFO
    -GetMenuItemInfo
    -SetMenuItemInfo

    Vielen Dank im Voraus
    MfG.EW.
    0
     

  2. so weit ich weiss verhindert dir das die MFC, da sie die menübar für dich konstruiert. Ich würde dir die WinAPI empfehlen....
    0
     

  3. Ciao

    Das habe ich mal in einem Dialog mit Menubar gemacht, vielleicht hilfts dir was:

    Erstelle folgende Memberfunktionen:
    afx_msg void OnButton1();
    afx_msg void OnButton2();
    ...
    afx_msg void OnUpdateButton1(CCmdUI* pCmdUI);
    afx_msg void OnUpdateButton2(CCmdUI* pCmdUI);
    ...

    Der Pointer m_pWndEmptyCB ist ein Member von CDialog soweit ich mich erinnere. (Hab nur den Code ohne Entwicklungsumgebung und Hilfe hier...)

    void CMyDialog::OnButton1()
    {
    m_pWndEmptyCB->OnUpdateCmdUI((CFrameWnd *) this, TRUE);
    }

    void CMyDialog::OnUpdateButton1(CCmdUI * pCmdUI)
    {
    BOOL bCheck = jenachdem_ob_es_markiert_sein_soll;

    pCmdUI->m_pOther->SendMessage(TB_CHECKBUTTON, pCmdUI->m_nID, MAKELONG(bCheck , 0));
    }

    ... Das gleiche für Button 2 usw...

    Wie gesagt, ich hatte nur einen Dialog, aber vielleicht hilfts dir was.

    Gruss
    0
     

  4. Ach ja, wenn du CDialog verwendest, kannst du zum Laden der CommandBar folgendes verwenden:


    BOOL CMyDialog::OnInitDialog()
    {
    CDialog::OnInitDialog();

    CCeCommandBar * pCommandBar = (CCeCommandBar*) m_pWndEmptyCB;
    pCommandBar->LoadToolBar(IDR_TOOLBAR);

    return TRUE;
    }

    Gib Bescheid obs funktioniert.
    Grüessli
    0
     

  5. Gast
    Kannst du bitte noch ein paar Worte dazu sagen?
    Bin noch großer Anfänger.

    -Wo alles muss ich was einfügen?
    -Wozu dient die Funktion OnButton?
    -Ich habe eine Funktion "StartAction" in die das Programm als erstes reinläuft, wenn der Button in der Menüleiste gedrückt wurde. Kann ich in diese etwas einfügen?
    -Was ist mit der Message_MAP. Soll da etwas eingefügt werden?
    -Ich will keine Toolbar kreieren, weil ich ja schon eine menu bar mit "SHCreateMenuBar" erstellt habe.

    Vielen Dank
    EW
    0
     

  6. Jä so, also ich versuchs mal. (Ist ziemlich schwierig sowas über das Forum zu erklären, da man den bisherigen Code sehen müsste)

    Zuerst muss ich noch wissen, wie hast du das Projekt kreiert? Als Dialog-Applikation oder als Standard-Applikation mit den Klassen CFrameBlabla, CDocumentBlabla oder so usw.? Der Code, den ich gepostet habe, funktioniert nur mit einer Dialogbasierten Anwendung denke ich...

    Die Funktion OnButtonX ist die gleiche Funktion wie deine Funktion StartAction. Also dort hinein käme der Code von OnButtonX.

    In der MESSAGE_MAP solltest du bereits einen Eintrag drin haben für das Ereignis, wenn du auf einen deiner Buttons klickst, etwa so:

    ON_COMMAND(IDS_START_ACTION1, OnStartAction1)

    Im Klassen-Assistent (Class-Wizzard), aufrufbar mit Ctrl+W, kannst du für deine Buttons auch Ereignisbehandlungsroutinen für UPDATE_COMMAND_UI erstellen.


    Ich weiss nicht ob dies weiterhilft. Wenn du willst, kannst du mir den Code auch mal per Mail senden, damit ich mir ein genaueres Bild verschaffen kann (keine Angst, ich behandle ihn vertraulich... )

    Gruss Philipp
    0
     

  7. Gast
    Hallo .
    Vielen Dank für eure Antworten. Ich habe einen Code erzeugt und als Anhang mitgesandt, der ähnlich wie meine Applikation aufgebaut ist. Es ist ein eVC 4.0 Projekt (SP4). Man kann es entweder mit dem Emulator oder mit einem richtigen Pocket PC starten. Am Anfang bekommt man irgendwelche Fehlermeldungen, diese einfach mit IGNORE abweisen (ca. 6 mal) und dann seht Ihr einen Hauptdialog mit 3 Buttons. Wenn man auf einen Button drückt, wird man in das jeweilige Dialogfenster geleitet. Es erscheint eine menu bar mit der man dann wieder wechseln kann. Aber der Button in der menu bar ist nicht gehighlightet.!!!!!!!!!!!!

    Wie kriegt man es hin den Button zu highlighten?

    Danke.
    Angehängte Dateien Angehängte Dateien
    0
     

  8. Hoi EW

    Ich fürchte, du hast da ziemlich ein Durcheinander im Code. So etwas, wie du es möchtest, könnte man eleganter mit sogenannten Tab's machen (wie du sie z.B. vom Pocket PC unter Startmenu / Einstellungen her kennst).

    Eine andere Möglichkeit ist Folgende: Du hast einen Hauptdialog, und von diesem rufst du dann per Menu die anderen Dialoge auf, zum Beispiel den About Dialog. Um zum ersten Dialog zurückzukehren, musst du dann auf "ok" tippen.

    Ich habe mir erlaubt, für den ersten geschliderten Fall ein Projekt mit dem Grundgerüst zu erstellen. In den Klassen CSetupDlg, CToolsDlg und CAboutDlg findest du jeweils bereits vorgefertigte Funktionen für wenn der entsprechende Dialog aktiv oder eben nicht mehr aktiv wird.

    Ich hoffe, dies hilft dir weiter.

    Gruss Philipp
    Angehängte Dateien Angehängte Dateien
    0
     

  9. Gast
    Ja, du hast recht, das könnte man theoretisch mit tabs machen, jedoch verwende ich Tabs in meinem Projekt, um von der menu bar auf weitere unterpunkte zugreifen zu können. Mit anderen Worten: Die menu bar muss da schon bleiben.

    Auch möchte ich auf keinen Fall erst auf OK(oben links) in einem Dialog drücken müssen um ins andere Dialogfenster zu kommen. Es muss ein sofortiger Wechsel zwischen den Dialogen stattfinden.

    Hat jemand noch einen Vorschlag? Am einfachsten wäre ja in meinem Fall, wenn ich beim Start des Dialoges einfach den entsprechenden Button mit einer bestimmten Funktion highlighten könnte (aber mit welcher?)

    Oder sollte ich die menu bar ganz anders aufbauen? API? Wie macht man sowas?

    Vielen Dank für eure Hilfe.
    MfG.EW.
    0
     

  10. HELP!!
    0
     

  11. Hier die Antwort (in englisch)

    I've found the answer:

    after creating the menubar you store the handle:

    m_hstoredMB = mbi.hwndMB;

    and then, if you press on the menubar item:


    void CMyDlg::OnButtonPress()
    {
    TBBUTTONINFO tbi;

    memset (&tbi, 0, sizeof (tbi));
    tbi.cbSize = sizeof (tbi);
    tbi.dwMask = TBIF_STATE;
    ::SendMessage (m_hstoredMB, TB_GETBUTTONINFO, ID_STATUS, (LPARAM)&tbi);

    tbi.fsState = TBSTATE_ENABLED | TBSTATE_PRESSED;
    ::SendMessage (m_hstoredMB, TB_SETBUTTONINFO, ID_STATUS, (LPARAM)&tbi);
    }

    //ID_STATUS ist the ID of the pressed Button(seen in the Resources viev->menu bar


    Danke für die Mitarbeit und Hilfe
    0
     

Ähnliche Themen

  1. v1605 / Kein "Start-Menü" mehr - rumms!
    Von v1605-User im Forum HTC TyTN
    Antworten: 2
    Letzter Beitrag: 01.12.2006, 13:32
  2. Ist zwar kein Qtek spezifisches Problem aber...
    Von KDC im Forum Qtek Forum (PPC)
    Antworten: 11
    Letzter Beitrag: 31.07.2006, 08:45
  3. Start Menü Einstellungen
    Von sliver75 im Forum Plauderecke
    Antworten: 5
    Letzter Beitrag: 21.01.2005, 20:04
  4. kein Infrarot menu gfunden / daten zu spv senden
    Von evilknewil im Forum Plauderecke
    Antworten: 4
    Letzter Beitrag: 18.11.2004, 16:18
  5. Menu button wisbar
    Von sperz im Forum Plauderecke
    Antworten: 5
    Letzter Beitrag: 02.11.2004, 16:51

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

Menubar programmieren

ccecommandbar windows mobile 6.5

logo in menu bar programmieren

m_pwndemptycb->onupdatecmdui((cframewnd

windows ce dialog with menu

onupdatecmdui aufrufen

menubar cdialog

windows mobile 6.5 ccecommandbar

Windows Mobile 6.5menubar

menubar in CDialog

Jmenu bar item aktion

toolbar programmieren winodws

windows mobile 6.5 menubar anzeigen

pocket pc 2003 embedded visual c menubar

menu gehighlightet

wince menu bar

Stichworte