Hi again!
This doesn't seem to be hard, maybe I'm am too tired to see the quick solution...
I've got a window with a subclassed GRAPHIC CONTROL on it- they've got the same size. So I draw something like a frame on it with the PB GRAPHIC functions, and now I want to make everything transparent, which is IN the frame.
Whats wrong here?
Thanks again, best regards from a tired and frustrated
Marc Giesmann
This doesn't seem to be hard, maybe I'm am too tired to see the quick solution...
I've got a window with a subclassed GRAPHIC CONTROL on it- they've got the same size. So I draw something like a frame on it with the PB GRAPHIC functions, and now I want to make everything transparent, which is IN the frame.
Code:
FUNCTION DRAW_TRANSPARENT_BOX(BYVAL hWND AS DWORD, BYVAL lCTRLID AS LONG) AS LONG TRY LOCAL lSTRENGHT AS LONG lSTRENGHT = 3 'This is how thick the line should be LOCAL lWidth, lHeight AS LONG CONTROL GET SIZE hWND, lCTRLID TO lWidth,lHeight 'The dimensions are already "pixels" so no conversion needed...! 'Draw everything I want (the "selfmade frame" in this case) GRAPHIC ATTACH hWND,lCTRLID GRAPHIC CLEAR %WHITE GRAPHIC WIDTH lStrenght GRAPHIC BOX (0,0)-(lWidth,lHeight),0,%BLACK,%WHITE 'So far so good, now the hard(?) part LOCAL QDRRect AS RECT GetWindowRect(hWND, QDRRect) 'Now substract the line from my RECT QDRRect.nLEFT = QDRRect.nLEFT + lSTRENGHT QDRRect.nRIGHT = QDRRect.nRIGHT - lSTRENGHT QDRRect.nTOP = QDRRect.nTOP - lSTRENGHT QDRRect.nBOTTOM = QDRRect.nBOTTOM + lSTRENGHT LOCAL hRGNQDR AS DWORD hRGNQDR = CreateRectRgnIndirect(QDRRect) IF hRGNQDR THEN SetWindowRgn(hWnd , hRGNQDR, %FALSE) 'Everything IN the frame should be invisible ELSE MSGBOX STR$(GetLastError()) END IF CATCH MSGBOX "Error #" + STR$(ERR) + " in " + FUNCNAME$, %MB_OK OR %MB_ICONERROR, "Internal Error ("+FUNCNAME$+")!" END TRY END FUNCTION
Thanks again, best regards from a tired and frustrated
Marc Giesmann