|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] GUIConstants и GUICreate |
|
[решено] GUIConstants и GUICreate
|
Ветеран Сообщения: 553 |
Профиль | Отправить 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)) ....... 2. Как можно создать GUI окно (GUICreate), что бы оно растягивалось взависимости от количества текста в заголовке окна? 3. Как можно создать GUI окно (GUICreate), что бы оно не отображалось в панели задачь ? |
|
Отправлено: 20:07, 08-05-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
Цитата FlatX007:
#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:
|
|||
------- Отправлено: 20:54, 08-05-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
я так тоже делал как ты предложил ... если былобы так просто то я бы неспрашивал я так полагаю надо отделить буквы и цифры от символов через StringRegExpReplace - но я к сожелению неумею пользоватся этой функцией .(количество не буквенных и не циферных символов известно например 10). Я делал так : определял длинну строки, результат умножал на 10 потом из результата вычитал ранее извесное число небуквенных и нециферных символов ... это и будет ширина окна - примернооооо "точно" получалось... что можно сделать ? |
|
Отправлено: 23:05, 08-05-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
|
|
------- Отправлено: 23:12, 08-05-2009 | #4 |
Ветеран Сообщения: 553
|
Профиль | Отправить 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 |
|
Отправлено: 00:00, 09-05-2009 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Отправлено: 11:46, 09-05-2009 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Отправлено: 12:41, 09-05-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Можно ли поставить фоновую катинку при создании окна GuiCreate | b3h4ppy | AutoIt | 5 | 29-05-2009 13:46 |
|