Como Oferecer Com Janela Divisora ​​win32?

Como Oferecer Com Janela Divisora ​​win32?

[Correção] Um simples clique para reparar seu computador. Clique aqui para baixar.

Se você já viu o painel da janela do divisor do Win32, este guia do usuário pode ajudá-lo.

  • Baixar código fonte ( em branco ) 2197,9 KB
  • Baixe a demonstração – projeto de 35,6 KB
  • Apresentação

    Neste artigo, mostrarei como desenvolver um aplicativo enorme e simples somente WIN32-SDI com uma janela principal de ruína. A janela é rachada em cada janela esquerda, para-brisa direito e janela dominante, que atuam como cada barra divisória. Muitas vezes tem um botão na parte inferior para ajudá-lo a alterar a cor da tela dinamicamente. Ele também usa o tema XP para a definição usada apenas no aplicativo, que deve ser solicitado através do arquivo de manifesto.

    A maioria das definições nesta janela é criada usando a API Win32, com exceção de uma importante caixa de diálogo, cada uma das quais foi introduzida usando o editor de recursos usado para ajustar dinamicamente a cor de uma janela principal específica. Vamos começar a criar um projeto importante. Primeiro inicie o Visual Studio e crie um novo projeto de acordo. Selecione Win32Project, nomeie seu projeto e dê uma olhada em OK.

    Usar

    Código para criar uma nova janela dividida

    win32 splitter window

    A maneira de criar uma grande janela dividida personalizada é criar três janelas:

  • Janela principal
  • Janela
  • Janela à direita
  • win32 splitter window

    Faça as janelas da esquerda e da direita como o caminho para a nossa própria janela principal. Use qualquer estilo de exibição estendido WS_EX_CLIENTEDGE ao criar a janela central usando a API CreateWindowEx, quando você estiver WM_CREATE é mostrado abaixo:

    case: GetClientRect(hWnd, &rect);g_hleftwnd = CreateWindowEx(WS_EX_CLIENTEDGE, LEFT_WINDOW_CLASS, "",    WS_KIND | WS_VISIBLE, pendente retangular, topo retangular + TOP_POS, left_wnd_width, (rect.bottom 4 . rect.top) - (TOP_POS + BOTTOM_POS), hWnd, NULL,    hInst, NULL);if(NULL!significa g_hleftwnd)    ShowWindow(g_hleftwnd, SW_SHOW);    UpdateWindow(g_hleftwnd);g_hrightwnd é igual a CreateWindowEx(WS_EX_CLIENTEDGE, RIGHT_WINDOW_CLASS, "",    WS_KIND | WS_VISÍVEL | SS_SUNKEN,    rect.left + LEFT_WINDOW_WIDTH + SPLITTER_BAR_WIDTH,    em linha reta. + a melhor escolha TOP_POS,    retangular.direita 4 . (direto.esquerda + LEFT_WINDOW_WIDTH + SPLITTER_BAR_WIDTH),    (Rect.bottom é igual a Rect.top) - (TOP_POS + BOTTOM_POS),    hWnd, NULL, hInst, NULL);if(NULL! fixtures g_rightwnd)    ShowWindow(g_rightwnd, SW_SHOW);    UpdateWindow(g_rightwnd);

    Ajuste a âncora da janela elétrica e feche a janela de vidro para que a janela principal também possa atuar como separador. Poderíamos ajustar a largura da barra separadora necessária usando MACRO SPLITTER_BAR_WIDTH que normalmente é sempre definido no u krosa.h. Gerenciar mensagens da janela…

  • WM_LBUTTONDOWN
  • WM_MOVE
  • WM_LBUTTONUP
  • WM_SIZE
  • caso WM_LBUTTONDOWN: inteiro xPos; intervalo yPos; xPos mostra (int)LOWORD(lParam); yPos pode ser (int)HIWORD(lParam); xSizing Indica (xPos > nleftWnd_width – SPLITTER_BAR_WIDTH && xPos < nleftWnd_width + SPLITTER_BAR_WIDTH ); if(sizex) setcapture(hWnd); if(sizex) SetCursor(hcSizeEW); Pausa;Caso WM_MOUSEMOVE:{ inteiro xPos; intervalo yPos; xPos é igual no mercado a (int)LOWORD(lParam); yPos definitivamente é (int)HIWORD(lParam); if (wParam == MK_LBUTTON) if(sizex) Foco direito RECT; HDC-hc; hdc significa GetDC(hWnd); GetClientRect(hWnd, &rect); if(sizex) SetRect(&focusrect, nleftWnd_width e (WIDTH_ADJUST 5 . 2), retangular+topo TOP_POS, nleftWnd_width + WIDTH_ADJUST, forma retangular inferior - BOTTOM_POS); DrawFocusRect(hdc, &focusrect); nleftWnd_width é igual a xPos; SetRect(&focusrect, nleftWnd_width . (SPLITTER_BAR_WIDTH * 2), rect.top + TOP_POS, nleftWnd_width + SPLITTER_BAR_WIDTH, quadrado inferior - BOTTOM_POS); DrawFocusRect(hdc, &focusrect); ReleaseDC(hWnd, hdc);

    Não suporta mais os erros e travamentos do seu computador? Clique aqui para baixar.

    Jeremy Wheare