TextLength(WindowTitel$) ?
TextLength(WindowTitel$) ?
Hallo,
hat jemand ´ne Ahnung, wie ich die aktuelle Länge [Pixel] des
aktuellen Fenster-Textes rauskriege ?
(such ´ne API, nicht PB4.x...)
Gruss Siggi
			
			
									
									hat jemand ´ne Ahnung, wie ich die aktuelle Länge [Pixel] des
aktuellen Fenster-Textes rauskriege ?
(such ´ne API, nicht PB4.x...)
Gruss Siggi
 
  
Re: TextLength(WindowTitel$) ?
API kann ich nicht anbieten, aber vielleicht funktioniert ja folgendes bei 
Deiner antiquierten PB-Version:
Grüße ... Kiffi
			
			
									
									Deiner antiquierten PB-Version:
Code: Alles auswählen
#myWindow = 0
If OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 100, 100, "123123123")
  
  StartDrawing(WindowOutput(#myWindow))
  myWidth  = TextWidth(GetWindowTitle(#myWindow))
  myHeight = TextHeight(GetWindowTitle(#myWindow))
  StopDrawing() 
  
  Debug myWidth
  Debug myHeight
  
  Repeat
  Until Event = #PB_Event_CloseWindow
  
EndIfGrüße ... Kiffi
a²+b²=mc²
						- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
So einfach ist es leider nicht Kiffi. Die Größenangaben die da rauskommen beziehen auf den Standardfont "System". Du musst den verwendeten Systemfont und Schriftgröße erst ermitteln und dann mit DrawingFont() setzen. Ich schraub grad mal was zusammen...
PS: Ein WaitWindowEvent() wäre echt dufte.
			
			
									
									PS: Ein WaitWindowEvent() wäre echt dufte.

Windows 10 Pro, 64-Bit / Outtakes | Derek
						gab's schonmal was zu (mehr oder weniger ungelöst): http://www.purebasic.fr/german/viewtopic.php?t=14366
der richtige font blieb das problem
			
			
									
									
						der richtige font blieb das problem
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
So gehts:
			
			
													Code: Alles auswählen
Enumeration
	#SF_CAPTION
	#SF_ICON
	#SF_MENU
	#SF_MESSAGE
	#SF_SMCAPTION
	#SF_STATUS
EndEnumeration
Procedure GetSystemFont(nIndex)
	Protected phkResult, lpValueName.s, lpcbData, *lplf.LOGFONT, hLibGDI, Result
	
	Select nIndex
		Case #SF_CAPTION : lpValueName = "CaptionFont"
		Case #SF_ICON : lpValueName = "IconFont"
		Case #SF_MENU : lpValueName = "MenuFont"
		Case #SF_MESSAGE : lpValueName = "MessageFont"
		Case #SF_SMCAPTION : lpValueName = "SmCaptionFont"
		Case #SF_STATUS : lpValueName = "StatusFont"
	EndSelect
	
	RegOpenKeyEx_(#HKEY_CURRENT_USER,"Control Panel\Desktop\WindowMetrics",0,#KEY_READ,@phkResult)		
	RegQueryValueEx_(phkResult,lpValueName,0,0,0,@lpcbData)
 	*lplf = AllocateMemory(lpcbData)
	RegQueryValueEx_(phkResult,lpValueName,0,0,*lplf,@lpcbData)
	RegCloseKey_(phkResult)
	
	hLibGDI = OpenLibrary(#PB_Any,"Gdi32.dll")
	Result = CallFunction(hLibGDI,"CreateFontIndirectW",*lplf)
	CloseLibrary(hLibGDI)
	
	FreeMemory(*lplf)
	ProcedureReturn Result
EndProcedure
OpenWindow(0,0,0,320,240,"untitled window",#WS_CAPTION | #WS_SYSMENU | 1)
 
hFntCaption = GetSystemFont(#SF_CAPTION)
Caption$ = GetWindowTitle(0)
StartDrawing(WindowOutput(0))
DrawingFont(hFntCaption)
Box(10,10,200,100,#Red)
DrawText(20,20,Caption$)
Debug TextWidth(Caption$)
Debug TextHeight(Caption$)
StopDrawing()
DeleteObject_(hFntCaption)
While WaitWindowEvent() ! 16 : Wend
					Zuletzt geändert von Fluid Byte am 16.01.2008 19:29, insgesamt 1-mal geändert.
									
			
									Windows 10 Pro, 64-Bit / Outtakes | Derek
						- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Kann ich nicht bestätigen. Wie hast du es denn nachgemessen?
[edit]
Unicode war aktiviert beim kompilieren. Das scheint die Ursache zu sein.
[edit2]
Der Font muss immer mit der Unicode-Varinate von CreateFontIndirect_() erstellt werden. Hab den Code entsprechend aktualisiert.
			
			
									
									[edit]
Unicode war aktiviert beim kompilieren. Das scheint die Ursache zu sein.
[edit2]
Der Font muss immer mit der Unicode-Varinate von CreateFontIndirect_() erstellt werden. Hab den Code entsprechend aktualisiert.
Windows 10 Pro, 64-Bit / Outtakes | Derek
						

 
 



