Что нового

Как изменить размер окна, выводимого посредством MsgBox

blacksergo

Новичок
Сообщения
20
Репутация
1
Подскажите, как с помощью функции MsgBox вывести окно нужного размера, а то по-умолчанию в выводимом окне, текст переносится не контролируемым образом. То есть мне нужно подстроить ширину и длину окна под выводимый текст.
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
qsort сказал(а):
[quote author=qsort]
Что значит "неконтролируемым образом"?
В выводимом тексте нужно указывать, скажем, перенос строки @CRLF.
Если текст большой, то его перед использованием в MsgBox (зачем, пока не понял!), надо нужным образом отформатировать. И все...

Текст формируется автоматически (например, полный путь к ключу (параметру) в реестре) и мне неизвестна его длина.
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
С простым текстом понятно, а вот такого вида: HKEY_CLASSES_ROOT\exefile\shell\open\command\IsolatedCommand = "%1" %*, чтобы не получились переносы в ненужном месте, а все было в одну строку, как быть?
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
В Вашем примере знак процента перенесся на другую строку, а надо чтобы весь текст был на одной строке
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
А чего учить, вот:



Добавлено:
Сообщение автоматически объединено:

Могу только предположить, что у нас разные версии Windows. У меня Windows 7.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Попробуйте все пробелы в строке заменить на ChrW(160).
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Да, в XP все отображается в одну строку, а в Windows 7 длинные строки переносятся.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
qsort сказал(а):
StringInStr($path_key, Chrw(160)) в "хрюшке" выдает ноль.
Может, действительно, в семерке неразрывный пробел, а MsgBox его не любит? Тогда:
StringRegExpReplace($path_key, Chrw(160), Chrw(20))

Код:
StringReplace($path_key, ' ', Chr(160))
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
Так и эта замена ничего не дает: MsgBox(0, "", StringReplace($path_key, ' ', Chr(160)))
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
71 символ


Добавлено:
Сообщение автоматически объединено:
 

e-Mike

Новичок
Сообщения
15
Репутация
1
Для сравнения, у меня в отображенном мсгбоксе уложилось 120 символов, а при 150 уже перенесло полстроки. Думаю это зависит только от разрешения экрана, от которого рассчитывается максимальный размер мсгбокса (например полэкрана в ширину), у меня экран 1280х1024.
За несколько лет непостоянного кодинга на Автоите я усвоил одну истину - если окно создано не мной (GUICreate), то не мне его и изменять. Либо нужно писать свое окно (GUICreate), либо соглашаться с теми свойствами, которые назначил окну Автоит.
 

dronet

Знающий
Сообщения
46
Репутация
8
Попробуй это
Код:
; MessageBox.
$sTitle		= 'Some title'
$sText		= _
'000000000000000000000000000000000000000000000000000000000000000' & _
'00000000000000000000000000000000000000000000000000000100000000'  ;У меня 121 из 126
$aResult	= DllCall('user32.dll', 'int', 'MessageBox', 'hwnd', 0, 'str', $sText&@CRLF&'        ', 'str', $sTitle, 'int', 52)

ConsoleWrite($aResult[0] & @CRLF) ; 6-ДА .. 7=НЕТ



У меня 121 из 126 На Хрюше У меня не стоит 7ка так бы сам проверил



Добавлено:
Сообщение автоматически объединено:

Вот своими средствами пример Автор AZJIO
Код:
$Gui = GUICreate('My program',  420, 250, -1, 30)

$MsgFile = GUICtrlCreateButton("Button", 20, 20, 90, 30)
GUISetState ()

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = $MsgFile
				_MsgFile()
			Case $msg = -3
				Exit
		EndSelect
	WEnd

Func _MsgFile()
	$GuiPos = WinGetPos($Gui)
	GUISetState(@SW_DISABLE, $Gui)
	
    $Gui1 = GUICreate('Сообщение', 200, 70,$GuiPos[0]+110, $GuiPos[1]+100, -1, 0x00000080,$Gui)
	GUICtrlCreateLabel('Что будем делать сейчас?', 20, 10, 180, 23)
	$EditBut=GUICtrlCreateButton('Редактор', 10, 40, 80, 22)
	$StrBut=GUICtrlCreateButton ('Калькулятор', 100, 40, 80, 22)
	GUISetState(@SW_SHOW, $Gui1)
$msg = $Gui1
	While 1
	  $msg = GUIGetMsg()
	  Select
		Case $msg = $EditBut
			Run('Notepad.exe')
		Case $msg = $StrBut
			ShellExecute('Calc.exe')
		Case $msg = -3
			$msg = $Gui
			GUISetState(@SW_ENABLE, $Gui)
			GUIDelete($Gui1)
			ExitLoop
		EndSelect
    WEnd
EndFunc
 
Верх