# Windows StartDocPrinter() function in Clarion

**URL:** <https://clarionhub.com/t/windows-startdocprinter-function-in-clarion/7944>\
**Category:** questions\
**Tags:** report, winapi\
**Created:** [February 24, 2025, 12:15pm UTC](https://clarionhub.com/t/windows-startdocprinter-function-in-clarion/7944 "2025-02-24T12:15:35Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![blue](https://clarionhub.com/letter_avatar_proxy/v4/letter/b/3bc359/32.png) [@blue](https://clarionhub.com/u/blue)\
**Post date:** [February 24, 2025, 12:15pm UTC](https://clarionhub.com/t/windows-startdocprinter-function-in-clarion/7944/1 "2025-02-24T12:15:35Z")

</div>

Hello,

How do I implement [StartDocPrinter()](https://learn.microsoft.com/en-us/windows/win32/printdocs/startdocprinter) function in Clarion?

With WinApi application I can get prototypes and structure for all necessary Windows print API functions.

For DOCINFO there is a:

```auto
DOCINFO GROUP,TYPE
cbSize SHORT
lpszDocName LONG!*LPCSTR
lpszOutput LONG!*LPCSTR
lpszDataType LONG!*LPCSTR
fwType DWORD
            END

```

I changed that to:

```auto
DOCINFO GROUP,TYPE
lpszDocName LONG!*LPCSTR
lpszOutput LONG!*LPCSTR
lpszDataType LONG!*LPCSTR
            END

```

So it is structure described for [DOC\_INFO\_1](https://learn.microsoft.com/en-us/windows/win32/printdocs/doc-info-1).

WinApi application says definition for StartDocPrinter() is `StartDocPrinterA(HANDLE,DWORD,*BYTE),DWORD,PASCAL`. If I add `NAME('StartDocPrinter')` I get error **"Unresolved external StartDocPrinter..."**.

Last parameter is acctualy a `DOCINFO` as `LPBYTE` in C++.

For `DOCINFO` fields i use `ADDRESS()`, how do I send parameter \*BYTE which is acctualy `LPBYTE` in C++ and I can use `(LPSTR)&DocInfo` to send it to the `StartDocPrint()`.

Do I need to change type of the parameters in `StartDocPrinter()`?

I get controled error when I use `StartDocPrinterA(HANDLE,DWORD,*LONG),DWORD,PASCAL`, where last parameter is local `LONG` variable and value is `ADDRESS(myDOCINFO)`. Everthing else is crash and GPF window.

I tried `StartDocPrinterA(HANDLE,DWORD,*DOCINFO),DWORD,PASCAL`, it did not helped.

---

<div class="post-metadata">

**Author:** ![Clarion\_clarion](https://clarionhub.com/user_avatar/clarionhub.com/clarion_clarion/32/636_2.png) [@Clarion\_clarion](https://clarionhub.com/u/Clarion_clarion)\
**Post date:** [February 24, 2025, 1:27pm UTC](https://clarionhub.com/t/windows-startdocprinter-function-in-clarion/7944/2 "2025-02-24T13:27:58Z")

</div>

check this article [Print directly to printer (Bjarne Havnen ) - Icetips Article](https://www.icetips.com/showarticle.php?articleid=1334)

---

<div class="post-metadata">

**Author:** ![blue](https://clarionhub.com/letter_avatar_proxy/v4/letter/b/3bc359/32.png) [@blue](https://clarionhub.com/u/blue)\
**Post date:** [February 24, 2025, 1:52pm UTC](https://clarionhub.com/t/windows-startdocprinter-function-in-clarion/7944/3 "2025-02-24T13:52:50Z")

</div>

Thank you. My mistake was when sending as` ...,*DOCINFO)`, I changed `DOCINFO` fields from `LONG` to `CSTRING`.
