这两天做了打印机的上位机驱动,要生成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
原文地址:http://www.cnblogs.com/chagmf/p/3799610.html