Come è il menu di Windows in un MFC C ++ app popolata
Domanda
Uno dei menu standard forniti a un documento / vista app sotto MFC è il menu di Windows. Fornisce le cose come finestre piastrelle e cascata, e aggiunge un elenco numerato di opinioni attualmente disponibili alla fine del menu. Il problema è che, a volte non e vorrei sapere perché. Più in particolare, mi piacerebbe sapere come aggiornare questa lista come vorrei usarlo sotto uno strumento di automazione GUI. Di solito la lista è lì, a volte non è, qualcuno sa perché? La mia ipotesi è che ci sia una funzione profonda all'interno della classe CFrameWnd per prendersi cura di questo, ma io non riesco a trovarlo.
Modifica:. Sto anche utilizzando la libreria Stingray per la GUI che potrebbe anche avere un impatto sul problema
Soluzione
Aggiornamento del menu e nel titolo della finestra vengono gestiti separatelly in due metodi.
-
CFrameWnd::OnUpdateFrameMenu(..)
attualizza solo il menu telaio, -
CFrameWnd::OnUpdateFrameTitle(..)
aggiorna solo il nome della struttura.
Credo che ci sia da qualche parte un ordine di chiamata sbagliata e l'aggiornamento del titolo sarà più tardi l'aggiornamento del menu. Dopo tutto quel titolo nel menu Finestra rimane una stringa vuota a volte.
Il modo più semplice per la riparazione è quello di utilizzare la chiamata al metodo GetActiveFrame()->ActivateFrame()
. Si aggiorna immediatelly la finestra cornice reale e il menu Finestra di proprietà troppo.
Può essere utilizzato dopo la creazione del CDocument e il CView. Il posto migliore per chiamare è nella fine del OnFileNew
, OnFileOpen
Metodi sostituiti di (CWin) App classe di applicazioni.