递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2409|回复: 5
打印 上一主题 下一主题

[视窗] 大佬们 请教嵌入式语句

[复制链接]

18

主题

85

帖子

626

积分

高级会员

Rank: 4

积分
626
跳转到指定楼层
楼主
发表于 2024-3-9 10:42:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BOOL OpenPrinter(
  _In_  LPTSTR             pPrinterName,
  _Out_ LPHANDLE           phPrinter,
  _In_  LPPRINTER_DEFAULTS pDefault
);

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

回复

使用道具 举报

59

主题

233

帖子

1074

积分

金牌会员

Rank: 6Rank: 6

积分
1074
沙发
发表于 2024-3-9 12:34:15 | 只看该作者
回复

使用道具 举报

26

主题

1904

帖子

6941

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6941
板凳
发表于 2024-3-9 14:13:39 | 只看该作者
<火山程序 类型 = "通常" 版本 = 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">
}
回复

使用道具 举报

18

主题

85

帖子

626

积分

高级会员

Rank: 4

积分
626
地板
 楼主| 发表于 2024-3-9 22:26:40 | 只看该作者
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”的声明
回复

使用道具 举报

26

主题

1904

帖子

6941

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6941
5#
发表于 2024-3-10 11:55:17 | 只看该作者
llddkzf 发表于 2024-3-9 22:26
大佬 不行啊 编译出错了

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

哦,没注意它要求没const,加个强转就行了
@ OpenPrinter((LPTSTR)@<打印机名称>.GetText(), (LPHANDLE)&@<打印机句柄>, @<pDefault>)
回复

使用道具 举报

18

主题

85

帖子

626

积分

高级会员

Rank: 4

积分
626
6#
 楼主| 发表于 2024-3-11 10:52:22 | 只看该作者
Xelloss0618 发表于 2024-3-10 11:55
哦,没注意它要求没const,加个强转就行了
@ OpenPrinter((LPTSTR)@.GetText(), (LPHANDLE)&@, @) ...

感谢 大佬的 热心解惑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-27 10:03 , Processed in 0.085106 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表