Newsgroup: it.comp.programmare.win32
Titolo: Mfc Application

Salve a tutti...
Sto sviluppando un'applicazione con il Visual c++ e MFC..
Ho un piccolo problema..
Qualcuno sa indicarmi come devo fare in una MDI Application a farla
iniziare a schermo intero..
Grazie

Nell'InitInstance dove crei il tuo (presumo) CMainFrame fai una 
pMainFrame->ShowWindow(SW_MAXIMIZE).
Non sarebbe male pero' che la finestra che hai fatto fosse in grado di 
memorizzarsi la posizione.
A tale pro se vuoi ci sono queste due belle funzioncine che uso da qualche 
anno con successo in un programma MDI che ho fatto e che tra l'altro 
funzionano anche in configurazione di multi/monitor (il che non e' male!).
La LoadWindowState la puoi chiamare da InitInstance in questo modo :
  //Recupero la posizione della finestra
  if (!LoadWindowState (pMainFrame, "MainWindow", true))
   pMainFrame->ShowWindow(SW_MAXIMIZE);
  // The main window has been initialized, so show and update it.
  pMainFrame->UpdateWindow();
Mentre la SaveWindowState  pui chiamarla nell'evento OnClose del CMainFrame.
void SaveWindowState(CWnd* pWnd, CString WindowName)
{
 //Recupero le informazioni sulla posizione corrente della finestra
 WINDOWPLACEMENT wndpl;
 wndpl.length = sizeof(WINDOWPLACEMENT);
 pWnd->GetWindowPlacement (&wndpl);
 //Memorizzo il codice di attivazione
 CWinApp *pApp = AfxGetApp();
 pApp->WriteProfileInt (WindowName, "Codice", 1);
 //Memorizzo queste informazioni nel registry
 pApp->WriteProfileInt (WindowName, "Flags",  wndpl.flags);
 pApp->WriteProfileInt (WindowName, "ShowCmd", wndpl.showCmd);
 pApp->WriteProfileInt (WindowName, "ptMinX", wndpl.ptMinPosition.x);
 pApp->WriteProfileInt (WindowName, "ptMinY", wndpl.ptMinPosition.y);
 pApp->WriteProfileInt (WindowName, "ptMaxX" , wndpl.ptMaxPosition.x);
 pApp->WriteProfileInt (WindowName, "ptMaxY", wndpl.ptMaxPosition.y);
 pApp->WriteProfileInt (WindowName, "rcBottom", 
wndpl.rcNormalPosition.bottom);
 pApp->WriteProfileInt (WindowName, "rcLeft", wndpl.rcNormalPosition.left);
 pApp->WriteProfileInt (WindowName, "rcRight", 
wndpl.rcNormalPosition.right);
 pApp->WriteProfileInt (WindowName, "rcTop",  wndpl.rcNormalPosition.top);
}
bool LoadWindowState (CWnd* pWnd, CString WindowName, bool noMinimize)
{
 CWinApp *pApp = AfxGetApp();
 //Se il codice di attivazione è settato...
 if (pApp->GetProfileInt (WindowName, "Codice", 0) > 0)
 {
  WINDOWPLACEMENT wndpl;
  //Recupero le informazioni della finestra dal registry
  wndpl.flags      = pApp->GetProfileInt (WindowName, "Flags", 0);
  wndpl.showCmd     = pApp->GetProfileInt (WindowName, "ShowCmd", 0);
  wndpl.ptMinPosition.x   = pApp->GetProfileInt (WindowName, "ptMinX", 0);
  wndpl.ptMinPosition.y   = pApp->GetProfileInt (WindowName, "ptMinY", 0);
  wndpl.ptMaxPosition.x   = pApp->GetProfileInt (WindowName, "ptMaxX", 0);
  wndpl.ptMaxPosition.y   = pApp->GetProfileInt (WindowName, "ptMaxY", 0);
  wndpl.rcNormalPosition.bottom = pApp->GetProfileInt (WindowName, 
"rcBottom", 0);
  wndpl.rcNormalPosition.left  = pApp->GetProfileInt (WindowName, "rcLeft", 
0);
  wndpl.rcNormalPosition.right = pApp->GetProfileInt (WindowName, "rcRight", 
0);
  wndpl.rcNormalPosition.top  = pApp->GetProfileInt (WindowName, "rcTop", 
0);
  //ATTENZIONE!!! Se la finestra è in minimize e non la voglio
  if (noMinimize)
   if (wndpl.showCmd == SW_MINIMIZE || wndpl.showCmd == SW_SHOWMINIMIZED)
    wndpl.showCmd = SW_SHOWMAXIMIZED;
  //Controllo se sono in una situazione singolo monitor...
  //N.B. SM_CMONITORS = 80
  if (GetSystemMetrics (80) == 1)
  {
   //Verifico che la posizione della finestra non risulti essere fuori dello 
schermo
   //nel qual caso la riporto dentro ai limiti
   HWND hWnd = GetDesktopWindow ();
   CRect Rect;
   GetWindowRect (hWnd, Rect);
   int DeltaX = 0;
   int DeltaY = 0;
   if (wndpl.rcNormalPosition.right - wndpl.rcNormalPosition.left > 
Rect.Width())
   {
    wndpl.rcNormalPosition.left = Rect.left;
    wndpl.rcNormalPosition.right = Rect.right;
   }
   if (wndpl.rcNormalPosition.bottom - wndpl.rcNormalPosition.top > 
Rect.Height())
   {
    wndpl.rcNormalPosition.top = Rect.top;
    wndpl.rcNormalPosition.bottom = Rect.bottom;
   }
   if (wndpl.rcNormalPosition.left < Rect.left) DeltaX = Rect.left - 
wndpl.rcNormalPosition.left;
   if (wndpl.rcNormalPosition.top < Rect.top) DeltaY = Rect.top - 
wndpl.rcNormalPosition.top;
   if (wndpl.rcNormalPosition.right > Rect.right) DeltaX = Rect.right - 
wndpl.rcNormalPosition.right;
   if (wndpl.rcNormalPosition.bottom > Rect.bottom) DeltaY = Rect.bottom - 
wndpl.rcNormalPosition.bottom;
   wndpl.rcNormalPosition.left += DeltaX;
   wndpl.rcNormalPosition.right += DeltaX;
   wndpl.rcNormalPosition.top += DeltaY;
   wndpl.rcNormalPosition.bottom += DeltaY;
  }
  //Setto le nuove impostazioni
  pWnd->SetWindowPlacement (&wndpl);
  return true;
 }
 return false;
}

grazie per l'aiuto