[Win7, 64 Bit, VC++ 2010] CMFCRibbonEdit: Wie Werte setzen?

Onkel Schuppig

Erfahrenes Mitglied
Hallo zusammen,
ich habe eine MFC-SDI-Anwendung mit Menüband (Ribbon). Im Menüband befinden sich ein paar Edit-Controls, die als Klasse CMFCRibbonEdit daher kommen.

RibbonSpinCtrl.PNG

Wie kann ich für die Edits programmgesteuert Werte vorgeben? Der unten gezeigte 2. Handler macht das nicht und blockiert jegliche Benutzereingabe. Der 1. Handler hingegen funktioniert einwandfrei.
Code:
void CMainFrame::OnEditRodynFreq() {
  // Get a pointer to the ribbon bar
  CMFCRibbonEdit* pEdit = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDIT_RODYN_FREQ));
  // Get the selected value
  CString val = pEdit->GetEditText();
  m_dSpindleSpeed = _ttof(val);
}

void CMainFrame::OnUpdateEditRodynFreq(CCmdUI *pCmdUI) {
  // Get a pointer to the ribbon bar
  CMFCRibbonEdit* pEdit = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDIT_RODYN_FREQ));
  // set the value
  CString val;
  val.Format("%g", m_dSpindleSpeed);
  pEdit->SetEditText(val);
}
 
Zuletzt bearbeitet:

Cromon

Erfahrenes Mitglied
Hallo Onkel Schuppig

Das ist sowieso ein bisschen ein Problem mit dem MFCRibbonEdit. Du hast nicht wirklich Zugriff auf das darunter liegende Edit control. Bei mir funktioniert das hier soweit problemlos:
C++:
	CMFCRibbonEdit* rbe = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDIT2));
	rbe->SetEditText(L"Edit me!");
	rbe->OnEnable(TRUE);
 

Onkel Schuppig

Erfahrenes Mitglied
Hallo Cromon,
ich habe es irgendwie hinbekommen, so wie du beschrieben hast. Ich darf das jedoch nicht im OnUpdateEditRodynFreq-Handler machen. Merkwürdige Sache, dabei wäre dort der ideale Platz dafür, wie bei Checkboxen und Buttons auch.
Danke!