Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

How to Create a Window Using CreateWindowEx in Windows

The CreateWindowEx function is a crucial part of the Windows API, allowing developers to create and manage windows in a Windows environment. This function provides an extended version of CreateWindow, offering additional styles and options for window creation. Understanding how to use CreateWindowEx is essential for any Windows developer looking to create custom user interfaces or manage application windows effectively.

Examples:

  1. Basic Window Creation: Below is a simple example of how to create a basic window using CreateWindowEx in a C++ Windows application.

    #include <windows.h>
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
       switch (uMsg) {
           case WM_DESTROY:
               PostQuitMessage(0);
               return 0;
           default:
               return DefWindowProc(hwnd, uMsg, wParam, lParam);
       }
    }
    
    int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) {
       const wchar_t CLASS_NAME[] = L"Sample Window Class";
    
       WNDCLASS wc = { };
    
       wc.lpfnWndProc = WindowProc;
       wc.hInstance = hInstance;
       wc.lpszClassName = CLASS_NAME;
    
       RegisterClass(&wc);
    
       HWND hwnd = CreateWindowEx(
           0,                              // Optional window styles.
           CLASS_NAME,                     // Window class
           L"Learn to Program Windows",    // Window text
           WS_OVERLAPPEDWINDOW,            // Window style
    
           // Size and position
           CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    
           NULL,       // Parent window    
           NULL,       // Menu
           hInstance,  // Instance handle
           NULL        // Additional application data
       );
    
       if (hwnd == NULL) {
           return 0;
       }
    
       ShowWindow(hwnd, nCmdShow);
    
       MSG msg = { };
       while (GetMessage(&msg, NULL, 0, 0)) {
           TranslateMessage(&msg);
           DispatchMessage(&msg);
       }
    
       return 0;
    }
  2. Extended Window Styles: The following example demonstrates how to use extended window styles with CreateWindowEx to create a window with a tool window style.

    #include <windows.h>
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
       switch (uMsg) {
           case WM_DESTROY:
               PostQuitMessage(0);
               return 0;
           default:
               return DefWindowProc(hwnd, uMsg, wParam, lParam);
       }
    }
    
    int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) {
       const wchar_t CLASS_NAME[] = L"Sample Window Class";
    
       WNDCLASS wc = { };
    
       wc.lpfnWndProc = WindowProc;
       wc.hInstance = hInstance;
       wc.lpszClassName = CLASS_NAME;
    
       RegisterClass(&wc);
    
       HWND hwnd = CreateWindowEx(
           WS_EX_TOOLWINDOW,               // Extended window styles
           CLASS_NAME,                     // Window class
           L"Tool Window",                 // Window text
           WS_OVERLAPPEDWINDOW,            // Window style
    
           // Size and position
           CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    
           NULL,       // Parent window    
           NULL,       // Menu
           hInstance,  // Instance handle
           NULL        // Additional application data
       );
    
       if (hwnd == NULL) {
           return 0;
       }
    
       ShowWindow(hwnd, nCmdShow);
    
       MSG msg = { };
       while (GetMessage(&msg, NULL, 0, 0)) {
           TranslateMessage(&msg);
           DispatchMessage(&msg);
       }
    
       return 0;
    }

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.