powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / WinAPI окно без заголовка
25 сообщений из 26, страница 1 из 2
WinAPI окно без заголовка
    #34930326
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Подскажите как сделать окно без заголовка(типа BorderStyle=None в Delphi),C++ и чистый winAPI?!
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930344
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chikanok wrote:
> Подскажите как сделать окно без заголовка(типа BorderStyle=None в
> Delphi),C++ и чистый winAPI?!

примерно - CreateWindow* БЕЗ стилей WS_CAPTION. Не помню точно, возможно
нужно рубануть и WS_SYSMENU, WS_MINIMIZEBOX, WS_MAXIMIZEBOX. По стилям
границ - тот же dwStyle и dwExStyle.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930665
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teras
chikanok wrote:
> Подскажите как сделать окно без заголовка(типа BorderStyle=None в
> Delphi),C++ и чистый winAPI?!

примерно - CreateWindow* БЕЗ стилей WS_CAPTION. Не помню точно, возможно
нужно рубануть и WS_SYSMENU, WS_MINIMIZEBOX, WS_MAXIMIZEBOX. По стилям
границ - тот же dwStyle и dwExStyle.

Даже с dwStyle=0,есть заголовок.
Можно подробнее!
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930670
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DWORD dwStyle = (DWORD)::GetWindowLongPtr(/*хэндл твоего окна*/, GWL_STYLE);
dwStyle &= ~WS_CAPTION||WS_MAXIMIZEBOX|WS_MAXIMIZEBOX;
#pragma warning(disable:4244)
::SetWindowLongPtr(m_hWnd, GWL_STYLE, (LONG_PTR)dwStyle);
#pragma warning(default:4244)
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930674
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chikanok wrote:
>
> Даже с dwStyle=0,есть заголовок.
Лучше - WS_POPUP | WS_THICKFRAME.

> Можно подробнее!
MSDN?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930753
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chikanok пишет:
> Даже с dwStyle=0,есть заголовок.

Наверное надо еще стиль WS_POPUP вместо WS_OVERLAPPED_WINDOW.
У оверлапов нельзя наверное сделать окно БЕЗ заголовка.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930770
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
chikanok пишет:
> Даже с dwStyle=0,есть заголовок.

Наверное надо еще стиль WS_POPUP вместо WS_OVERLAPPED_WINDOW.
У оверлапов нельзя наверное сделать окно БЕЗ заголовка.
Posted via ActualForum NNTP Server 1.4
можно, как у меня в примере, только надо еще вызывать после этого SetWindowPos чтобы кэш обновить
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930962
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CerebrumDWORD dwStyle = (DWORD)::GetWindowLongPtr(/*хэндл твоего окна*/, GWL_STYLE);
dwStyle &= ~WS_CAPTION||WS_MAXIMIZEBOX|WS_MAXIMIZEBOX;
#pragma warning(disable:4244)
::SetWindowLongPtr(m_hWnd, GWL_STYLE, (LONG_PTR)dwStyle);
#pragma warning(default:4244)

Окно становиться,без границ и заголовка,т.е. все ок, но на месте заголовка появляется какая-то серая полоска с именем окна. Как её убрать?
И вообще должен же быть какой-то стиль который бы позволил бы создать окно без заголовка!!!
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34930965
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читай предыдущий пост

SetWindowPos вызывай
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34932368
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня код конечно не многим отличается но всё же... =)

Код: plaintext
1.
2.
3.
4.
5.
6.
int wndStyle;
	wndStyle = GetWindowLong(MyWnd, GWL_STYLE);
	wndStyle = wndStyle || WS_CAPTION;
	wndStyle = wndStyle || WS_SYSMENU;
	SetWindowLong(MyWnd, GWL_STYLE, wndStyle);
	ShowWindow(MyWnd,  1 );
	UpdateWindow(MyWnd);
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34932752
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
	wndStyle = wndStyle || WS_CAPTION;
	wndStyle = wndStyle || WS_SYSMENU;
что это?
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34932967
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
Код: plaintext
1.
	wndStyle = wndStyle || WS_CAPTION;
	wndStyle = wndStyle || WS_SYSMENU;
что это?

Изменение стиля окна... Я угадал ??? =)))) НА самом деле пример из книжки, и вроде работает...
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34932998
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удивительно, что работает, вообще-то после этих манипуляций в wndStyle должна оказаться единица.
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933053
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот отсюда
Хотя да согласен, стиль меняется тупо на 0x0001, ну я тогда об этом как то особо не задумывался...

автор~WS_CAPTION||WS_MAXIMIZEBOX|WS_MAXIMIZEBOX;
этот код делает тоже самое, логичнее было бы просто убрать ненужные стили как нибудь так
Код: plaintext
1.
wndStyle = wndStyle ^ WS_CAPTION;
	wndStyle = wndStyle ^ WS_SYSMENU;
но тут стиль меняется...
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933077
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор~WS_CAPTION||WS_MAXIMIZEBOX|WS_MAXIMIZEBOX;это не код, это заговор сатанистов :(
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933093
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот как раз этот стиль
Код: plaintext
#define WS_EX_DLGMODALFRAME     0x00000001L
гы
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933119
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pszMyNick wrote:
> вот как раз этот стиль
>
> #define WS_EX_DLGMODALFRAME 0x00000001L
>
> гы

Это dwExStyle.
А работает, скорее всего потому, что и не WS_OVERLAPPED и нет WS_CAPTION.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933132
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo автор~WS_CAPTION||WS_MAXIMIZEBOX|WS_MAXIMIZEBOX;это не код, это заговор сатанистов :(
подумаешь очепятался и два раза || зафигачил, главное - идея, не уж то еще и прописные истины объяснять человеку, взявшемуся за winapi?

ps 3000 нах
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933158
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teras
pszMyNick wrote:
> вот как раз этот стиль
>
> #define WS_EX_DLGMODALFRAME 0x00000001L
>
> гы

Это dwExStyle.
А работает, скорее всего потому, что и не WS_OVERLAPPED и нет WS_CAPTION.
Posted via ActualForum NNTP Server 1.4

НУ естественно нет, только этот стиль, то бишь единица и передается в SetWindowLong. В принципе с "^" шикарно работает, лишние стили убираются...
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933716
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum wrote:
> maXmo
> автор
> ~WS_CAPTION||WS_MAXIMIZEBOX|WS_MAXIMIZEBOX;
>
> это не код, это заговор сатанистов :(
>
>
> подумаешь очепятался и два раза || зафигачил, главное - идея, не уж то
> еще и прописные истины объяснять человеку, взявшемуся за winapi?
>

Тут еще и приоритет операций неправильный. Код эквивалентен:
(~WS_CAPTION)|WS_MAXIMIZEBOX|WS_MAXIMIZEBOX == ~WS_CAPTION
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933730
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pszMyNick wrote:
>> teras
>>
>> pszMyNick wrote:
>>> вот как раз этот стиль
>>>
>>> #define WS_EX_DLGMODALFRAME 0x00000001L
>>>
>>> гы
>>
>> Это dwExStyle.
>> А работает, скорее всего потому, что и не WS_OVERLAPPED и нет WS_CAPTION.
>>
> НУ естественно нет, только этот стиль, то бишь единица и передается в
> SetWindowLong. В принципе с "^" шикарно работает, лишние стили убираются...

Что значит нет? WS_EX_DLGMODALFRAME передается через параметр dwExStyle
функции CreateWindowEx, а ты упражняешься с параметром dwStyle. На самом
деле, это флаг диалогового окна DS_ABSALIGN, не имеющий отношения к
обычным окнам.

В остальном - мне кажется, пусть даже это и работает, это подход не с
той стороны. Поведение не описано, и гарантий, что такое будет
продолжать работать в будущих версиях системы, когда микрософту надоест
поддерживать совместимость - нет. По мне так, если нужно создать окно
без заголовка - нужно СОЗДАВАТЬ окно без заголовка, пользуясь
документированными средствами (WS_POPUP). Но, конечно, хозяин - барин.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933810
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Проблему я решил. Тем что перехватываю WM_PAINT но не чего не делаю!
Работает и ладно.
Расскажите мне или где почитать скажите про создание POPUP окошек, и ему подобных!?!
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34933955
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chikanok wrote:
> Всем спасибо.
> Проблему я решил. Тем что перехватываю WM_PAINT но не чего не делаю!
> Работает и ладно.

Да, решение... Окно поди таскается, на двойной клик отзывается, на
alt+space тоже, если закрыть другим окошком, а потом открыть тоже красиво...

> Расскажите мне или где почитать скажите про создание POPUP окошек, и ему
> подобных!?!

В документации на CreateWindow. Или здесь:
http://www.frolov-lib.ru/books/bsp/v11/ch3.htm
Там и пример приводится. Не забудь там WS_CAPTION убрать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34934009
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 teras
Оно мне и не надо.
Окошко появляется на короткое время.
Спасибо.
...
Рейтинг: 0 / 0
WinAPI окно без заголовка
    #34934022
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее появляется не окошко,а только две кнопки.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / WinAPI окно без заголовка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]