递归火山软件开发平台

标题: 大佬们 请教嵌入式语句 [打印本页]

作者: llddkzf    时间: 2024-3-9 10:42
标题: 大佬们 请教嵌入式语句
BOOL OpenPrinter(
  _In_  LPTSTR             pPrinterName,
  _Out_ LPHANDLE           phPrinter,
  _In_  LPPRINTER_DEFAULTS pDefault
);

这个API函数 用嵌入式语句 应该怎么写的


作者: 99101617    时间: 2024-3-9 12:34
https://bbs.voldp.com/thread-15371-1-1.html
看看这个
作者: Xelloss0618    时间: 2024-3-9 14:13
<火山程序 类型 = "通常" 版本 = 1 />

类 打印机测试 <公开 折叠>
{
    方法 打开打印机 <公开 静态 类型 = 整数 折叠 @嵌入式方法 = "">
    参数 打印机名称 <类型 = 文本型>
    参数 打印机句柄 <类型 = 变整数 注释 = "返回打印机句柄" @需求类型 = 可写入变量>
    参数 pDefault <类型 = PRINTER_DEFAULTS指针 注释 = "可以提供空指针">
    {
        @ OpenPrinter(@<打印机名称>.GetText(), (LPHANDLE)&@<打印机句柄>, @<pDefault>)
    }

    方法 例子 <折叠>
    {
        变量 打印机句柄 <类型 = 变整数>
        变量 pDefault <类型 = PRINTER_DEFAULTS指针>
        打开打印机 ("名称", 打印机句柄, pDefault)  // pDefault为空指针,不返回内容
        调试输出 (打印机句柄)
    }

    方法 例子2 <折叠>
    {
        变量 打印机句柄 <类型 = 变整数>
        变量 pDefault <类型 = PRINTER_DEFAULTS指针>
        pDefault = PRINTER_DEFAULTS指针.创建 ()
        打开打印机 ("名称", 打印机句柄, pDefault)  // pDefault不为空指针,返回内容
        调试输出 (打印机句柄, pDefault.pDatatype.取文本 (), pDefault.DesiredAccess)
        pDefault.销毁 ()  // 创建后必须销毁
    }
}

类 PRINTER_DEFAULTS指针 <公开 基础类 = 本地结构指针模板 折叠 @别名 = "PRINTER_DEFAULTS*" @模板实现类 = "PRINTER_DEFAULTS指针">
{
    变量 pDatatype <公开 类型 = 常量文本指针 @输出名 = "pDatatype">
    变量 "// pDevMode" <公开 类型 = LPDEVMODE 注释 = "这个结构体太复杂了,懒得封" @输出名 = "pDevMode">
    变量 DesiredAccess <公开 类型 = 整数 @输出名 = "DesiredAccess">
}

作者: llddkzf    时间: 2024-3-9 22:26
Xelloss0618 发表于 2024-3-9 14:13
类 打印机测试
{
    方法 打开打印机

大佬 不行啊 编译出错了

错误: 使用所指定的本地编译器编译当前程序失败
<C:\Users\Administrator\Desktop\小游戏 辅Zhu\ceee\src\main.v>, 21: 错误:
    error C2664: “逻辑型 OpenPrinterW(LPWSTR,LPHANDLE,LPPRINTER_DEFAULTSW)”: 无法将参数 1 从“const WCHAR *”转换为“LPWSTR”
    note: 转换丢失限定符
    D:\voldev\plugins\vprj_win\sdk\winsdk\10\include\10.0.18362.0\um\winspool.h(1333): note: 参见“OpenPrinterW”的声明
作者: Xelloss0618    时间: 2024-3-10 11:55
llddkzf 发表于 2024-3-9 22:26
大佬 不行啊 编译出错了

错误: 使用所指定的本地编译器编译当前程序失败

哦,没注意它要求没const,加个强转就行了
@ OpenPrinter((LPTSTR)@<打印机名称>.GetText(), (LPHANDLE)&@<打印机句柄>, @<pDefault>)
作者: llddkzf    时间: 2024-3-11 10:52
Xelloss0618 发表于 2024-3-10 11:55
哦,没注意它要求没const,加个强转就行了
@ OpenPrinter((LPTSTR)@.GetText(), (LPHANDLE)&@, @) ...

感谢 大佬的 热心解惑




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4