Изменить стиль окна Win32 - PullRequest
       6

Изменить стиль окна Win32

11 голосов
/ 18 февраля 2010

Есть ли функция win32 для изменения стиля окна после его создания?Я хотел бы изменить флаги стиля, указанные в CreateWindowEx.В частности, я хотел бы преобразовать стандартное окно в окно без рамки и без изменения размера.

Ответы [ 5 ]

15 голосов
/ 18 февраля 2010

Я думаю, SetWindowLongPtr должно сделать это. Обратите внимание, что вам нужно вызвать SetWindowPos впоследствии, если вы изменили стиль границы, как указано в комментариях.

Некоторые стили вступают в силу только при создании окна и поэтому не могут быть установлены этим вызовом. MSDN обычно вызывает стили, которые МОЖНО установить позже.

1 голос
/ 24 сентября 2012

Вы должны попробовать этот стиль окна в createwindowex или SetWindowLongPtr: WS_POPUPWINDOW|WS_TABSTOP |WS_VISIBLE

0 голосов
/ 29 октября 2018

SetWindowLong (hWnd, GWL_STYLE, newStyle);ShowWindow (hWnd, SW_SHOW);

0 голосов
/ 29 апреля 2018
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

0 голосов
/ 17 апреля 2018

Способ, которым я решил эту проблему, используя комбинацию методов SetWindowPos и ShowWindow .

ПРИМЕЧАНИЕ , что вызов showWindow должен быть здесь, иначе он не будет работать.

Вот полный исходный код ниже. Просто вызовите setConsoleWindowStyle () метод и установите новый стиль окна.

#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;  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...