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

  • 相关阅读:
    Rocky Linux8国内镜像源
    强制缓存和协商缓存的区别
    从源码来看VUE的执行流程
    plugin
    判断数据类型的方法
    获取函数参数
    BFC
    VUE的$nextTick
    HTTP
    JavaScript创建和触发自定义事件
  • 原文地址:https://www.cnblogs.com/chagmf/p/3799610.html
Copyright © 2011-2022 走看看