moczymorda Posted December 28, 2008 Share Posted December 28, 2008 (edited) This is sample of my script: expandcollapse popup#include <GUIConstants.au3> #include <array.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Char count", 703, 500, 193, 115) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2 = GUICtrlCreateGroup("Load file", 8, 15, 250, 81) $Path = GUICtrlCreateInput("", 16, 47, 145, 21) $Browse = GUICtrlCreateButton("Browse", 168, 47, 81, 22, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit EndSwitch If $msg = $Browse Then $file = FileOpenDialog("open","C:\","(*.txt)",3,"",$Form1) If @error Then ContinueLoop GUICtrlSetData($Path, $file) $PathSv = GUICtrlRead($Path) Local $aAlph = StringSplit('abcdefghijklmnopqrstuvwxyz', '') Local $aArray[UBound($aAlph)], $sString = FileRead($PathSv) For $iCC = 1 To UBound($aAlph) - 1 StringReplace($sString, $aAlph[$iCC], '') $aArray[$iCC] = @extended GUICtrlCreateGraphic(23, 91+$iCC*15, $aArray[$iCC], 10) GUICtrlSetBkColor(-1, 0xffffff) GUICtrlSetColor(-1, 0) GUICtrlCreateLabel($aAlph[$iCC], 10, 89+$iCC*15, 10, 11) GUICtrlCreateLabel($aArray[$iCC], 23+$aArray[$iCC]+5, 89+$iCC*15, 36, 11) Next EndIf WEnd This script count A B C char from *.txt file and show as graph. I have questions: 2. How reset graph when i need load another file. Thx for any help. Edited December 28, 2008 by moczymorda Link to comment Share on other sites More sharing options...
Zedna Posted December 29, 2008 Share Posted December 29, 2008 (edited) Using WM_PAINT and GDI drawing: expandcollapse popup#include <GUIConstants.au3>#include <array.au3> #include <WinAPI.au3> Global Const $TRANSPARENT = 1 Global $aAlph = StringSplit('abcdefghijklmnopqrstuvwxyz', '') Global $aArray[UBound($aAlph)] $gdi_dll = DllOpen("gdi32.dll") #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Char count", 703, 500, 193, 115) $pic = GUICtrlCreatePic("",53,91,700,500) ;~ GuiCtrlSetState($pic,$GUI_DISABLE) $pic_hWnd = ControlGetHandle($Form1,"",$pic) $hdc = _WinAPI_GetDC($pic_hWnd) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2 = GUICtrlCreateGroup("Load file", 8, 15, 250, 81) $Path = GUICtrlCreateInput("", 16, 47, 145, 21) $Browse = GUICtrlCreateButton("Browse", 168, 47, 81, 22, 0) GUISetState(@SW_SHOW) #EndRegion ### START Koda GUI section ### Form= GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT") While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit EndSwitch If $msg = $Browse Then $file = FileOpenDialog("open", "C:\", "(*.txt)", 3, "", $Form1) If @error Then ContinueLoop GUICtrlSetData($Path, $file) $PathSv = GUICtrlRead($Path) $sString = FileRead($PathSv) For $iCC = 1 To UBound($aAlph) - 1 StringReplace($sString, $aAlph[$iCC], '') $aArray[$iCC] = @extended ;~ GUICtrlCreateGraphic(23, 91 + $iCC * 15, $aArray[$iCC], 10) ;~ GUICtrlSetBkColor(-1, 0xffffff) ;~ GUICtrlSetColor(-1, 0) ;~ GUICtrlCreateLabel($aAlph[$iCC], 10, 89 + $iCC * 15, 10, 11) ;~ GUICtrlCreateLabel($aArray[$iCC], 23 + $aArray[$iCC] + 5, 89 + $iCC * 15, 36, 11) Next _WinAPI_InvalidateRect($Form1, 0, 1) ; Erase=true EndIf WEnd _WinAPI_ReleaseDC($pic_hWnd, $hDC) Exit Func DrawGraph() ; clear background $tRect = _WinAPI_GetClientRect($pic_hWnd) _WinAPI_FillRect($hdc, DllStructGetPtr($tRect), _WinAPI_GetSysColorBrush($COLOR_BTNFACE)) $size = 5 $color = 0x0000FF _WinAPI_SetBkMode($hDC, $TRANSPARENT) $pen = DLLCall($gdi_dll,"int","CreatePen","int",0,"int",$size,"int",$color) $obj_orig = DLLCall($gdi_dll,"int","SelectObject","int",$hdc,"int",$pen[0]) For $iCC = 1 To UBound($aAlph) - 1 DLLCall($gdi_dll,"int","MoveToEx","int",$hdc,"int",23,"int",$iCC * 15 + 10,"int",0) DLLCall($gdi_dll,"int","LineTo","int",$hdc,"int",23 + $aArray[$iCC],"int",$iCC * 15 + 10) ;one horizontal line DllStructSetData($tRect, "Left",0) DllStructSetData($tRect, "Right",23 + $aArray[$iCC] + 5 + 25) DllStructSetData($tRect, "Top",$iCC * 15) DllStructSetData($tRect, "Bottom",$iCC * 15 + 20) _WinAPI_DrawText($hdc, $aAlph[$iCC], $tRect, BitOR($DT_SINGLELINE, $DT_LEFT, $DT_VCENTER)) _WinAPI_DrawText($hdc, $aArray[$iCC], $tRect, BitOR($DT_SINGLELINE, $DT_RIGHT, $DT_VCENTER)) Next DLLCall($gdi_dll,"int","SelectObject","int",$hdc,"int",$obj_orig[0]) DLLCall($gdi_dll,"int","DeleteObject","int",$pen[0]) EndFunc Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam) _WinAPI_RedrawWindow($pic_hWnd, 0, 0, $RDW_UPDATENOW) ; force redraw of pic (Rect=0 Region=0) DrawGraph() ; then draw my stuff on top _WinAPI_RedrawWindow($pic_hWnd, 0, 0, $RDW_VALIDATE) ; then force no-redraw of pic Return $GUI_RUNDEFMSG EndFunc Func _WinAPI_SetBkMode($hDC, $iBkMode) Local $aResult = DllCall( "gdi32.dll", "int", "SetBkMode", "ptr", $hDC, "int", $iBkMode) If @error Then Return SetError(@error, 0, 0) Return $aResult[0] EndFunc ;==>_WinAPI_SetBkMode Edited December 29, 2008 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now