Создать окно без заголовка
Поиск выдаёт
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
но это для Делфи. Под С++
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) & !(WS_CAPTION)); не катит - заголовок остается, кишки лезут наружу, перерисовка не работает и после сворачивания не востанавливается.
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) & (~WS_CAPTION));
Цитата:
Originally posted by _const_
! - операция ЛОГИЧЕСКАЯ, бит-инверсия - ~. Таким образом
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) & (~WS_CAPTION));
! - операция ЛОГИЧЕСКАЯ, бит-инверсия - ~. Таким образом
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) & (~WS_CAPTION));
Интерестно, а как убрать и border?
Цитата:
Originally posted by Lexogen
Интерестно, а как убрать и border?
Интерестно, а как убрать и border?
Создать окно со стилем WS_POPUP | WS_VISIBLE. Вроде в MSDN это описано.
Если кратко, то нужно поставить заглушки для всех WM_NC...-сообщений относящихся к прорисовке, чтобы Винды в пустую не парились, а самое главное поставить заглушку на WM_NCCALCSIZE. Сделав последнее, вы без единого байта трудоемкого кода натянете клиентскую область на все окно, где можно изобразить и свои бордюры, и свой заголовок, ну и все остальное естественно тоже. Только учтите, чтобы ХэПышка не съедала верхние углы вашего окна, нужно создать и закрепить за окном прямоугольный регион во время создания окошка и переопределять его при каждом изменении размеров окна, если такие изменения у вас могут произойти.
Окошки с атрибутом WS_POPUP Винды пытаются кэшировать, поэтому их не следует использовать в качестве основных окон приложений.