|
Home > Archive > Programming with dBASE > March 2006 > RGB help
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
|
|
|
| Hi all,
Any assistance on this would be greatly appreciated.
Thanks,
Tom
** END HEADER -- do not remove this line
//
// Generated on 03/05/2006
//
parameter bModal
local f
f = new RGB_2Form()
if (bModal)
f.mdi = false // ensure not MDI
f.readModal()
else
f.open()
endif
class RGB_2Form of FORM
with (this)
metric = 6 // Pixels
height = 352
left = 259
top = 0
width = 280
text = ""
endwith
this.IMAGE1 = new IMAGE(this)
with (this.IMAGE1)
onLeftMouseDown = class::GETPIXELATPOI
NT
height = 60
left = 110
top = 33
width = 59
dataSource = "RESOURCE #308"
alignment = 4 // True Size
borderStyle = 3 // None
endwith
this.PUSHBUTTON1 = new PUSHBUTTON(this)
with (this.PUSHBUTTON1)
onClick = CLASS::ImageColorToF
orm
height = 22
left = 186
top = 53
width = 24
text = ""
speedBar = true
upBitmap = "RESOURCE #32"
endwith
Function ImageColorToForm
********************
************
if empty(form.IMAGE1.dataSource) // = "RESOURCE #308"
msgbox("IMAGE1 object contains no image ...","Cannot Continue",64)
return
endif
*
// Romain Strieff 'Curson_On_Button.cc'
*
if type("GetWindowRect") # "FP"
extern cLOGICAL GetWindowRect (cHandle, cptr) user32
endif
if type("SetCursorPos") # "FP"
extern cLOGICAL SetCursorPos (CINT, CINT) user32
endif
if type("GetClientRect") # "FP"
extern cLogical GetClientRect (cHandle, cPtr) user32
endif
#define GCR_WIDTH 5
#define GCR_HEIGHT 7
#ifndef MAKE8
#define make8(cBuff, nIndex) ;
asc(substr(cBuff, nIndex))
#endif
#ifndef MAKEU16
#define makeu16(cBuff, nIndex);
make8(cBuff, nIndex) + bitlshift(make8(cBuf
f,;
nIndex + 1), 8)
#endif
*
// locate the cursor over the object ...
*
oRef = form.IMAGE1
*
local cRect,nCol,nRow,nPix
Width,nPixHeight
// create receiving buffer
cRect=space(8)
// get the value of the button rect values
GetClientRect(oRef.hWnd, cRect) //this.hwnd, cRect)
// calculate width and height
nPixWidth = makeu16(cRect, GCR_WIDTH) - 1
nPixHeight = makeu16(cRect, GCR_HEIGHT) - 1
// get the position of the button onscreen
GetWindowRect(oRef.hWnd, cRect) //this.hwnd, cRect)
// extract it from the Unicode value
nCol = cRect.GetByte(0) +;
BitLShift(cRect.GetByte(1), 8) +;
BitLShift(cRect.GetByte(2), 16) +;
BitLShift(cRect.GetByte(3), 24)
nRow = cRect.GetByte(4) +;
BitLShift(cRect.GetByte(5), 8) +;
BitLShift(cRect.GetByte(6), 16) +;
BitLShift(cRect.GetByte(7), 24)
// change this ...
*
//position the mousepointer in the middle
// SetCursorPos(nCol+(n
PixWidth/2), nRow+(nPixHeight/2))
// to this ...
*
//position the mousepointer in IMAGE1 upper left corner ...
SetCursorPos(nCol,nR
ow)
// don't remember who / where I stole this from ...
// read the pixel color at the mousePointer's location ...
if type("GetDC") # 'FP'
extern CHANDLE GetDC(CHANDLE) User32
endif
*
if type("ReleaseDC") # 'FP'
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
endif
*
if type("GetPixel") # 'FP'
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
endif
*
// oRef = form.IMAGE1 (see above) ...
*
local hWndDC, nColor
hWndDC = GetDC(oRef.hWnd) //this.hWnd)
nColor = GetPixel(hWndDC, nCol, nRow)
ReleaseDC(oRef.hWnd, hWndDC) //this.hWnd, hWndDC)
*
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>> //
// change this ...
// show me some kind of value / result ...
form.text = "Color = [" +ltrim(str(nColor))+
"]"
//
// to this ...
//form.colorNormal = form.IMAGE1.PixelAtCursor.color
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>> //
return
Function GetPixelAtPoint(flag
s, nCol, nRow)
********************
********************
**********
// don't remember who / where I stole this from ...
if type("GetDC") # 'FP'
extern CHANDLE GetDC(CHANDLE) User32
endif
*
if type("ReleaseDC") # 'FP'
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
endif
*
if type("GetPixel") # 'FP'
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
endif
*
local hWndDC, nColor
hWndDC = GetDC(this.hWnd)
nColor = GetPixel(hWndDC, nCol, nRow)
ReleaseDC(this.hWnd, hWndDC)
*
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SEE ABOVE >>>>>>>>>>>>>>>>>>>>>>>>> //
// change this ...
// show me some kind of value / result ...
form.text = "Color = [" +ltrim(str(nColor))+
"]"
//
// to this ...
//form.colorNormal = form.IMAGE1.PixelAtCursor.color
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SEE ABOVE >>>>>>>>>>>>>>>>>>>>>>>>> //
return
*
endclass
*
| |
| Marc VdB 2006-03-05, 8:27 pm |
| Hi Tom,
in your eventhandlers, try the following...
dbcolor = right("000000"+itoh(ncolor),6)
dbcolor = "0x"+ left(dbcolor,2)+subs
tr(dbcolor,3,2)+righ
t(dbcolor,2)
form.colorNormal = dbcolor
HTH, Marc
--
www.vdblogic.de/dbl
------
| |
|
| Marc VdB Wrote:
> in your eventhandlers, try the following...
>
> dbcolor = right("000000"+itoh(ncolor),6)
> dbcolor = "0x"+ left(dbcolor,2)+subs
tr(dbcolor,3,2)+righ
t(dbcolor,2)
> form.colorNormal = dbcolor
>
> HTH, Marc
Boy, are you good :-)
and for so early on Sunday morning too ...
Regards,
Tom
| |
|
| Hi all,
Me again ...
I have been playing with this all day and still cannot get it right.
Would anyone care to correct / modify / throw out and start over
the 'ImageColorToForm' function so that it produces the same result
as the 'GetPixelAtPoint' function does.
Thanks in advance,
Tom
** END HEADER -- do not remove this line
//
// Generated on 03/05/2006
//
parameter bModal
local f
f = new RGB_2Form()
if (bModal)
f.mdi = false // ensure not MDI
f.readModal()
else
f.open()
endif
class RGB_2Form of FORM
with (this)
metric = 6 // Pixels
height = 352
left = 259
top = 0
width = 280
text = ""
endwith
this.IMAGE1 = new IMAGE(this)
with (this.IMAGE1)
onLeftMouseDown = class::GETPIXELATPOI
NT
height = 60
left = 110
top = 33
width = 59
dataSource = "RESOURCE #308"
alignment = 4 // True Size
borderStyle = 3 // None
endwith
this.PUSHBUTTON1 = new PUSHBUTTON(this)
with (this.PUSHBUTTON1)
onClick = CLASS::ImageColorToF
orm
height = 22
left = 186
top = 53
width = 24
text = ""
speedBar = true
upBitmap = "RESOURCE #32"
endwith
Function ImageColorToForm
********************
************
if empty(form.IMAGE1.dataSource) // = "RESOURCE #308"
msgbox("IMAGE1 object contains no image ...","Cannot Continue",64)
return
endif
*
PRIVATE oRef, nObjTop, nObjLeft
oRef = form.IMAGE1
nObjTop = 0
nObJLeft = 0
*
// find IMAGE1's upper left corner on_the_screen (not the object or the form) ...
CLASS::Locate_Object
()
*
if type("SetCursorPos") # "FP"
extern cLOGICAL SetCursorPos (CINT, CINT) user32
endif
*
// for test purposes,
// move the cursor over and down a little so it is not right in the corner ...
nObjTop = nObjTop+5
nObjLeft = nObjLeft+5
*
//position the cursor at IMAGE1's upper left corner ...
SetCursorPos(nObjLef
t, nObjTop) //nCol, nRow
*
// tell me where that is ...
form.text = "nObjTop = " +ltrim(str(nObjTop))
+" and nObjLeft = " +ltrim(str(nObjLeft)
)
*
if type("GetDC") # 'FP'
extern CHANDLE GetDC(CHANDLE) User32
endif
*
if type("ReleaseDC") # 'FP'
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
endif
*
if type("GetPixel") # 'FP'
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
endif
*
// read the pixel color at the cursor's location ...
local hWndDC, nColor
hWndDC = GetDC(oRef.hWnd)
nColor = GetPixel(hWndDC, nObjLeft, nObjTop) // (nCol, nRow)
ReleaseDC(oRef.hWnd, hWndDC)
*
// translate nColor's value to 'dBase' ...
dbColor = right("000000"+itoh(nColor),6)
dbColor = "0x" +left(dbColor,2)+sub
str(dbColor,3,2)+rig
ht(dbColor,2)
*
// and show me what color that is ...
form.colorNormal = dbColor
*
// QED ...
return
Function Locate_Object
********************
*******
local o //nObjLeft, nObjTop, o
// set procedure to winPosition.cc additive
o = new winPosition()
o.get( oRef ) //form.Image1)
nObjLeft = (o.left)
nObjTop = (o.top)
o.release()
o = null
// close procedure winPosition.cc
return
Function GetPixelAtPoint(flag
s, nCol, nRow)
********************
********************
**********
PRIVATE oRef , nObjTop, nObjLeft
oRef = form.IMAGE1
nObjTop = 0
nObJLeft = 0
*
// find IMAGE1's upper left corner on_the_screen (not the object or the form) ...
CLASS::Locate_Object
()
*
// add the 'offsets' from the top left corner as represented
// by nCol and nRow values to get to the cursor location ...
nObjTop = nObjTop + nRow
nObjLeft = nObjLeft + nCol
*
// tell me where that is ...
form.text = "nObjTop = " +ltrim(str(nObjTop))
+" and nObjLeft = " +ltrim(str(nObjLeft)
)
*
if type("GetDC") # 'FP'
extern CHANDLE GetDC(CHANDLE) User32
endif
*
if type("ReleaseDC") # 'FP'
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
endif
*
if type("GetPixel") # 'FP'
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
endif
*
/*
// will not work with nObj Left / Top values ...
// read the pixel color at the cursor's location ...
local hWndDC, nColor
hWndDC = GetDC(oRef.hWnd) //this.hWnd)
nColor = GetPixel(hWndDC, nObjLeft, nObjTop) //nCol, nRow)
ReleaseDC(oRef.hWnd, hWndDC) //this.hWnd, hWndDC)
*
*/
///*
// works just fine with nCol / nRow values ...
// read the pixel color at the cursor's location ...
local hWndDC, nColor
hWndDC = GetDC(oRef.hWnd) //this.hWnd)
nColor = GetPixel(hWndDC, nCol, nRow)
ReleaseDC(oRef.hWnd, hWndDC) //this.hWnd, hWndDC)
*
*/
// translate nColor's value to 'dBase' ...
dbColor = right("000000"+itoh(nColor),6)
dbColor = "0x" +left(dbColor,2)+sub
str(dbColor,3,2)+rig
ht(dbColor,2)
*
// and show me what color that is ...
form.colorNormal = dbColor
*
// QED ...
return
*
endclass
*
/*
--------------------------------------------------------
Filename.....: winposition.cc
ClassName....: winPosition
Programmer...: Rick Miller
Date.........: February 06, 2001
Purpose......: non-GUI Object to hold the windows desktop
position for a GUI object.
Notes........: Property values are in Pixels.
Written for..: dB2K 01 and newer.
Rev. History.: August 09, 2005 - updated for dUFLP.
February 10, 2005 - renamed all external functions.
January 01, 2005 - verify externs.
Dependencies.: None.
Calls........: see x_InitializeExterns method for API calls.
Called by....: Any.
Usage........: set procedure to winposition.cc additive
Example......: See below.
--------------------------------------------------------
Example:
--------------------------------------------------------
oRef = new winPosition()
oRef.get(int(GUIobject.hWnd))
oRef.inspect()
--------------------------------------------------------
Properties:
--------------------------------------------------------
bottom <int> desktop bottom position.
left <int> desktop left position.
right <int> desktop right position.
top <int> desktop top position.
width <int> object width.
height <int> object height.
--------------------------------------------------------
Methods:
--------------------------------------------------------
get([<int or oRef> hWnd or GUI object])
assign properties based upon a GUI object position.
return true/false (success/fail).
inspect() display object in the inspector.
release() destroy object.
*/
#define WINPOSITION_VERSIONI
NFO "5.0809"
//---------------------------------------------------------------//
// constructor.
//---------------------------------------------------------------//
class winPosition
this.className = "winPosition"
this.top = 0
this.left = 0
this.right = 0
this.bottom = 0
this.height = 0
this.width = 0
this.versioninfo = WINPOSITION_VERSIONI
NFO
this.publishinfo = "Rick Miller"
// protected methods.
protect x_GetRectValue, x_InitializeExterns
class::x_InitializeE
xterns()
//------------------------------------------------------------//
// end of constructor - methods below.
//------------------------------------------------------------//
// get and store the window's desktop position coordinates
// of the passed object, object.hWnd, parent.hWnd,
// _app.framewin.hWnd, or returns false.
// NOTE: desktop position coordinates are in Pixels.
function get
parameters p1
Local nHwnd
if type("p1") == "N"
nHwnd = int(p1)
elseif type("p1.hWnd") == "N"
nHwnd = int(p1.hWnd)
elseif type("this.parent.hWnd") == "N"
nHwnd = int(this.parent.hWnd)
elseif type("_app.framewin.hWnd") == "N"
nHwnd = int(_app.framewin.hWnd)
else
nHwnd = 0
endif
if not nHwnd == 0
Local cRect
cRect = space(8)
GetWindowRect(nHwnd,
cRect)
this.left := int(class::x_GetRect
Value(cRect, 0))
this.top := int(class::x_GetRect
Value(cRect, 4))
this.right := int(class::x_GetRect
Value(cRect, 8))
this.bottom := int(class::x_GetRect
Value(cRect, 12))
this.width := int(this.right - this.left)
this.height := int(this.bottom - this.top)
endif
return not nHwnd == 0
// return true/false (valid hWnd/not valid hwnd)
//------------------------------------------------------------//
// display in the inspector.
function inspect
inspect(this)
return
//------------------------------------------------------------//
// release object from memory.
function release
try
release object this
catch(exception e)
endtry
return
//------------------------------------------------------------//
function x_GetRectValue(cRect
, nBit)
Local nRet
nRet = cRect.getbyte(nBit) + ;
BitLshift(cRect.getbyte(nBit + 1), 8) + ;
BitLshift(cRect.getbyte(nBit + 2), 16) + ;
BitLshift(cRect.getbyte(nBit + 3), 24)
if BitSet(nRet, 31)
nRet := - BitNot(nRet)
endif
return nRet
//------------------------------------------------------------//
// declare functions external to dBASE.
function x_InitializeExterns
if not type("GetWindowRect") == "FP"
extern CLOGICAL GetWindowRect(CHANDL
E, CPTR) ;
user32 from "GetWindowRect"
endif
return true
endclass
//---------------------------------------------------------------//
// end of winPosition.
//---------------------------------------------------------------//
| |
| Ivar B. Jessen 2006-03-06, 7:23 am |
| On Mon, 06 Mar 2006 03:20:56 -0500, in dbase.programming,
Subject: Re: RGB help,
Message-ID: <nAiMkbPQGHA.2016@news-server>,
Tom < IHaveNoEmail@Address
> wrote:
>I have been playing with this all day and still cannot get it right.
>
>Would anyone care to correct / modify / throw out and start over
>the 'ImageColorToForm' function so that it produces the same result
>as the 'GetPixelAtPoint' function does.
Tom,
As I don't know what result you want get from your form, I simplified your code
a bit. I also left out the pushbutton as I am not sure what it is supposed to
do.
Does the modified code essentially procduce the result you hoped for?
If not, try to explain specifically which result you had hoped to see and what
is wrong with the result you get.
Ivar B. Jessen
//-----
** END HEADER -- do not remove this line
//
// Generated on 06-03-2006
//
parameter bModal
local f
f = new RGB2Form()
if (bModal)
f.mdi = false // ensure not MDI
f.readModal()
else
f.open()
endif
class RGB2Form of FORM
with (this)
onOpen = class::FORM_ONOPEN
metric = 6 // Pixels
height = 288.0
left = 223.0
top = 112.0
width = 403.0
text = ""
endwith
this.IMAGE1 = new IMAGE(this)
with (this.IMAGE1)
onLeftMouseDown = class::IMAGE1_ONLEFT
MOUSEDOWN
height = 231.0
left = 7.0
top = 11.0
width = 392.0
endwith
function form_onOpen
this.image1.dataSource = "RESOURCE #291 " + _dbWinhome + "Bin\PLUS_en.dll"
return
function IMAGE1_onLeftMouseDo
wn(flags, col, row)
extern CHANDLE GetDC(CHANDLE) User32
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
hWndDC = GetDC(this.hWnd)
nColor = GetPixel(hWndDC, Col, Row)
nColor = "0x" + itoh(nColor, 6)
ReleaseDC(this.hWnd, hWndDC)
?
? "nColor = ", nColor
? "col = " + col, " row = " + row
// and show me what color that is ...
form.colorNormal = nColor
form.text = "Col = " + col + " " + "Row = " + row
return
endclass
//-----
| |
|
| Ivar B. Jessen Wrote:
> As I don't know what result you want get from your form, I simplified your code
> a bit. I also left out the pushbutton as I am not sure what it is supposed to
> do.
>
Put it back :-)
> Does the modified code essentially procduce the result you hoped for?
>
Without actually testing right now (it's 6:30 AM here and time for bed), it looks like it would partially ...
> If not, try to explain specifically which result you had hoped to see and what
> is wrong with the result you get.
>
What I was trying to do was to 'scan' the colors in an image. If you start in the upper right corner, get the color of the first pixel. Move to the next pixel, get it's color and so on until you have 'scanned' the entire image. Scanning should be entirely
by program, no mouse clicks or user activity should be involved. The ImageColorToForm() function was an initial attempt to do that.
Thanks,
Tom
| |
| Ivar B. Jessen 2006-03-06, 7:17 pm |
| On Mon, 06 Mar 2006 07:11:29 -0500, in dbase.programming,
Subject: Re: RGB help,
Message-ID: <rXrmZcRQGHA.560@news-server>,
Tom < IHaveNoEmail@Address
> wrote:
>Put it back :-)
Ok, the button is back <sigh>
>Without actually testing right now (it's 6:30 AM here and time for bed), it looks like it would partially ...
>
>What I was trying to do was to 'scan' the colors in an image. If you start in the upper right corner, get the color of the first pixel. Move to the next pixel, get it's color and so on until you have 'scanned' the entire image. Scanning should be entirel
y by program, no mouse clicks or user activity should be involved. The ImageColorToForm() function was an initial attempt to do that.
Press the button and the image will be scanned starting in upper left corner ;-)
During the scan each pixel gets its color set to the complementary value. Press
the pushbutton once more to get the image back to original.
Ivar B. Jessen
/-----
** END HEADER -- do not remove this line
//
// Generated on 06-03-2006
//
parameter bModal
local f
f = new RGB2Form()
if (bModal)
f.mdi = false // ensure not MDI
f.readModal()
else
f.open()
endif
class RGB2Form of FORM
with (this)
onOpen = class::FORM_ONOPEN
metric = 6 // Pixels
height = 288.0
left = 223.0
top = 112.0
width = 403.0
text = ""
endwith
this.IMAGE1 = new IMAGE(this)
with (this.IMAGE1)
onLeftMouseDown = class::IMAGE1_ONLEFT
MOUSEDOWN
height = 231.0
left = 7.0
top = 11.0
width = 392.0
endwith
this.PUSHBUTTON1 = new PUSHBUTTON(this)
with (this.PUSHBUTTON1)
onClick = class::PUSHBUTTON1_O
NCLICK
height = 24.0
left = 77.0
top = 253.0
width = 238.0
text = "Scan and set complementary color"
endwith
function form_onOpen
this.image1.dataSource = "RESOURCE #291 " + _dbWinhome + "Bin\PLUS_en.dll"
return
function IMAGE1_onLeftMouseDo
wn(flags, col, row)
extern CHANDLE GetDC(CHANDLE) User32
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
extern CULONG SetPixel(CHANDLE, CINT, CINT, CINT) GDI32
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
hWndDC = GetDC(this.hWnd)
nColor = GetPixel(hWndDC, Col, Row)
nColor = itoh(nColor, 6)
ReleaseDC(this.hWnd, hWndDC)
?
? "nColor = ", nColor
// Uncomment line to display complementary colors
// nColor = itoh(bitxor(htoi(nco
lor), 0xFFFFFF), 6)
? "nColor = ", nColor
? "col = " + col, " row = " + row
// and show me what color that is ...
form.colorNormal = "0x" + nColor
form.text = "Col = " + col + " " + "Row = " + row
return
function PUSHBUTTON1_onClick
extern CHANDLE GetDC(CHANDLE) User32
extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
extern CULONG SetPixel(CHANDLE, CINT, CINT, CINT) GDI32
extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
hWndDC = GetDC(form.image1.hWnd)
for i = 0 to form.image1.height
for j = 0 to form.image1.width
nColor = GetPixel(hWndDC, j, i)
nColor = itoh(bitxor((ncolor)
, 0xFFFFFF), 6)
SetPixel(hWndDC, j, i, htoi(nColor))
form.text = "Col = " + j + " " + "Row = " + i
next j
next i
ReleaseDC(this.hWnd, hWndDC)
return
endclass
//-----
| |
|
| Ivar B. Jessen Wrote:
>
> Ok, the button is back <sigh>
>
> Press the button and the image will be scanned starting in upper left corner ;-)
> During the scan each pixel gets its color set to the complementary value. Press
> the pushbutton once more to get the image back to original.
>
> function PUSHBUTTON1_onClick
>
> extern CHANDLE GetDC(CHANDLE) User32
> extern CULONG GetPixel(CHANDLE, CINT, CINT) GDI32
> extern CULONG SetPixel(CHANDLE, CINT, CINT, CINT) GDI32
> extern CINT ReleaseDC(CHANDLE, CHANDLE) User32
>
> hWndDC = GetDC(form.image1.hWnd)
>
> for i = 0 to form.image1.height
> for j = 0 to form.image1.width
> nColor = GetPixel(hWndDC, j, i)
> nColor = itoh(bitxor((ncolor)
, 0xFFFFFF), 6)
> SetPixel(hWndDC, j, i, htoi(nColor))
> form.text = "Col = " + j + " " + "Row = " + i
> next j
> next i
>
> ReleaseDC(this.hWnd, hWndDC)
>
> return
Hi Ivan,
I think I have it now. All I have to do is describe to you what I want, go to sleep and return here later to find exactly what I wanted. I did not know programming could be so easy. ;-)
Thank you very much !
Regards,
Tom
| |
| Ivar B. Jessen 2006-03-06, 7:17 pm |
| X-Newsreader: Forte Free Agent 2.0/32.652
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Newsgroups: dbase.programming
Lines: 16
Path: news-server
Xref: news-server dbase.programming:10323
NNTP-Posting-Host: port1596.uc2-oers.ppp.cybercity.dk 217.157.114.203
On Mon, 06 Mar 2006 14:30:47 -0500, in dbase.programming,
Subject: Re: RGB help,
Message-ID: <YnVO4RVQGHA.1740@news-server>,
Tom < IHaveNoEmail@Address
> wrote:
>I think I have it now. All I have to do is describe to you what I want, go to sleep and return here later to find exactly what I wanted. I did not know programming could be so easy. ;-)
Don't tell your boss :-)
>Thank you very much !
You are welcome.
BTW the scanning runs a little faster when you comment out the line which prints
coordinates to the title bar. There are probably API functions which will do a
much faster scan.
Ivar B. Jessen
|
|
|
|
|