zoukankan      html  css  js  c++  java
  • vc dll的生成和使用 && HDC和CDC转换 && 根据HDC得到HBITBMP

    这两天做了打印机的上位机驱动,要生成DLL,了解了这方面的东东,记录下简单。

    因为要在wince平台上使用,接口不能用MFC类,所以费劲的转换成了非MFC,也就使用Non-MFC Dlls

    DLL的生成:

    *.h
    
    #ifndef __PRINTERCONTROL_H__
    #define __PRINTERCONTROL_H__
    
    int __declspec(dllexport)PrintDC(void *p);
    
    #endif
    

      因为要静态调用需要*.lib 所以还要生成.def文件,直接创建即可,编译OK

    DLL的使用:

    可以在头文件里面加入#pragma comment(lib,"PrinterControl.lib") 

    也可以在配置属性里面设置的;

    extern C,要使用,必须在生成DLL的源文件和头文件里添加,才能在使用的工程里使用

    再顺便贴个 只根据HDC得到其里位图信息的源码,自己找了好长时间,无意中想到的笨方法:

    	HBITMAP	hBmp;
    	HBITMAP	hOld;
    	BITMAP bm;
    	hBmp = CreateCompatibleBitmap(hDC, 0, 0);
    	hOld  = (HBITMAP)SelectObject(hDC, hBmp);
    	SelectObject(hDC, hOld);
    	::DeleteObject(hBmp);
    	::GetObject(hOld, sizeof(bm), &bm);
    

    之前自己使用的HDC是转CDC处理得到位图信息:

    	CDC *pdc = CDC::FromHandle(*(HDC *)p);
    	CBitmap  *pBitmap;
    
    	CBitmap  *pBitmap;
    	BITMAP bm;
    
    	if((pBitmap = pdc->GetCurrentBitmap()) == NULL)
    	{
    		return 0;
    	}
    	pBitmap->GetBitmap(&bm);
    

      这痛苦的日子啊,VC三年前都放下了,是不想再拾起来了,痛苦的API

  • 相关阅读:
    超详细的java生成excel文件并下载
    springboot 单元测试
    git常用操作命令
    mac终端指定应用程序打开文件、文件夹
    map常用遍历方法
    视图、存储过程和函数(二)
    视图、存储过程和函数(一)
    protobuf安装旧版本(适用于mac)
    mac常用快捷键
    MySQL 中的坑
  • 原文地址:https://www.cnblogs.com/chagmf/p/3799610.html
Copyright © 2011-2022 走看看