Что нового

Текст на мониторе без Gui

lexaSF

Новичок
Сообщения
182
Репутация
3
Код:
MsgBox(0,'Title','Text')

Чем не подходит?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
CreatiK
Код:
GUICtrlCreateLabel

если текст конечно статичный
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

$hGUI = GUICreate("Text Region", @DesktopWidth, @DesktopHeight, 200, (@DesktopHeight / 2) - 60, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor(0xFF0000)

$hRegion = _WinAPI_CreateTextRgn($hGUI, "Текст на мониторе без Gui", 80, "Arial", 800)
_WinAPI_SetWindowRgn($hGUI, $hRegion)

GUISetState()

Sleep(5000)
GUIDelete($hGUI)

Func _WinAPI_CreateTextRgn(ByRef $hWnd, $sText, $iHeight, $sFont = "Microsoft Sans Serif", $iWeight = 1000)
	Local Const $ANSI_CHARSET = 0, $OUT_CHARACTER_PRECIS = 2, $CLIP_DEFAULT_PRECIS = 0
	Local Const $PROOF_QUALITY = 2, $FIXED_PITCH = 1, $hRgn_XOR = 3
	Local $hGDI_DLL, $hDC, $hFont, $hOldFont, $hRgn1, $hRgn2, $tRC, $pRC
	
	If $sFont = "" Then
		$sFont = "Microsoft Sans Serif"
	EndIf
	
	If $iWeight = -1 Then
		$iWeight = 1000
	EndIf
	
	$hGDI_DLL = DllOpen("gdi32.dll")
	$hDC = DllCall("user32.dll", "int", "GetDC", "hwnd", $hWnd)
	
	$hFont = DllCall($hGDI_DLL, "hwnd", "CreateFont", "int", $iHeight, "int", 0, "int", 0, "int", 0, _
		"int", $iWeight, "int", 0, "int", 0, "int", 0, "int", $ANSI_CHARSET, "int", $OUT_CHARACTER_PRECIS, _
		"int", $CLIP_DEFAULT_PRECIS, "int", $PROOF_QUALITY, "int", $FIXED_PITCH, "str", $sFont)
	
	$hOldFont = DllCall($hGDI_DLL, "hwnd", "SelectObject", "int", $hDC[0], "hwnd", $hFont[0])
	
	DllCall($hGDI_DLL, "int", "BeginPath", "int", $hDC[0])
	DllCall($hGDI_DLL, "int", "TextOut", "int", $hDC[0], "int", 0, "int", 0, "str", $sText, "int", StringLen($sText))
	DllCall($hGDI_DLL, "int", "EndPath", "int", $hDC[0])
	$hRgn1 = DllCall($hGDI_DLL, "hwnd", "PathToRegion", "int", $hDC[0])
	$tRC = DllStructCreate("int;int;int;int")
	$pRC = DllStructGetPtr($tRC)
	DllCall($hGDI_DLL, "int", "GetRgnBox", "hwnd", $hRgn1[0], "ptr", $pRC)
	$hRgn2 = DllCall($hGDI_DLL, "hwnd", "CreateRectRgnIndirect", "ptr", $pRC)
	DllCall($hGDI_DLL, "int", "CombineRgn", "hwnd", $hRgn2[0], "hwnd", $hRgn2[0], "hwnd", $hRgn1[0], "int", $hRgn_XOR)
	DllCall($hGDI_DLL, "int", "DeleteObject", "hwnd", $hRgn1[0])
	DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $hWnd, "int", $hDC[0])
	DllCall($hGDI_DLL, "int", "SelectObject", "int", $hDC[0], "hwnd", $hOldFont[0])
	DllClose($hGDI_DLL)
	
	Return $hRgn2[0]
EndFunc
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
До кучи.

Код:
#Include <WinAPI.au3>
#Include <WindowsConstants.au3>

$hForm = GUICreate('', 222, 96, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
GUISetBkColor(0xABABAB)
GUICtrlCreateLabel('Текст', 5, 0, 222, 96)
GUICtrlSetFont(-1, 56, 800, 0, 'Tahoma', 3)
GUICtrlSetColor(-1, 0xFF0000)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 0, $LWA_COLORKEY)
GUISetState()

Do
Until GUIGetMsg() = -3


P.S

А по хорошему, нужно воспользоваться GDI+...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
CreatoR
У меня в Вашем примере отображаются кракозябры вместо русских букв. На дурака поменял $ANSI_CHARSET = 1 и стало нормально отображаться. Этот параметр зависит от языка системы или еще от чего? (У меня Windows XP SP 3 русская, gdi32.dll версия 5.1.2600.5698)
 

Rjevsky

Новичок
Сообщения
102
Репутация
4
Подскажите как сделать текст из примеров Yashied или CreatoR перемещаемым с помощью мыши?
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
361
Rjevsky
Можно так, добавив стиль к надписи:
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>

Global $hForm = GUICreate('', 272, 96, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
GUISetBkColor(0xABABAB)
GUICtrlCreateLabel('Текст', 5, 0, 272, 96, 0, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, 56, 800, 0, 'Tahoma', 3)
GUICtrlSetColor(-1, 0xFF0000)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 0, $LWA_COLORKEY)

GUISetState()

Do
Until GUIGetMsg() = -3
 
Верх