weixin_52213592 2023-10-07 15:43 采纳率: 0%
浏览 5
已结题

cvi 实现 右键按钮 实现打印机的功能

CVI2017 实现 windows 打印功能, 或者用 windows C 变成 搞个 动态库调用也行, 或者直接 windows C 调用

  • 写回答

12条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-07 15:45
    关注
    获得0.45元问题酬金

    引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。


    要在CVI中实现Windows打印功能,可以按照以下步骤进行操作:

    1. 创建一个新的CVI项目。
    2. 在项目中添加一个按钮控件,用于触发打印动作。这可以通过在资源编辑器中拖放一个按钮控件来完成。
    3. 在按钮的回调函数中添加以下代码:
    #include <windows.h>
    #include <winspool.h>
    
    void Print()
    {
        DOCINFO di;
        HANDLE printer;
        BOOL success;
    
        printer = (HANDLE)NULL;
    
        // 打开默认打印机
        success = OpenPrinter(NULL, &printer, NULL);
        if (!success)
            return;
    
        // 设置文档信息
        ZeroMemory(&di, sizeof(di));
        di.cbSize = sizeof(DOCINFO);
        di.lpszDocName = "My Document";
        di.lpszOutput = NULL;
        di.lpszDatatype = NULL;
        di.fwType = 0;
    
        // 开始打印文档
        success = StartDocPrinter(printer, 1, (LPBYTE)&di);
        if (!success)
        {
            ClosePrinter(printer);
            return;
        }
    
        // 向打印机发送数据
        success = StartPagePrinter(printer);
        if (!success)
        {
            EndDocPrinter(printer);
            ClosePrinter(printer);
            return;
        }
    
        // TODO: 这里写入要打印的数据
    
        // 结束打印页
        success = EndPagePrinter(printer);
        if (!success)
        {
            EndDocPrinter(printer);
            ClosePrinter(printer);
            return;
        }
    
        // 结束打印文档
        success = EndDocPrinter(printer);
        if (!success)
        {
            ClosePrinter(printer);
            return;
        }
    
        // 关闭打印机
        ClosePrinter(printer);
        return;
    }
    
    int CVICALLBACK ButtonCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
    {
        if (event == EVENT_COMMIT)
        {
            Print();
        }
        
        return 0;
    }
    
    int main(int argc, char *argv[])
    {
        // 创建主窗口并运行
        if (InitCVIRTE(argc, argv, 0) == 0)
            return -1;  /* out of memory */
    
        int panel = LoadPanel(0, "YourPanel.uir", PANEL); // 替换为你的UIR文件名和主面板名称
        DisplayPanel(panel);
        RunUserInterface();
        DiscardPanel(panel);
    
        // 退出 CVI
        return 0;
    }
    
    1. 保存并构建项目。
    2. 运行程序,点击按钮即可触发打印功能。

    注意:上述代码只实现了最基本的打印功能,你需要在Print()函数中添加相应的代码来实现你自己的打印逻辑。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 创建了问题 10月7日

悬赏问题

  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan