Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] GUIConstants и GUICreate

Ответить
Настройки темы
[решено] GUIConstants и GUICreate

Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Может вопросы и простые но мне нужно узнать на них ответ, ибо сам я немогу найти решение.

1. При создании GUI окна пример:
Код: Выделить весь код
#include <GUIConstants.au3>
GUICreate ( "title" , 100 , 100, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_EX_APPWINDOW))
.......
Выдаёт ошибку, комбинации стилей любые не только эти.

Заработало только вот так :
Код: Выделить весь код
#include <GUIConstants.au3>
GUICreate ( "title" , 100 , 100, -1, -1, BitOr(0x00800000, 0x00000008))
.......
Файлы GUIConstants.au3 и GUIConstantsEx.au3 - на своём месте C:\Program Files\AutoIt3\Include\

2. Как можно создать GUI окно (GUICreate), что бы оно растягивалось взависимости от количества текста в заголовке окна?
3. Как можно создать GUI окно (GUICreate), что бы оно не отображалось в панели задачь ?

Отправлено: 20:07, 08-05-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
Выдаёт ошибку, комбинации стилей любые не только эти »
Эти константы объявлены в WindowsConstants.au3.

Цитата FlatX007:
Как можно создать GUI окно (GUICreate), что бы оно растягивалось взависимости от количества текста в заголовке окна? »
Примерно так:

Код: Выделить весь код
#include <GUIConstantsEx.au3>

$sApp_Title = 'Some Title'
;$sApp_Title = 'Or some long long long long long long long title'

$iGUI_Width = (StringLen($sApp_Title) * 5) + 130

$GUI = GUICreate($sApp_Title, $iGUI_Width, 320)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Цитата FlatX007:
Как можно создать GUI окно (GUICreate), что бы оно не отображалось в панели задачь ? »
Только через стиль $WS_EX_TOOLWINDOW.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:54, 08-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Примерно так: »
Не неполучается ... у разных символов разная длинна (/\":<>) - буквы то нормально умещаются
я так тоже делал как ты предложил ... если былобы так просто то я бы неспрашивал

я так полагаю надо отделить буквы и цифры от символов через StringRegExpReplace - но я к сожелению неумею пользоватся этой функцией .(количество не буквенных и не циферных символов известно например 10).

Я делал так : определял длинну строки, результат умножал на 10 потом из результата вычитал ранее извесное число небуквенных и нециферных символов ... это и будет ширина окна - примернооооо "точно" получалось...

что можно сделать ?

Отправлено: 23:05, 08-05-2009 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
Не неполучается ... у разных символов разная длинна (/\":<>) »
Пример где оно не получается.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:12, 08-05-2009 | #4


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Вобщем выдрал из скрипта часть кода ...

Код: Выделить весь код
#include <GUIConstantsEx.au3>

$StatSetting_ini = @ScriptDir & '\' & "StatSetting.ini"

Global $rD1 = 0, $rD2 = 0, $rD3 = 0, $rD4 = 0, $rD5 = 0, $rD1 = 0, $rD6 = 0

$rD1 = IniRead($StatSetting_ini, "Длинна строки", "Баланс", 0)
$rD2 = IniRead($StatSetting_ini, "Длинна строки", "Израсходовано", 0)
$rD3 = IniRead($StatSetting_ini, "Длинна строки", "Предоплаченны", 0)
$rD4 = IniRead($StatSetting_ini, "Длинна строки", "Осталось", 0)
$rD5 = IniRead($StatSetting_ini, "Длинна строки", "Время", 0)
$rD6 = IniRead($StatSetting_ini, "Длинна строки", "Разделитель", 0)

$Sparam = ($rD1 & $rD2 & $rD3 & $rD4 & $rD5 & $rD6)
$iGUI_Width = (StringLen($Sparam) * 5) + 130
$Form2 = GUICreate($Sparam, $iGUI_Width, 10, 0, 0)
GUISetState(@SW_SHOW)

$f = 1
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

        Case $GUI_EVENT_CLOSE
Exit

    EndSwitch
WEnd
StatSetting.ini
Код: Выделить весь код
[Длинна строки]
Баланс= # Баланс : 90.79руб. #                                                                  
Израсходовано= # Израсх : 60.93 (Мб) #
Предоплаченны= # Предопл : 200 (Мб) #
Осталось= # Ост : 139.07 (Мб) #
Время= # Обновл : 23:54:15 (23:54:15) #
Разделитель=#

Отправлено: 00:00, 09-05-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <GUIConstantsEx.au3>

$StatSetting_ini = @ScriptDir & '\' & "StatSetting.ini"

Global $rD1 = 0, $rD2 = 0, $rD3 = 0, $rD4 = 0, $rD5 = 0, $rD1 = 0, $rD6 = 0

$rD1 = IniRead($StatSetting_ini, "Длинна строки", "Баланс", 0)
$rD2 = IniRead($StatSetting_ini, "Длинна строки", "Израсходовано", 0)
$rD3 = IniRead($StatSetting_ini, "Длинна строки", "Предоплаченны", 0)
$rD4 = IniRead($StatSetting_ini, "Длинна строки", "Осталось", 0)
$rD5 = IniRead($StatSetting_ini, "Длинна строки", "Время", 0)
$rD6 = IniRead($StatSetting_ini, "Длинна строки", "Разделитель", 0)

$sTitle = _
    "# Баланс : 90.79руб. ## Израсх : 60.93 (Мб) ## Предопл : 200 (Мб) ##" & _
    "Ост : 139.07 (Мб) ## Обновл : 23:54:15 (23:54:15) ##"

;$sTitle = $rD1 & $rD2 & $rD3 & $rD4 & $rD5 & $rD6

$iGUI_Width = _GUIGetTitleWidth($sTitle)

$Form2 = GUICreate($sTitle, $iGUI_Width, 10, 0, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _GUIGetTitleWidth($sTitle)
    Local $aChars = StringSplit($sTitle, "")
    Local $iLength = 0

    For $i = 1 To $aChars[0]
        If StringIsUpper($aChars[$i]) Or StringRegExp($aChars[$i], "[~!@#$%^&*\(\){}\[\]:;'""<>/\\]") Then
            $iLength += 1.5
        Else
            $iLength += 1
        EndIf
    Next

    Return (Int($iLength) * 5) + 120
EndFunc
Можно тюнингом заниматься долго, всё ровно это неверное решение с программной точки зрения ...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 11:46, 09-05-2009 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Вообщем вот грубая наброска того, как оно (вроде) должно быть:

Код: Выделить весь код
#include <GUIConstantsEx.au3>

$StatSetting_ini = @ScriptDir & '\' & "StatSetting.ini"

Global $rD1 = 0, $rD2 = 0, $rD3 = 0, $rD4 = 0, $rD5 = 0, $rD1 = 0, $rD6 = 0

$rD1 = IniRead($StatSetting_ini, "Длинна строки", "Баланс", 0)
$rD2 = IniRead($StatSetting_ini, "Длинна строки", "Израсходовано", 0)
$rD3 = IniRead($StatSetting_ini, "Длинна строки", "Предоплаченны", 0)
$rD4 = IniRead($StatSetting_ini, "Длинна строки", "Осталось", 0)
$rD5 = IniRead($StatSetting_ini, "Длинна строки", "Время", 0)
$rD6 = IniRead($StatSetting_ini, "Длинна строки", "Разделитель", 0)

$sTitle = _
    "# Баланс : 90.79руб. ## Израсх : 60.93 (Мб) ## Предопл : 200 (Мб) ##" & _
    "Ост : 139.07 (Мб) ## Обновл : 23:54:15 (23:54:15) ##"

;$sTitle = $rD1 & $rD2 & $rD3 & $rD4 & $rD5 & $rD6

$hForm = GUICreate($sTitle, -1, 10, 0, 0)

$iGUI_Width = _GUIGetTitleWidthEx($hForm, $sTitle)
WinMove($hForm, "", 0, 0, $iGUI_Width[0])

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _GUIGetTitleWidthEx($hWnd, $s_Data)
    Local Const $WM_GETFONT = 0x31

    Local $hDC = DLLCall("user32.dll", "int", "GetDC", "hwnd", $hWnd)
    Local $hFont = DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_GETFONT, "int", 0, "int", 0)

    Local $hOld = DllCall("gdi32.dll", "Hwnd", "SelectObject", "int", $hDC[0], "ptr", $hFont[0])
    Local $iStruct_size = DllStructCreate("int;int")

    DllCall("gdi32.dll", "int", "GetTextExtentPoint32", _
        "int", $hDC[0], "str", $s_Data, "long", _StringGetProperLen($s_Data), "ptr", DllStructGetPtr($iStruct_size))

    $hOld = DllCall("gdi32.dll", "Hwnd", "SelectObject", "int", $hDC[0], "ptr", $hOld)

    Local $a_RetLen[2] = [DllStructGetData($iStruct_size, 1), DllStructGetData($iStruct_size, 2)]

    DLLCall("user32.dll","int", "ReleaseDC", "hwnd", $hWnd, "int", $hDC[0])
    $iStruct_size = 0

    Return $a_RetLen
EndFunc

Func _StringGetProperLen($sString)
    ;Here we increese the UPPER letters by 0.5 (length of one 'A' will be equel 1.5, not 1).
    StringRegExpReplace($sString, "[A-ZА-Я]", "")

    Local $iExtended = @extended ;The number of UPPER case letters
    Local $iLength = Ceiling((StringLen($sString) - $iExtended) + ($iExtended + ($iExtended * 0.5)))

    Switch $iLength
        Case 1 To 10
            $iLength += 30
        Case 11 To 20
            $iLength += 25
        Case 21 To 40
            $iLength += 20
        Case 41 To 90
            $iLength += 15
    EndSwitch

    Return $iLength
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 09-05-2009 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] GUIConstants и GUICreate

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Можно ли поставить фоновую катинку при создании окна GuiCreate b3h4ppy AutoIt 5 29-05-2009 13:46




 
Переход