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

转载于:https://www.cnblogs.com/chagmf/p/3799610.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值