惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
V
V2EX
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
Vercel News
Vercel News
The Register - Security
The Register - Security
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
小众软件
小众软件
L
Lohrmann on Cybersecurity
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog
AWS News Blog
AWS News Blog
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
K
Kaspersky official blog
B
Blog RSS Feed
G
Google Developers Blog
量子位
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Scott Helme
Scott Helme
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
雷峰网
雷峰网
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
F
Full Disclosure
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
The Hacker News
The Hacker News
U
Unit 42
S
SegmentFault 最新的问题
I
InfoQ
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
罗磊的独立博客
Spread Privacy
Spread Privacy
C
CERT Recently Published Vulnerability Notes

博客园 - melody&bobo

C#加密解密 端口数据库连接 ANSI, UNICODE,UTF8编码的区别 windows2003安全设置 图片与字节数组相互转换的方法 jQuery Ajax 方法调用 Asp.Net WebService 的详细例子 使用instantclient_11_2和PL/SQL Developer工具包连接oracle 11g远程数据库 查看SQL 语句执行性能 SSIS 获取时间表达式 获得时间段之间每月的最后一天 ADSL拨号获得不同IP地址 C#(.Net) 解决Informix中文乱码问题 SQL SPLIT() 方法实现 JS获取URL参数值 datatable操作集合 表单提交文件 - melody&bobo - 博客园 nginx实现网站负载均衡测试实例(windows下IIS做负载实测) Web Application Stress Tool(WAS,Web应用负载测试工具)详细说明 Base64 加密字符串和文件
调用系统API打印图片文字
melody&bobo · 2012-05-14 · via 博客园 - melody&bobo

{
    LPCTSTR filename=_T("D:\\1.bmp");
    CPrintDialog printDlg(FALSE);
    printDlg.GetDefaults(); 
    // Or get from user:
    
// if (printDlg.DoModal() == IDCANCEL)   
    
//        return; 
    CDC dc;
    if (!dc.Attach(printDlg.GetPrinterDC())) {
        AfxMessageBox(_T("No printer founhh nn nd!")); return;
    }

    HFONT hFont,hOldFont;
    hFont = CreateFont(36,18,  0,  0,FW_NORMAL,FALSE,FALSE,  FALSE,GB2312_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,_T("黑体"));
    hOldFont = (HFONT)SelectObject(dc,hFont);

    dc.m_bPrinting = TRUE; 
    DOCINFO di;    
    // Initialise print document details
    ::ZeroMemory (&di, sizeof (DOCINFO));
    di.cbSize = sizeof (DOCINFO);
    di.lpszDocName = filename; 
    BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job 
    
// Get the printing extents
    
// and store in the m_rectDraw field of a 
    
// CPrintInfo object
    CPrintInfo Info;
    Info.SetMaxPage(1); // just one page 
    int maxw = dc.GetDeviceCaps(HORZRES);
    int maxh = dc.GetDeviceCaps(VERTRES); 
    Info.m_rectDraw.SetRect(00, maxw, maxh); 
    for (UINT page = Info.GetMinPage(); page <= 
        Info.GetMaxPage() && bPrintingOK; page++) {
            dc.StartPage();    // begin new page
            Info.m_nCurPage = page;
            CBitmap bitmap;
            if(!bitmap.Attach(::LoadImage(
                ::GetModuleHandle(NULL), filename, IMAGE_BITMAP, 00
                LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE))) {
                    AfxMessageBox(_T("Error loading bitmap!")); return;
            } 
            BITMAP bm;
            bitmap.GetBitmap(&bm);
            int w = bm.bmWidth; 
            int h = bm.bmHeight; 
            // create memory device context
            CDC memDC; 
            memDC.CreateCompatibleDC(&dc);
            CBitmap *pBmp = memDC.SelectObject(&bitmap);
            memDC.SetMapMode(dc.GetMapMode());
            dc.SetStretchBltMode(HALFTONE);
            // now stretchblt to maximum width on page
            dc.StretchBlt(15,20300110, &memDC, 00, w, h, SRCCOPY); 
            //textout
            HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0,0,0));
            HGDIOBJ hOldPen = SelectObject(dc,hPen);
            CStringW text;
            text    ="资源编码";
            TextOut(dc,15,144+80,text,text.GetLength());   
            text="设计单位";
            TextOut(dc,15,210+80,text,text.GetLength());   
            text="施工单位";
            TextOut(dc,15,276+80,text,text.GetLength());   
            text="验收单位";
            TextOut(dc,15,342+80,text,text.GetLength());   
            text="竣工日期";
            TextOut(dc,15,408+80,text,text.GetLength());   
            //Line
            MoveToEx(dc,160,180+80,NULL);
            LineTo(dc,516,180+80);

            MoveToEx(dc,160,246+80,NULL);
            LineTo(dc,516,246+80);

            MoveToEx(dc,160,312+80,NULL);
            LineTo(dc,516,312+80);

            MoveToEx(dc,160,378+80,NULL);
            LineTo(dc,516,378+80);

            MoveToEx(dc,160,444+80,NULL);
            LineTo(dc,516,444+80);

            SelectObject(dc,hOldPen);
            DeleteObject(hPen);
            // clean up
            memDC.SelectObject(pBmp);
            bPrintingOK = (dc.EndPage() > 0);   // end page
    } 
    if (bPrintingOK)
        dc.EndDoc(); // end a print job
    else dc.AbortDoc();           // abort job. 
}