随笔- 19  文章- 0  评论- 0  阅读- 6041 

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

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

 

DLL的生成:

1
2
3
4
5
6
7
8
*.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得到其里位图信息的源码,自己找了好长时间,无意中想到的笨方法:

1
2
3
4
5
6
7
8
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处理得到位图信息:

1
2
3
4
5
6
7
8
9
10
11
CDC *pdc = CDC::FromHandle(*(HDC *)p);
CBitmap  *pBitmap;
 
CBitmap  *pBitmap;
BITMAP bm;
 
if((pBitmap = pdc->GetCurrentBitmap()) == NULL)
{
    return 0;
}
pBitmap->GetBitmap(&bm);

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

 posted on   chagmf  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 如何打造一个高并发系统?
· 《SpringBoot》EasyExcel实现百万数据的导入导出
点击右上角即可分享
微信分享提示