Автор Тема: Как задать стиль окну с широкой рамкой, с фиксированым размером  (Прочитано 1058 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн winix [?]

  • Сообщений: 79
  • Репутация: -1
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
В Windows у всех программ широкая рамка, исключение только настройка подстветки в notepad++ , хотя она к ним отношения не имеет и скорее всего кривой код функции. (хотя подозреваю это невозможность самой винды)

В программе калькулятор тоже есть широкая рамка, но кнопка развернуть недоступна и размер фиксированый.

Тут предлагают стиль $WS_OVERLAPPEDWINDOW объединяющий  $WS_OVERLAPPED, $WS_CAPTION, $WS_SYSMENU, $WS_THICKFRAME, $WS_MINIMIZEBOX, и $WS_MAXIMIZEBOX.
Хотя окно главное, $WS_POPUP вообще ничего не даёт, наверно он ненужен.

Убираю из этого $WS_MAXIMIZEBOX и получается
Код: AutoIt [Выделить]
$WS_CAPTION, $WS_SYSMENU, $WS_SIZEBOX,$WS_POPUP, $WS_MINIMIZEBOX

в данном случае $WS_SYSMENU тоже ничего не делает.
Рамка получается широкая, но меняет размер, но если нет $WS_SIZEBOX или $WS_THICKFRAME она становится опять тонкой.

Мне что надо както потом надо блокировать смену размера окна ?

Код: AutoIt [Выделить]
$hGUI = GUICreate($NameGUI & " " & $version & $nGUI,$WWidth,$WHeight,-1 ,-1, BitOR( $WS_CAPTION, $WS_SYSMENU, $WS_SIZEBOX,$WS_POPUP, $WS_MINIMIZEBOX))
GUICtrlSetResizing ( -1, BitOR($GUI_DOCKWIDTH,$GUI_DOCKHEIGHT) )

это не работает

AutoIt Window Info (x64) с калькулятора выдаёт такое, но толку с этого нет, просто на первой вкладке в окне ничего не прогружается если не зайти на другие, но стиль всё равно тонкий. Похоже дело не в стиле.
Title:   Калькулятор
Class:   CalcFrame
Style:   0x14CA0000
ExStyle:   0x00000100
« Последнее редактирование: Январь 13, 2018, 18:28:45 от winix »

Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3813
  • Репутация: 1006
    • Награды
  • Версия AutoIt: 3.3.14.0
Стиль по умолчанию разве не то, что вам нужно?
Код: AutoIt [Выделить]

Оффлайн winix [?]

  • Сообщений: 79

  • Автор темы
  • Репутация: -1
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
Вот как оно на самом деле

Оно всяко ровнее чем у этих(не смотря что стиль другой), но неужто широкую рамку никак.
Вот с одним этим стилем она широкая, но меняет размер
« Последнее редактирование: Январь 14, 2018, 00:19:47 от winix »

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 791
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Автор имел в виду, что если применить стиль окна "$WS_THICKFRAME" то помимо возможности изменения размеров окна изменяется (становится больше) верхняя рамка окна
Код: AutoIt [Выделить]
#include <windowsconstants.au3>
GUICreate("",Default,Default,Default,Default,$WS_THICKFRAME)
GUISetState()
Do
Until GUIGetMsg() = -3

ему необходима такая рамка, но без возможности изменения раззмеров окна.

Упс, пока писал ответ автор и сам всё объяснил :)

Русское сообщество AutoIt


Помечен как лучший ответ пользователем winix Отправлен Январь 15, 2018, 00:36:43

Онлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1420
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... но без возможности изменения раззмеров окна...
Ну так уберем эту возможность
Код: AutoIt [Выделить]
#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hGui = GUICreate('', 400, 100, -1, -1, $WS_OVERLAPPEDWINDOW)
GUISetState()

_GUICtrlMenu_DeleteMenu(_GUICtrlMenu_GetSystemMenu($hGui), 2)
GUIRegisterMsg($WM_SETCURSOR, 'WM_SETCURSOR')

Do
Until GUIGetMsg() = -3

Func WM_SETCURSOR($hWnd, $Msg, $wParam, $lParam)
    If $wParam = $hGui Then
        Switch BitAND($lParam, 0xFFFF) ; _WinAPI_LoWord
            Case 10 To 18
                GUISetCursor(2)
        EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc

Этот костыль имеет смысл только на Win7 и ОС старее.

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 791
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Этот костыль имеет смысл только на Win7 и ОС старее.
На Win10х64 работает !

Онлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1420
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic
... На Win10х64 работает!
На ней родимой и писал, только чтобы увидеть "широкую рамку" пришлось включать классическую тему оформления.

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3813
  • Репутация: 1006
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o  [?]
Цитировать
ему необходима такая рамка, но без возможности изменения раззмеров окна
Так?
Код: AutoIt [Выделить]
#include <windowsconstants.au3>
GUICreate("",Default,Default,Default,Default,BitXOR($WS_OVERLAPPEDWINDOW, $WS_THICKFRAME))
GUISetState()
Do
Until GUIGetMsg() = -3


Русское сообщество AutoIt


Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 791
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Так?
Нет, в Вашем примере рамка узкая.

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3813
  • Репутация: 1006
    • Награды
  • Версия AutoIt: 3.3.14.0
Да, действительно, в упрощённой теме рамка узкая :(
Ну, значит используем код Alofa :beer:

Онлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1420
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic
... Ну, значит используем код Alofa
Он вам ничего не напоминает?

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3813
  • Репутация: 1006
    • Награды
  • Версия AutoIt: 3.3.14.0
OffTopicAlofa  [?]
Цитировать
ничего не напоминает?
Конечно напоминает. Но я ведь тоже этому научился у других:
Неперемещаемое(прикрепленное) окно GUI
Выключение кнопки "Close"
А для конкретной темы обычно так: кто знаниями поделился, того и код ;)

Оффлайн winix [?]

  • Сообщений: 79

  • Автор темы
  • Репутация: -1
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
Видимо только костыль подойдёт, но учитывая что эти виндовые функции очень нестабильные, сделаю возможность его отключать.
Хотя мог бы и напрягаться, видимо проблема в другом
« Последнее редактирование: Январь 15, 2018, 00:36:15 от winix »

Онлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1420
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
winix
Это вы сейчас сам с собой поговорили?


Добавлено: Январь 15, 2018, 00:57:31
Рамку, какую вам нужно вы можете сотворить и при помощи элементов GUI окна.
В Windows же широкие и узкие рамки как раз и предназначены для того чтобы визуально различать окна с возможностью изменения размера и без нее.


Добавлено: Январь 15, 2018, 01:05:26
OffTopic
... скорее всего кривой код функции...
И перестаньте пожалуйста делать поспешные выводы. Это я не только о этой фразе, а вообще о всех ваших темах.
Поверхностное изучение дает поверхностный результат.

P.s: уж извините не удержался.
« Последнее редактирование: Январь 15, 2018, 01:07:37 от Alofa »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
4747 Просмотров
Последний ответ Июнь 23, 2013, 16:12:57
от AZJIO
11 Ответов
9229 Просмотров
Последний ответ Декабрь 06, 2009, 16:10:42
от mini
6 Ответов
3128 Просмотров
Последний ответ Июль 17, 2011, 23:47:45
от Ranos1982
5 Ответов
4949 Просмотров
Последний ответ Октябрь 07, 2011, 20:12:38
от Zaramot
6 Ответов
3283 Просмотров
Последний ответ Июль 21, 2012, 21:14:29
от CreatoR
4 Ответов
2771 Просмотров
Последний ответ Июль 26, 2012, 19:47:22
от vedmag_85
4 Ответов
4029 Просмотров
Последний ответ Сентябрь 28, 2012, 06:02:05
от Yashied
5 Ответов
3579 Просмотров
Последний ответ Май 22, 2013, 23:44:35
от WSWR
1 Ответов
1354 Просмотров
Последний ответ Ноябрь 20, 2013, 12:41:56
от InnI
2 Ответов
1326 Просмотров
Последний ответ Июль 15, 2015, 00:24:38
от Tapok