473,473 Members | 1,814 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

How to make bitblt work

I am trying to use GDI32 bitblt to write a bitmap to a control's window, but all I get is an empty rectangle of some rop-dependent color. In short, I use the following logic in a paint event handler:

dstGr = args.graphics;
srcGr = Graphics.FromImage( bitmap );
dstHdc = dstGr.GetHdc();
srcHdc = srcGr.GetHdc();
BitBlt( dstHdc, x, y, width, height, srcHdc, 0, 0, rop );

What am I doing wrong? A complete demo program follows.

Thanks,
Jack

------------------------------------------------------
// Draw a bitmap using System.Drawing.Graphics, then draw the same bitmap
// using BitBlt. The BitBlt operation produces a black rectangle.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
SetDCBrushColor( srcHdc, WHITE );
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}

Nov 16 '05 #1
5 16966
I wouldn't recommend BitBlt. You should Graphics.DrawImage instead. BitBlt
is not supported on WindowsCE. Additionally BitBlt supports not the richt
features that DrawImage can do such as rotating scaling and filtering of
images. I do not believe that BitBlt is much faster than DrawImage.
If you really need extremely fast ImageBliting, maybe you have a look at
managed DirectX.

--
cody

[Freeware, Games and Humor]
www.deutronium.de.vu || www.deutronium.tk
"JackS" <Ja***@discussions.microsoft.com> schrieb im Newsbeitrag
news:90**********************************@microsof t.com...
I am trying to use GDI32 bitblt to write a bitmap to a control's window, but all I get is an empty rectangle of some rop-dependent color. In short, I
use the following logic in a paint event handler:
dstGr = args.graphics;
srcGr = Graphics.FromImage( bitmap );
dstHdc = dstGr.GetHdc();
srcHdc = srcGr.GetHdc();
BitBlt( dstHdc, x, y, width, height, srcHdc, 0, 0, rop );

What am I doing wrong? A complete demo program follows.

Thanks,
Jack

------------------------------------------------------
// Draw a bitmap using System.Drawing.Graphics, then draw the same bitmap
// using BitBlt. The BitBlt operation produces a black rectangle.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
SetDCBrushColor( srcHdc, WHITE );
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}

Nov 16 '05 #2
Hi JackS,

I am not sure what you want to see.

Is this what you wanted (as your code has bugs, but i had fix it)?
In your codes, you just draw this and that.

(please open a new browser and paste this url)

http://www.geocities.com/chuawenching/JackS.JPG

Codes:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Image imageFile = Image.FromFile("test.jpg");
Graphics newGraphics = Graphics.FromImage(imageFile);
newGraphics.FillRectangle(new SolidBrush(Color.Black), 100, 50, 100, 100);
args.Graphics.DrawImage(imageFile, new PointF(0.0F, 0.0F));
newGraphics.Dispose();

Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
SetDCBrushColor( srcHdc, 0 );
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

[DllImport("gdi32.dll")]
static extern uint SetDCBrushColor(IntPtr hdc, uint crColor);

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}

Hope it helps. Correct me if i am wrong.

Thanks.
--
Regards,
Chua Wen Ching :)
"JackS" wrote:
I am trying to use GDI32 bitblt to write a bitmap to a control's window, but all I get is an empty rectangle of some rop-dependent color. In short, I use the following logic in a paint event handler:

dstGr = args.graphics;
srcGr = Graphics.FromImage( bitmap );
dstHdc = dstGr.GetHdc();
srcHdc = srcGr.GetHdc();
BitBlt( dstHdc, x, y, width, height, srcHdc, 0, 0, rop );

What am I doing wrong? A complete demo program follows.

Thanks,
Jack

------------------------------------------------------
// Draw a bitmap using System.Drawing.Graphics, then draw the same bitmap
// using BitBlt. The BitBlt operation produces a black rectangle.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
SetDCBrushColor( srcHdc, WHITE );
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}

Nov 16 '05 #3
Thanks, but I need to be able to set the ROP, and as far as I know you can't do that with Graphics.DrawImage.

"cody" wrote:
I wouldn't recommend BitBlt. You should Graphics.DrawImage instead. BitBlt
is not supported on WindowsCE. Additionally BitBlt supports not the richt
features that DrawImage can do such as rotating scaling and filtering of
images. I do not believe that BitBlt is much faster than DrawImage.
If you really need extremely fast ImageBliting, maybe you have a look at
managed DirectX.

--
cody

[Freeware, Games and Humor]
www.deutronium.de.vu || www.deutronium.tk
"JackS" <Ja***@discussions.microsoft.com> schrieb im Newsbeitrag
news:90**********************************@microsof t.com...
I am trying to use GDI32 bitblt to write a bitmap to a control's window,

but all I get is an empty rectangle of some rop-dependent color. In short, I
use the following logic in a paint event handler:

dstGr = args.graphics;
srcGr = Graphics.FromImage( bitmap );
dstHdc = dstGr.GetHdc();
srcHdc = srcGr.GetHdc();
BitBlt( dstHdc, x, y, width, height, srcHdc, 0, 0, rop );

What am I doing wrong? A complete demo program follows.

Thanks,
Jack

------------------------------------------------------
// Draw a bitmap using System.Drawing.Graphics, then draw the same bitmap
// using BitBlt. The BitBlt operation produces a black rectangle.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
SetDCBrushColor( srcHdc, WHITE );
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}


Nov 16 '05 #4
"Chua Wen Ching" wrote:
Hi JackS,

I am not sure what you want to see.

Is this what you wanted (as your code has bugs, but i had fix it)?

.. . .

Hmmm... I did manage to drop a bug in there didn't I? I assume you refer to the experimental call to SetDCBrushColor. That line should simply be deleted. The background image you added to the window hides the problem I am trying to demonstrate: Graphics.DrawImage draws the test image correctly, but the same image drawn with BitBlt comes out as a black rectangle. Complete corrected code follows.

Thanks,
Jack

// Draw a bitmap using System.Drawing.Graphics, then draw the same bitmap
// using BitBlt. The BitBlt operation produces a black rectangle.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}

Nov 16 '05 #5
*** Correction to original post.
I am trying to use GDI32 bitblt to write a bitmap to a control's window, but all I get is an empty rectangle of some rop-dependent color. In short, I use the following logic in a paint event handler:

dstGr = args.graphics;
srcGr = Graphics.FromImage( bitmap );
dstHdc = dstGr.GetHdc();
srcHdc = srcGr.GetHdc();
BitBlt( dstHdc, x, y, width, height, srcHdc, 0, 0, rop );

What am I doing wrong? A complete demo program follows.


My original post contained a sample program with a bug; the corrected code follows. The program draws an image with Graphics.DrawImage, then draws the same image with BitBlt. DrawImage displays correctly, but BitBlt just draws a black rectangle.

Jack

----------------------------------------

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BitBltTest
{
public class BitBltTest : System.Windows.Forms.Form
{
public BitBltTest()
{
this.Width = 200;
this.Height = 200;
this.BackColor = Color.White;
this.Paint += new PaintEventHandler( PaintEH );

bitmap_ = new Bitmap( 40, 40 );
Pen pen = new Pen( Color.Black, 1 );
Graphics graph = Graphics.FromImage( bitmap_ );
graph.Clear( Color.White );
graph.DrawRectangle( pen, 5, 5, 30, 30 );
graph.DrawLine( pen, 5, 5, 35, 35 );
graph.DrawLine( pen, 5, 35, 35, 5 );
pen.Dispose();
graph.Dispose();
}

private void PaintEH( Object sender, PaintEventArgs args )
{
Graphics dstGr = args.Graphics;
Graphics srcGr = Graphics.FromImage( bitmap_ );
Int32 width = bitmap_.Width;
Int32 height = bitmap_.Height;

dstGr.DrawImage( bitmap_, 50, 50, width, height );

IntPtr dstHdc = dstGr.GetHdc();
IntPtr srcHdc = srcGr.GetHdc();
bool bitBltResult =
BitBlt(
dstHdc,
50 + width + 25,
50,
width,
height,
srcHdc,
0,
0,
SRCCOPY
);
if ( !bitBltResult )
throw new Exception( "BitBlt Failure" );

srcGr.ReleaseHdc( srcHdc );
dstGr.ReleaseHdc( dstHdc );
srcGr.Dispose();
}

private Bitmap bitmap_;

[DllImport("gdi32.DLL")]
private static extern Boolean
BitBlt(
IntPtr hdcDest,
Int32 nXDest,
Int32 nYDest,
Int32 nWidth,
Int32 nHeight,
IntPtr hdcSrc,
Int32 nXSrc,
Int32 nYSrc,
UInt32 dwRop
);

private const UInt32 SRCCOPY = 0x00CC0020;

[STAThread]
static void Main()
{
BitBltTest form = new BitBltTest();
Application.Run( form );
}
}
}

Nov 16 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: DraguVaso | last post by:
Hi, In the override of the Paint-method of a DataGridTextBoxColumn I want to show an image with BitBlt, to see what I can gain there on performance. The problem is: It doesn't show me the image...
9
by: Rajat Tandon | last post by:
Hello there, I am relatively new to the newsgroups and C#. I have never been disappointed with the groups and always got the prompt replies to my queries.This is yet another strange issue, I am...
5
by: _R | last post by:
I need to establish a canvas for sorts, for painting primarily single line pictures. Lines and images are currently drawn into raw graphics space which is derived from a control, using LockBits. ...
6
by: Larry Serflaten | last post by:
Can anyone see something wrong with the code below? Friend Sub MapUpdate(ByRef Artwork As Bitmap, ByRef Player As MapObject) If grxForm Is Nothing Then grxForm = Me.CreateGraphics Dim hdcDst...
3
by: fripper | last post by:
Is there a way to use the windows bitblt function in a VB 2005 app? bitblt requires device context parameters for the source and destination controls but those are not used in VB 2005. Is there...
7
by: Galen Somerville | last post by:
I'm doing something wrong. I made up a test app and put the ZIP file on my website http://home.surewest.net/galen/index.html under Downloads. Basically I have a Panel that will get continuous...
6
by: Martijn Mulder | last post by:
/* BitBlt.cs C# code using P/Invoke I have good reasons to use P/Invoke to get access to the Win32 API function BitBlt(). But I have trouble understanding the workings of it. Below is a...
5
by: =?Utf-8?B?UmljYXJkbyBGdXJ0YWRv?= | last post by:
I'm trying to copy a part of an image (a rectangle) width the bitblt api function, bu i receive an error when i try to do it. The error is the following, that i will try to translate because its in...
1
by: DumRat | last post by:
Hi, Can anyone plz help? I have the following code for the WM_PAINT event, but it doesn't work. Need to knw why. I'm drawing the scene to the window, but am using an intermediate DC....
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.