Digisoul Posted February 21, 2011 Posted February 21, 2011 (edited) Hello ;I am trying to simulate the Group control. I am bit successful to create it with the help of some examples that i found in the WINAPIEx library , but now I am facing a strange behavior, after successful creation of RoundRect, if I minimize the GUI and restore it again, the created Rect changes its size.I am unable to understand why it’s happening on my side and not in the example.here is my rough attempt: #include <Constants.au3>#include <FontConstants.au3>#include <WinAPIEx.au3>#include <WindowsConstants.au3>Global Const $STM_SETIMAGE = 0x0172Global Const $STM_GETIMAGE = 0x0173Global $hForm, $Group1; Create GUI$hForm = GUICreate('MyGUI', 400, 400)GUISetBkColor(0xffffff)$Group1 = CreateFrame(50, 50, 200, 200);GUICtrlCreateLabel("This is a Test",20,20)GUISetState()DoUntil GUIGetMsg() = -3Func CreateFrame($x, $y, $w, $h);,$MODE = 1) Local $Pic = GUICtrlCreatePic('', $x, $y, $w, $h) Local $hPic = GUICtrlGetHandle($Pic) ; Create bitmap Local $hDev = _WinAPI_GetDC($hPic) Local $hDC = _WinAPI_CreateCompatibleDC($hDev) Local $hSource = _WinAPI_CreateCompatibleBitmapEx($hDev, 400, 400, _WinAPI_SwitchColor(_WinAPI_GetSysColor($COLOR_3DFACE))) Local $hSv = _WinAPI_SelectObject($hDC, $hSource) ; Border Color Local $hOldPen = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($DC_PEN)) _WinAPI_SetDCPenColor($hDC, 0xCCCCCC) ; Create Frame ;!!!!!!!Before compile load it from resource!!!!!!! Local $hPattern = _WinAPI_LoadImage(0, @ScriptDir & '\Pattern.bmp', $IMAGE_BITMAP, $w, $w, $LR_LOADFROMFILE) ;!!!!!!!Before compile load it from resource!!!!!!! Local $hBrush = _WinAPI_CreateBrushIndirect($BS_PATTERN, 0, $hPattern) Local $hObj = _WinAPI_SelectObject($hDC, $hBrush) Local $tRECT = _WinAPI_CreateRect(0, 0, $w, $h) _WinAPI_RoundRect($hDC, $tRECT, 20, 20) _WinAPI_SelectObject($hDC, $hObj) _WinAPI_DeleteObject($hPattern) _WinAPI_DeleteObject($hBrush) ; Merge bitmap Local $hBitmap = _WinAPI_CreateCompatibleBitmap($hDev, 400, 400) Local $hPen = _WinAPI_SelectObject($hDC, $hOldPen) _WinAPI_DeleteObject($hPen) _WinAPI_SelectObject($hDC, $hBitmap) _WinAPI_DrawBitmap($hDC, 0, 0, $hSource, $MERGECOPY) _WinAPI_ReleaseDC($hPic, $hDev) _WinAPI_SelectObject($hDC, $hSv) _WinAPI_DeleteObject($hSource) _WinAPI_DeleteDC($hDC) ; Set bitmap to control _SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap) Local $hObj = _SendMessage($hPic, $STM_GETIMAGE) If $hObj <> $hBitmap Then _WinAPI_DeleteObject($hBitmap) Return SetError(1) EndIf ;GUICtrlSetState($Pic,$gui_disable) Return SetError(0,0,$Pic)EndFunc ;==>CreateFramehere is a bitmap that i am using as patternthanks Edited February 21, 2011 by Digisoul 73 108 111 118 101 65 117 116 111 105 116
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