代码之家  ›  专栏  ›  技术社区  ›  vanja.

更改Win32窗口样式

  •  11
  • vanja.  · 技术社区  · 15 年前

    是否有win32函数在窗口创建后更改其样式?我想更改中指定的样式标志 CreateWindowEx .具体来说,我想将标准窗口转换为没有边框和大小调整的窗口。

    5 回复  |  直到 6 年前
        1
  •  15
  •   Deanna superuser    12 年前

    我想 SetWindowLongPtr 应该这样做。注意你需要打电话 SetWindowPos 之后,如果你改变了边框样式,如备注所示。

    某些样式仅在窗口创建期间生效,因此无法通过此调用进行设置。通常情况下,msdn会调用随后可以设置的样式。

        2
  •  1
  •   gnat Nat Poor    12 年前

    您应该在createWindowEx或setWindowLongPTR中尝试此窗口样式: WS_POPUPWINDOW|WS_TABSTOP |WS_VISIBLE

        3
  •  0
  •   HeavenHM    7 年前

    我通过结合 设置窗口 显示窗口 方法。

    注释 那个电话 显示窗口 必须在这里,否则它将不起作用。

    这是满的 源代码 下面。只要打电话 设置控制台窗口样式() 方法并设置新的窗口样式。

    #define _WIN32_WINNT 0x0501
    #include <stdio.h>
    #include <windows.h>
    
    LONG_PTR setConsoleWindowStyle(INT,LONG_PTR);
    
    int main()
    {
        LONG_PTR new_style =  WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL;
        setConsoleWindowStyle(GWL_STYLE,new_style);
        return 0;
    }
    
    LONG_PTR setConsoleWindowStyle(INT n_index,LONG_PTR new_style)
    {
     /*The function does not clear the last error information. if last value was zero.*/
     SetLastError(NO_ERROR);        
    
     HWND hwnd_console = GetConsoleWindow();
     LONG_PTR style_ptr = SetWindowLongPtr(hwnd_console,n_index,new_style);
     SetWindowPos(hwnd_console,0,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_DRAWFRAME);
    
     //show window after updating
     ShowWindow(hwnd_console,SW_SHOW);
    
     return style_ptr;  
    }
    
        4
  •  0
  •   Charlie    7 年前
    HWND windowHandle = FindWindow(NULL, L"Various tests");
        SetWindowLongPtr(windowHandle, GWL_STYLE, WS_SYSMENU); //3d argument=style
        SetWindowPos(windowHandle, HWND_TOPMOST, 100, 100, Width, Height, SWP_SHOWWINDOW);
    

    是为我做的:D

        5
  •  0
  •   Denis    6 年前

    setwindowlong(hwnd,gwl_-style,newstyle); ShowWindow(硬件和软件显示);