ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   API in Excel (https://www.excelbanter.com/excel-programming/319696-api-excel.html)

mike510

API in Excel
 
Can anybody give an example or link of using GDI in Excel?
Is it possible to plot a function on a form surface for example without
Excel charts, just using LineTo, SetPixel etc.?

Thank you in advance.

Mike



mike510

API in Excel
 
I have found a solution using VB6 examples and news archive:
Dim hDC As Long
Dim DummyPt As PointAPI
hDC = GetDC(0)
Call SetPixelV(hDC, 100, 100, vbRed)
Call MoveToEx(hDC, 5, 15, DummyPt)
Call LineTo(hDC, 25, 15)
ReleaseDC 0, hDC
But instead a form it is plotting on Excel window itself (or on VBA editor).

Can anybody help? What parameter should I pass to GetDC() instead of 0?

Thank you in advance.

Mike.

"Mike510" сообщил/сообщила в новостях следующее:
...
Can anybody give an example or link of using GDI in Excel?
Is it possible to plot a function on a form surface for example without
Excel charts, just using LineTo, SetPixel etc.?

Thank you in advance.

Mike





Stephen Bullen[_4_]

API in Excel
 
Hi Mike510,

I have found a solution using VB6 examples and news archive:
Dim hDC As Long
Dim DummyPt As PointAPI
hDC = GetDC(0)
Call SetPixelV(hDC, 100, 100, vbRed)
Call MoveToEx(hDC, 5, 15, DummyPt)
Call LineTo(hDC, 25, 15)
ReleaseDC 0, hDC
But instead a form it is plotting on Excel window itself (or on VBA editor).

Can anybody help? What parameter should I pass to GetDC() instead of 0?


The parameter to GetDC (and ReleaseDC) should be the window handle of the
form, found using the FindWindow(vbNullString,Me.Caption) API call.

Regards

Stephen Bullen
Microsoft MVP - Excel
www.oaltd.co.uk



mike510

API in Excel
 
Thank you very much for your help, Mr. Bullen.
Before I have read your post, I tried GetActiveWindow(). It worked too.
Should I delete hDC after releasing it or it is not necessary?


"Stephen Bullen" wrote in message
...
Hi Mike510,

I have found a solution using VB6 examples and news archive:
Dim hDC As Long
Dim DummyPt As PointAPI
hDC = GetDC(0)
Call SetPixelV(hDC, 100, 100, vbRed)
Call MoveToEx(hDC, 5, 15, DummyPt)
Call LineTo(hDC, 25, 15)
ReleaseDC 0, hDC
But instead a form it is plotting on Excel window itself (or on VBA

editor).

Can anybody help? What parameter should I pass to GetDC() instead of 0?


The parameter to GetDC (and ReleaseDC) should be the window handle of the
form, found using the FindWindow(vbNullString,Me.Caption) API call.

Regards

Stephen Bullen
Microsoft MVP - Excel
www.oaltd.co.uk





Stephen Bullen[_4_]

API in Excel
 
Hi Mike510,

Should I delete hDC after releasing it or it is not necessary?


No, once released, that's OK.

Regards

Stephen Bullen
Microsoft MVP - Excel
www.oaltd.co.uk




All times are GMT +1. The time now is 10:21 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com