WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Samples

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Resize the Dialog Based on Length of Text and Font

 Keywords: Resize Size Dialog Message Box Length Character Text Font

Developers: ferchl, deanad and tonyd
Date: July 7th, 2008
AddExtender("wwctl44i.dll")
MSG_INIT = 0
RET_DO_DEFAULT = -1

#DefineSubRoutine MainDlgProc(MainDlg_Handle,MainDlg_Message,MainDlg_ID,MainDlg_EventInfo,rsvd)
Switch MainDlg_Message
Case MSG_INIT
   ControlHandle = cWndbyid(MainDlg_Handle,102)
   WM_GETFONT = 49
   hFont = SendMessageA(ControlHandle,WM_GETFONT,0,0)

   ; Use dialog's DC
   HDC = DllCall(StrCat(DirWindows(1),"USER32.DLL"),long:"GetDC",long:MainDlg_Handle)

   ; Save current font
   hOldFont = DllCall(StrCat(DirWindows(1),"GDI32.DLL"),long:"SelectObject",long:HDC,long:hFont)
   lpsize = BinaryAlloc(8)
   result = DllCall(StrCat(DirWindows(1),"GDI32.DLL"),long:"GetTextExtentPoint32A",long:HDC,lpstr:Text,long:TextLen,lpbinary:lpsize)
   cx = BinaryPeek4(lpsize,0)
   cy = BinaryPeek4(lpsize,4)

   ; Restore previous font
   DllCall(StrCat(DirWindows(1),"GDI32.DLL"),long:"SelectObject",long:HDC,long: hOldFont)
   DllCall(StrCat(DirWindows(1),"USER32.DLL"),long:"ReleaseDC",long:MainDlg_Handle,long:hdc)
   Pos = WinPlaceGet(@NORMAL,Title)
   A = ItemExtract(1,Pos," ")
   B = ItemExtract(2,Pos," ")

   ; Use dialog frame width.
   C = Int(cx * 1.0 / WinMetrics(0) * 1000) + A + (WinMetrics(7) * 2)
   D = ItemExtract(4,Pos," ")
   WinPlaceSet(@NORMAL,Title,A:" ":B:" ":C:" ":D)
   Return RET_DO_DEFAULT
EndSwitch
#EndSubRoutine

#DefineSubRoutine MainDlg(Text,Font)
Title = "Test:"
TextLen = StrCharCount(Text)
MainDlgFormat = `WWWDLGED,6.1`
MainDlgCaption = Title
MainDlgX = -1
MainDlgY = -1
MainDlgWidth = 200
MainDlgHeight = 70
MainDlgNumControls = 003
MainDlgProcedure = `MainDlgProc`
MainDlgFont = `DEFAULT`
MainDlgTextColor = `DEFAULT`
MainDlgBackground = `DEFAULT,DEFAULT`
MainDlgConfig = 0
MainDlg001 = `005,050,036,011,PUSHBUTTON,DEFAULT,"OK",1,1,32,DEFAULT,DEFAULT,DEFAULT`
MainDlg002 = `050,050,036,011,PUSHBUTTON,DEFAULT,"Cancel",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MainDlg003 = `0,015,9999,011,VARYTEXT,Text,"",DEFAULT,3,DEFAULT,`:Font:`,"0|0|0",DEFAULT`
ButtonPushed = Dialog("MainDlg")
#EndSubRoutine

MainDlg("iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii","Arial|7373|40|34")
MainDlg("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW","Arial|7373|40|34")
MainDlg("iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii","Arial Black|8192|70|34")
MainDlg("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW","Arial Black|8192|70|34")

Article ID:   W17784
Filename:   Resize the Dialog Based on Length of Text and Font.txt
File Created: 2008:07:07:08:47:26
Last Updated: 2008:07:07:08:47:26