CFormView abgeleitete Klasse als Dialog in Menü integrieren

cappa555

Grünschnabel
servus,

ich habe in meinem Menü einen Link gemacht und habe nun das ständige problem das er deaktiviert ist trotzdem ich ihm eine OnButton Funktion zugewiesen habe. CAudioScript ist wie CTestView eine von CFormView abgeleitete Klasse. Der Eintrag ist auch richtig in der MessageMap inkludiert.
Ich weiß leider überhaupt nicht weiter und hoffe dass mir hier jemand weiterhelfen kann

mfg andi

der Code schaut folgendermaßen aus:

Code:
void CTestView::OnScriptEditor()
{
    CAudioScriptView* testView = new CAudioScriptView();
    testView->ShowWindow(SW_SHOW);
}

void CTestView::OnUpdateScriptEditor(CCmdUI* pCmdUI)
{
    pCmdUI->Enable(TRUE);
}
 
Zuletzt bearbeitet:
Hallo Cappa,

du solltest die Menuitem-Handler in dem CMainFrame-Objekt abhandeln!

Die Aktivität des Menupunktes ist abhängig von dem Input-Fokus!

Also erzeuge in deinem CMainFrame-Objekt einen COMMAND-Event-Handler für deinen Menupunkt!

Der Sorgfalt halber solltest du dann auch einen UPDATE_COMMAND_UI Handler einbauen, in welchem du entscheidest, wann der Menupunkt aktiviert und wann deaktiviert sein soll!

In diesem kannst du dann das Event an eine eigene Funktion weiterleiten.

In etwa so:

Code:
void CMainFrame::OnMeinMenupunkt()
{
    GetActiveDocument()->GetActiveView()->onMeinMenupunkt();
}

Dann hast du keine Probleme mehr ;-)

Grüße,

Pit
 
Wie kann ich eine von CFormView abgeleitete Klasse initialisieren?

hey pit,

erstmal danke für die bemühung, auch wenn dies leider nichts brachte. hatte zunächst ein unbemerktes problem mit den sprach ressourcen (verschiedene IDs) was dazu führte das der Button immer HIDE war.
ein anderes problem ist nun jedoch, dass ich einfach das Dialogfenster der Klasse CAudioScriptView nicht angezeigt bekomme. ShowWindow() zeigt ein Fenster zwar an, erstellt hab ich es jedoch zunächst selbst im Konstruktor der Klasse mit CreateWindowEx(). Auch damit erhalte ich dauernd falsche Handles auf das zu erzeugende Fenster.
Bislang hatte ich immer von CDialog abgeleitete Klassen wo das Fenster schon fertig mitgeliefert wurde doch dieses mal muss ich gezwungenermaßen eine von CFormView abgeleitete Klasse verwenden.
ich google mich quer durchs internet aber gefunden habe ich nichts darüber wie ich eine von CFormView abgeleitete Klasse initialisieren kann. Vielleicht sollte ich noch dazu erwähnen das ich in der CAudioScriptView die Methode OnInitialUpdate() verwende um checkboxen und eine liste zu initialisieren, nicht wie bei CDialog mit InitDialog().
 
genial vielen dank

natürlich hab ich auch schon auf codeguru nachgeschaut, kenn die seite bald auswendig aber darauf bin ich echt nicht gestoplert...

nochmals vielen dank!
 
Zurück