Udostępnij za pośrednictwem


Zmienianie stylów okna utworzonego przez MFC

W wersji z WinMain funkcja MFC rejestruje kilka klas standardowego okna.Ponieważ zwykle nie Edytuj MFC firmy WinMain, że funkcja daje możliwość zmiany domyślnych stylów okno MFC.W tym artykule wyjaśniono, jak można zmienić style takie klasy preregistered okna w istniejącej aplikacji.

Zmienianie stylów w nowej aplikacji MFC

Jeśli używasz programu Visual C++ w wersji 2.0 lub nowszej, można zmienić domyślne style okno Kreatora aplikacji podczas tworzenia aplikacji.Na stronie funkcje interfejsu użytkownika Kreatora aplikacji można zmienić style ramki główne okno i okien podrzędnych MDI.Niezależnie od typu okna, można określić grubość ramki (grubej lub cienkiej) i dowolne z następujących czynności:

  • Czy okno zawiera formanty Minimalizuj lub Maksymalizuj.

  • Czy okno początkowo zminimalizowane zmaksymalizowane, lub żadna.

Ramkę główną systemu Windows można również określić, czy okno ma Menu systemowego.Dla okien podrzędnych MDI można określić, czy okno obsługuje podziału okienka.

Zmienianie stylów w istniejącej aplikacji

Jeśli zmieniasz atrybuty okna w istniejącej aplikacji, wykonaj instrukcje w dalszej części tego artykułu.

Aby zmienić atrybuty okna domyślne używane przez aplikację RAM, utworzony za pomocą Kreatora aplikacji, należy zastąpić okna PreCreateWindow funkcji członka wirtualnego.PreCreateWindowUmożliwia dostęp zwykle zarządzane wewnętrznie przez proces tworzenia aplikacji CDocTemplate klasy.Rozmowy w ramach PreCreateWindow tylko przed do tworzenia okna.Modyfikując CREATESTRUCT struktury przekazany do PreCreateWindow, aplikacji można zmienić atrybuty używane do tworzenia okna.Na przykład w celu zapewnienia, że okna nie używać podpisu, należy użyć następujących operacji na poziomie bitowym:

// cs has been declared as CREATESTRUCT& cs;
cs.style &= ~WS_CAPTION;

CTRLBARS stosowania przykładowy demonstruje tę technikę zmiany atrybutów okno.W zależności od tego, jakie zmiany w aplikacji PreCreateWindow, może być konieczne do wywołania implementacji klasy podstawowej funkcji.

Następujące dyskusji obejmuje przypadku SDI i przypadku MDI.

W przypadku SDI

W aplikacji interfejsu (SDI) pojedynczy dokument domyślny styl okna w ramach jest kombinacją WS_OVERLAPPEDWINDOW i FWS_ADDTOTITLE style.FWS_ADDTOTITLE jest styl specyficzne MFC, który nakazuje RAM, aby dodać tytuł dokumentu, aby tytuł okna.Aby zmienić atrybuty okna w aplikacji SDI, zastąpić PreCreateWindow funkcji w klasie pochodzące z CFrameWnd (który nazwy aplikacji kreatora CMainFrame).Na przykład:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    // Call the base-class version
   if( !CFrameWnd::PreCreateWindow(cs) )
      return FALSE;

    // Create a window without min/max buttons or sizable border 
    cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

    // Size the window to 1/3 screen size and center it 
    cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; 
    cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; 
    cs.y = ((cs.cy * 3) - cs.cy) / 2; 
    cs.x = ((cs.cx * 3) - cs.cx) / 2;

   return TRUE;
}

Kod ten tworzy okno główne ramki bez przyciski Maksymalizuj i Minimalizuj i obramowanie może być zmieniany.Okno jest początkowo wyśrodkowany na ekranie.

W przypadku MDI

Nieco więcej pracy jest wymagane do zmiany stylu okno okno podrzędne w wielu aplikacji interfejsu (MDI) dokumentu.Domyślnie MDI aplikacje utworzone za pomocą Kreatora aplikacji używa domyślnie CMDIChildWnd klasy zdefiniowane w MFC.Aby zmienić styl okno okno potomne MDI, musi pochodzić z nową klasę CMDIChildWnd i zamienić wszystkie odniesienia do CMDIChildWnd w projekcie z odwołaniami do nowej klasy.Najprawdopodobniej tylko odwołanie do CMDIChildWnd w aplikacji znajduje się w Twojej aplikacji InitInstance funkcji składowej.

Domyślny styl okna w aplikacji MDI jest kombinacją WS_CHILD, WS_OVERLAPPEDWINDOW, i FWS_ADDTOTITLE style.Aby zmienić atrybuty okna okien podrzędnych MDI aplikacji, należy zastąpić PreCreateWindow funkcji w klasie pochodzące z CMDIChildWnd.Na przykład:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
   // Create a child window without the maximize button 
    cs.style &= ~WS_MAXIMIZEBOX; 

   return CMDIChildWnd::PreCreateWindow(cs);
}

Kod ten tworzy podrzędnych MDI windows bez przycisk Maksymalizuj.

x07xt611.collapse_all(pl-pl,VS.110).gifCo chcesz wiedzieć więcej?

Zobacz też

Koncepcje

Style ramki okna (C++)