|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 60
|
[Visual C++] Finestra di dialogo laterale
Salve a tutti..
sto sviluppando un'applicazione con visual C++ 2005, un progetto SDI. Mi servirebbe di visualizzare una finestra di dialogo (tipo un pannello laterale) solo quando seleziono uno voce di menu. Mi spiego meglio... ho una vista.. quando seleziono la voce di Menu : "visuaizza dialogo", sulla sinistra mi appare la finestra di dialogo e la vista si ristringe. Ho provato derivando la classe della finestra di dialogo da CDialog... Faccio partire la finestra in modo non modale (creata con attributo Child) e l'attacco alla finestra.. Il problema è che riesco a ridimensionarela finestra di vista.. ma se ridimensiono la finestra non si vede più la finestra di dialogo e la finestra di vista torna a tutto schermo.. In pratica la finestra di dialogo resta sotto quella di vista... Ecco il codice per richiamare la finestra: Codice:
int m_DialogID=IDD_ALLINEA_DLG;
m_Dialog=new CAllineaDlg();
m_Dialog->Create(m_DialogID,0);
CRect l_rectWnd;
CRect l_rectClient;
CSize sizeChange;
this->GetWindowRect(&l_rectClient);
m_Dialog->GetWindowRect(&l_rectWnd);
ScreenToClient(&l_rectWnd);
ScreenToClient(&l_rectClient);
//dimensioni da modificare
sizeChange.cy = l_rectClient.Height();
l_rectWnd.bottom = sizeChange.cy;
sizeChange.cx = l_rectWnd.Width();
l_rectClient.left += sizeChange.cx;
l_rectWnd.top += 82;
l_rectWnd.bottom += 37;
l_rectClient.top += 41;
l_rectClient.bottom += 40;
////aggiorno la finestra di dialogo
m_Dialog->MoveWindow(&l_rectWnd);
m_Dialog->ShowWindow(SW_SHOW);
////aggiorno la finestra di vista
this->MoveWindow(&l_rectClient);
this->ShowWindow(SW_SHOW);
this->RedrawWindow();
Oppure per fare una cosa del genere dovrei derivare la classe della finestra da CFormView e fare con splitterWindow? Non si puo fare in questo modo? Grazie in anticipo... |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
Quote:
|
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jan 2004
Messaggi: 60
|
Quote:
ma compilo il file e non mi da errore.. appena faccio parti l'eseguibile va in crash... In pratica... Nel mainFrame ho aggiunto nel .h: CSplitterWnd m_wndSplitter; Nel .cpp ho fatto l'overRiding del metodo OnCreateClient ed ho aggiunto Codice:
VERIFY(m_wndSplitter.CreateStatic(this, 1, 2)); VERIFY(m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CAllineaDlg), CSize(280, 0), pContext) ); VERIFY(m_wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(0, 0), pContext) ); return TRUE; ma il prog non parte... Come posso fare? La mia finestra dovrebbe apparire quando clicco su una voce di menu... N-B. CAllineaDlgl'ho derivata da CFormView |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:25.



















