Jak Obsługiwać Okno Rozdzielacza Win32?

Jak Obsługiwać Okno Rozdzielacza Win32?

[Poprawka] Jedno proste kliknięcie, aby naprawić komputer. Kliknij tutaj, aby pobrać.

Jeśli widziałeś główne okno rozdzielacza Win32, ten zestaw użytkownika może ci pomóc.

  • Pobierz kod podstawowy – 2197,9 KB
  • Pobierz symulację – projekt 35,6 KB
  • Prezentacja

    W tym artykule pokażę, jak tworzyć proste programy tylko dla WIN32-SDI z podzielonym oknem głównym. Okno podzielone jest na każde pozostałe okno, prawe okno i dominujące okno domu, które pełnią rolę każdego klubu dzielącego. Często na dole znajduje się przycisk do dynamicznej zmiany wyboru koloru okna. Również używa motywu XP do ogólnej definicji używanej w aplikacji, fakt, że musi być aktywowany za pomocą obecnego pliku.

    Większość definicji zawartych w tym oknie została utworzona przy użyciu samego Win32 API, z wyjątkiem jednego ważnego okna dialogowego, z którym każde powiązane zostało utworzone za pomocą edytora informacji używanego do dynamicznego dostosowywania ten kolor głównego okna. Zacznijmy tworzyć projekt. Najpierw uruchom Visual Studio i odpowiednio utwórz czysty projekt. Wybierz Win32Project, nazwij się projektem i kliknij OK.

    Użyj

    Kod tworzenia nowego podzielonego okna

    win32 splitter window

    Szansą na utworzenie niestandardowego okienka podzielonego okna jest utworzenie i trzech okien:

  • Okno główne
  • Okno
  • Okno po prawej
  • win32 splitter window

    Ustaw lewe i prawe okna podrzędne jako bieżącą ścieżkę do głównego okna. Użyj dowolnego rozszerzonego stylu okna WS_EX_CLIENTEDGE, jeśli tworzysz okno główne przy użyciu jakiegoś interfejsu API CreateWindowEx, podczas gdy WM_CREATE jest sugerowane poniżej:

    przypadek: GetClientRect(hWnd, &rect);g_hleftwnd = Utwórz OknoEx(WS_EX_CLIENTEDGE, LEFT_WINDOW_CLASS, "",    WS_KIND | WS_VISIBLE, prostokątny lewy, prostokątny podstawowy + TOP_POS, left_wnd_width, (rect.bottom - rect.top) - (TOP_POS + BOTTOM_POS), hWnd, NULL,    wskazówka, NULL);if(NULL! oznacza g_hleftwnd)    ShowWindow(g_hlewtwnd, SW_SHOW);    AktualizujOkno(g_hlewtwnd);g_hrightwnd = Utwórz OknoEx(WS_EX_CLIENTEDGE, RIGHT_WINDOW_CLASS, "",    WS_KIND | WS_VISIBLE | SS_SUNKEN,    rect.left + LEFT_WINDOW_WIDTH + SPLITTER_BAR_WIDTH,    proste. + idealne TOP_POS,    prostokątny.prawy - (prosty.lewy + LEFT_WINDOW_WIDTH + SPLITTER_BAR_WIDTH),    (Rect.bottom równa się Rect.top) - (TOP_POS + BOTTOM_POS),    hWnd, NULL, hInst, NULL);if(NULL! pasuje do g_rightwnd)    ShowWindow(g_rightwnd, SW_SHOW);    Aktualizuj okno(g_rightwnd);

    Dostosuj odpowiednią kotwicę okna, ale także zamknij okno, aby to okno główne mogło pełnić funkcję najlepszego separatora. Możemy dostosować obwód głównej belki separatora, korzystając z MACRO SPLITTER_BAR_WIDTH, który jest zawsze ustalony w m krosa.h. Zarządzaj wiadomościami w oknie…

  • WM_LBUTTONDOWN
  • WM_MOVE
  • WM_LBUTTONUP
  • WM_SIZE
  • sprawa WM_LBUTTONDOWN:    liczba całkowita xPos;    interwał yPos;        xPos implikuje (int)LOWORD(lParam);    yPos to (int)HIWORD(lParam);        xSizing oznacza (xPos > nleftWnd_width - SPLITTER_BAR_WIDTH &&    xPos < nleftWnd_width + SPLITTER_BAR_WIDTH );            jeśli(rozmiarx)                    setcapture(hWnd);        jeśli(rozmiarx)                    SetCursor(hcSizeEW);            Pauza;Sprawa WM_MOUSEMOVE:{    liczba całkowita xPos;    interwał yPos;        xPos jest niewątpliwie równy (int)LOWORD(lParam);    yPos to (int)HIWORD(lParam);        jeśli być może (wParam == MK_LBUTTON)                            jeśli(rozmiarx)                    Prawe skupienie RECT;            HDC-hc;            hdc Wskazuje GetDC(hWnd);            GetClientRect(hWnd, &rect);            jeśli(rozmiarx)                            SetRect(&focusrect, nleftWnd_width - (WIDTH_ADJUST 5 - 2),                    prostokątny+górny TOP_POS, nleftWnd_width + WIDTH_ADJUST,                    dolny prostokąt - BOTTOM_POS);                                                DrawFocusRect(hdc, &focusrect);                                nleftWnd_width = xPos;                                SetRect(&focusrect, nleftWnd_width - (SPLITTER_BAR_WIDTH * 2),                    rect.top + TOP_POS, nleftWnd_width + SPLITTER_BAR_WIDTH,                    dolny prostokąt - BOTTOM_POS);                DrawFocusRect(hdc, &focusrect);                        ReleaseDC(hWnd, hdc);
    
    
    
    

    Nie możesz już znieść błędów i awarii komputera? Kliknij tutaj, aby pobrać.

    Marcus Pocock