Cómo quitar la barra de título en una aplicación Windows

Id. de artículo: 550091 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E10092
Expandir todo | Contraer todo

Resumen

Este artículo demuestra cómo podemos quitar la barra de título de una aplicación Windows.

Más información

NOTITLE quita la barra de título de nuestra aplicación, de la siguiente manera:
  1. Se quita el menú de la ventana, llamando a SetMenu con el parámetro hMenu = NULL.
  2. Obtenemos el estilo de la ventana, llamando a GetWindowLong y pasándole el parámetro nIndex = GWL_STYLE.
  3. Quitar el bit de Caption (titulo).
  4. Llamar a SetWindowLong() GWL_STYLE de modo que podemos cambiar el estilo de la ventana.
  5. Llamamos a InvalidateRect() para que repinte la ventana.
NOTITLE vuelve a poner el título de la ventana siguiendo los siguientes pasos:
  1. Se añade el menú de la ventana, llamando a SetMenu con el parámetro hMenu.
  2. Obtenemos el estilo de la ventana, llamando a GetWindowLong y pasándole el parámetro nIndex = GWL_STYLE..
  3. Se añade el bit de Caption (titulo).
  4. Llamar a SetWindowLong() GWL_STYLE de modo que podemos cambiar el estilo de la ventana.
  5. Llamamos a InvalidateRect() para que repinte la ventana.


CÓDIGO DE EJEMPLO


//********************************************************************
//
//  FUNCION: MainWndProc()                                                     
//
//  Cuando seleccionamos "NoTitulo!", desaparece el menu
//  Haciendo doble click con el boton izquierdo del raton
//  sobre la ventana, vuelve a aparecer
//
//********************************************************************

LRESULT CALLBACK MainWndProc (HWND hWnd,UINT uMessage,
WPARAM wParam, LPARAM lParam)
   {
      FARPROC lpProcAbout;
      DWORD dwStyle;

      static LONG wMenuHandle;
      static BOOL bNoTitle = FALSE;

      switch (uMessage)
      {
         case WM_LBUTTONDBLCLK: // Añadir barra de título
            if (bNoTitle)
            {
            // Obtiene el estilo de ventana actual, y selecciona
            //  los que queremos para el título
               dwStyle = GetWindowLong(hWnd, GWL_STYLE);

               dwStyle |= WS_OVERLAPPEDWINDOW;

            // Guardamos el handle de menu
               wMenuHandle = SetWindowLong(hWnd, GWL_ID, wMenuHandle);

            // Establecemos el nuevo estilo
               SetWindowLong(hWnd, GWL_STYLE, dwStyle);

            // Volvemos a dibujar la ventana
               SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | 
                  SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME);

               ShowWindow(hWnd, SW_SHOW);

               bNoTitle = FALSE;
            }    // if (gbNoTitle)
            break;

         case WM_COMMAND:
            switch (wParam)
            {
               case IDM_NOTITLE:    
                  // Obtenemos el estilo actual
                  dwStyle = GetWindowLong(hWnd, GWL_STYLE);
                  dwStyle &= ~(WS_CAPTION | WS_SYSMENU
                     | WS_MINIMIZEBOX | WS_MAXIMIZEBOX) | WS_BORDER;

                  // Las ventanas Overlapped o popup que no utilizan 
                  // un menú se crean con el parámetro hMenu de 
                  // CreateWindow a 0.
                  // No queremos que nuestra ventana tenga menú, 
                  // por lo que usando GWW_ID, lo establecemos a 0
                  // y guardamos el handle de menu antiguo, 
                  // guardándolo por si lo necesitamos después

                  wMenuHandle = SetWindowLong(hWnd, GWL_ID, 0);

                  // Establecer el nuevo estilo
                  SetWindowLong(hWnd, GWL_STYLE, dwStyle);

                  // Redibujar el marco de la ventana
                  SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | 
                     SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME);

                  ShowWindow(hWnd, SW_SHOW);
                  bNoTitle = TRUE;
                  break;

            default:
               return (DefWindowProc(hWnd, uMessage, wParam, lParam));
            }    // switch (wParam)
            break;

         case WM_DESTROY:
            PostQuitMessage(0);
            break;

         default:
            return (DefWindowProc(hWnd, uMessage, wParam, lParam));
      }     // switch (uMessage)

      return (0);
   }   // MainWndProc()



PRECAUCIÓN: CUALQUIER UTILIZACION POR SU PARTE DEL CÓDIGO INCLUIDO EN ESTE ARTÍCULO SE HARÁ A SU CUENTA Y RIESGO. Microsoft facilita este código"tal cual" sin garantía de ningún tipo, ya sea explícita o implícita, incluyendo expresamente en tal exención de responsabilidad y, a efectos meramente enunciativos y no limitativos, las garantías legales mercantiles implícitas y/o la adecuación a un propósito o finalidad en particular .

Propiedades

Id. de artículo: 550091 - Última revisión: lunes, 05 de mayo de 1997 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Visual C++ 4.0 Standard Edition
Palabras clave: 
barra esconder title visualc KB550091
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com