é温 Win32 API ----- æªå±æå®çªå£å¹¶æå°
http://blog.csdn.net/smstong/article/details/42082039
æå说å¨ä¸ä¸ªVC++6.0å¼åç项ç®ä¸è¦å å ¥æå°çªå£çåè½ï¼è®©å¸®å¿å个代ç ä¾å ¶è°ç¨ãè¿ä¹èçIDEå½ç¶ä¸æ³ç¢°äºï¼èä¸ä¹ä¸å欢MFC笨æä¸æ¸ æ°çå°è£ ï¼æ以å³å®éç¨çº¯Win32 APIï¼ç¶åç¨C++ç±»ç®åå°è£ ä¸ä¸ã
1 åºæ¬æè·¯
çªå£DCåæå°æºDCæ¯ä¸¤ç±»ä¸å ¼å®¹çDCï¼æ以å®ä»¬ä¹é´ä¼ éä½å¾åªè½éè¿DIBãé¦å ï¼éè¿BitBlt()æè¦æå°çªå£ç客æ·åºæ·è´å°DDBå åä½å¾ä¸ï¼ç¶åéè¿GetDIBits()æDDB转æ¢ä¸ºDIBï¼æåéè¿StretchDIBits()åæå°æºDCè¾åºã
2 代ç å®ç°
头æ件Â
WinowPrinter.h
#pragma once
/********************************************************************************
WindowPrinter æå°çªå£ç±»
åè½æè¿°ï¼
æä¾æªå±çªå£å¹¶éè¿é»è®¤æå°æºï¼èªå¨è¿è¡å±
ä¸ç¼©æ¾æå°
使ç¨è¯´æï¼
æ ·ä¾ä»£ç å¦ä¸ã
HWND hwnd = this->GetSafeWnd();
WindowPrinter::PrintWindowClientArea(hwnd);
********************************************************************************/
class WindowPrinter
{
public:
WindowPrinter();
~WindowPrinter();
public:
/*
åè½ï¼è·åå½åé»è®¤æå°æºçDC
è¿åï¼æåè¿åæå°æºçDCï¼å¤±è´¥è¿åNULL
*/
static HDC GetPrinterDC();
/*
åè½ï¼æå°çªå£å®¢æ·åºå
容å°æå°æºï¼èªå¨ç¼©æ¾å±
ä¸æå°
åæ°: hWnd-被æå°çªå£çå¥æ
*/
static void PrintWindowClientArea(HWND hwnd);
};
Â
å®ç°æ件 WindowPrinter.cpp
#include "stdafx.h"
#include "WindowPrinter.h"
#include <Winspool.h>
WindowPrinter::WindowPrinter()
{
}
WindowPrinter::~WindowPrinter()
{
}
/*
åè½ï¼è·åå½åé»è®¤æå°æºçDC
è¿åï¼æåè¿åæå°æºçDCï¼å¤±è´¥è¿åNULL
*/
HDC WindowPrinter::GetPrinterDC()
{
DWORD dwNeeded, dwReturned;
HDC hdc;
::EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 4, NULL, 0, &dwNeeded, &dwReturned);
PRINTER_INFO_4* pinfo4 = (PRINTER_INFO_4*)malloc(dwNeeded);
::EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 4, (BYTE*)pinfo4, dwNeeded, &dwNeeded, &dwReturned);
hdc = ::CreateDC(NULL, pinfo4->pPrinterName, NULL, NULL);
free(pinfo4);
return hdc;
}
/*
åè½ï¼æå°çªå£å®¢æ·åºå
容å°æå°æºï¼èªå¨ç¼©æ¾å±
ä¸æå°
åæ°: hWnd-被æå°çªå£çå¥æ
*/
void WindowPrinter::PrintWindowClientArea(HWND hWnd)
{
if (hWnd == NULL) return;
RECT rectClient;
::GetClientRect(hWnd, &rectClient);
int width = rectClient.right - rectClient.left;
int height = rectClient.bottom - rectClient.top;
// éè¿å
åDCå¤å¶å®¢æ·åºå°DDBä½å¾
HDC hdcWnd = ::GetDC(hWnd);
HBITMAP hbmWnd = ::CreateCompatibleBitmap(hdcWnd, width, height);
HDC hdcMem = ::CreateCompatibleDC(hdcWnd);
::SelectObject(hdcMem, hbmWnd);
::BitBlt(hdcMem, 0, 0, width, height, hdcWnd, 0, 0, SRCCOPY);
// æçªå£DDB转为DIB
BITMAP bmpWnd;
::GetObject(hbmWnd, sizeof(BITMAP), &bmpWnd);
BITMAPINFOHEADER bi; // ä¿¡æ¯å¤´
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = bmpWnd.bmWidth;
bi.biHeight = bmpWnd.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = 32; // æç
§æ¯ä¸ªåç´ ç¨32bits表示转æ¢
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
DWORD dwBmpSize = ((bmpWnd.bmWidth * bi.biBitCount + 31) / 32) * 4 * bmpWnd.bmHeight; // æ¯ä¸è¡åç´ ä½32对é½
char *lpbitmap = (char*)malloc(dwBmpSize); // åç´ ä½æé
::GetDIBits(hdcMem, hbmWnd, 0, (UINT)bmpWnd.bmHeight,
lpbitmap,
(BITMAPINFO*)&bi,
DIB_RGB_COLORS);
::DeleteDC(hdcMem);
::DeleteObject(hbmWnd);
::ReleaseDC(hWnd, hdcWnd);
// å为æ件ï¼å¯éï¼
BITMAPFILEHEADER bmfHeader; // æ件头
DWORD dwSizeofDIB = dwBmpSize + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmfHeader.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER);
bmfHeader.bfSize = dwSizeofDIB;
bmfHeader.bfType = 0x4D42;
FILE* fp = NULL;
::_wfopen_s(&fp, L"capture.bmp", L"w");
::fwrite(&bmfHeader, sizeof(BITMAPFILEHEADER), 1, fp); // åå
¥æ件头
::fwrite(&bi, sizeof(BITMAPINFOHEADER), 1, fp); // åå
¥ä¿¡æ¯å¤´
::fwrite(lpbitmap, dwBmpSize, 1, fp); // åå
¥åç´ ä½
::fclose(fp);
fp = NULL;
// StretchDIBits()缩æ¾æå°DIB
HDC hdcPrinter = WindowPrinter::GetPrinterDC();
if (hdcPrinter == NULL)
return;
int pageWidth = ::GetDeviceCaps(hdcPrinter, HORZRES);
int pageHeight = ::GetDeviceCaps(hdcPrinter, VERTRES);
float scaleX = (float)pageWidth / (float)bmpWnd.bmWidth;
float scaleY = (float)pageHeight / (float)bmpWnd.bmHeight;
float scale = scaleX < scaleY ? scaleX : scaleY;
int xDst, yDst, cxDst, cyDst;
cxDst = (int)((float)bmpWnd.bmWidth * scale);
cyDst = (int)((float)bmpWnd.bmHeight * scale);
xDst = (int)((pageWidth - cxDst) / 2);
yDst = (int)((pageHeight - cyDst) / 2);
static DOCINFO di = { sizeof(DOCINFO), L"PRINTJOBNAME" };
if (::StartDoc(hdcPrinter, &di) > 0)
{
if (::StartPage(hdcPrinter) > 0)
{
::StretchDIBits(hdcPrinter,
xDst, yDst, cxDst, cyDst,
0, 0, bmpWnd.bmWidth, bmpWnd.bmHeight,
lpbitmap,
(BITMAPINFO*)&bi,
DIB_RGB_COLORS,
SRCCOPY);
::EndPage(hdcPrinter);
}
::EndDoc(hdcPrinter);
}
::DeleteDC(hdcPrinter);
::free(lpbitmap);
}
========
win32æå°æºæ§å¶ï¼APIæå°æä½
http://blog.csdn.net/hope_v/article/details/38472241
ç´æ¥ä¸ä»£ç ï¼å°ä¸é¢ç代ç å¤å¶å°å·¥ç¨ä¸ä¿å为main.cppï¼ç¶åå¨å·¥ç¨ç®å½ä¸æ¾ä¸å¼ miku.bmpå¾çï¼ç´æ¥å°±å¯ä»¥ç¼è¯å¹¶ä¸æ§è¡äºã
#include <windows.h>
#include <stdio.h>
//è¿ä¸ªå½æ°ç¨äºè¯»åbmpå¾åæ件ï¼ç¨äºç»æå°æºæå°çæ¶å使ç¨
//infoæ¯ä½å¾ä¿¡æ¯ç»æ
//fileæ¯æ件å
//dib_ptræ¯ä½å¾rgbåç´ æ°æ®æéï¼è¾åºç¨çï¼æ以请æä¾ä¸ä¸ªvoid**
bool read_bmp(BITMAPINFO& info, const char* file, void** dib_ptr)
{
BITMAPFILEHEADER file_handle;
FILE* f = fopen(file, "rb");
if(f == 0) return false;
memset(&info, 0, sizeof(info));
fread(&file_handle, 1, sizeof(file_handle), f);
fread(&info.bmiHeader, 1, sizeof(info.bmiHeader), f);
fseek(f, file_handle.bfOffBits, SEEK_SET);
void* dib = malloc(info.bmiHeader.biSizeImage);
fread(dib, 1, info.bmiHeader.biSizeImage, f);
fclose(f);
*dib_ptr = dib;
return true;
}
//éæ¾ä½å¾çæ°æ®æéï¼éæ¾ç©ºé´
void release_bmp(void** dib_ptr)
{
if(dib_ptr != 0)
{
if(*dib_ptr != 0)
{
free(*dib_ptr);
*dib_ptr = 0;
}
}
}
int main(int argc, char* argv[])
{
PRINTDLG printInfo = {0};
printInfo.lStructSize = sizeof(printInfo);
printInfo.Flags = PD_RETURNDC | PD_RETURNDEFAULT | PD_ALLPAGES;
//PD_RETURNDEFAULT æå³çç´æ¥è¿åå½åç³»ç»é»è®¤çæå°æºè®¾ç½®ï¼è¥æ²¡æè¿ä¸ªæ è¯ï¼åä¼å¼¹åºå¯¹è¯æ¡è®©ç¨æ·èªå·±éæ©
//PD_RETURNDC æå³çè¿åçæ¯dcèä¸æ¯icï¼information contextï¼
//PD_ALLPAGES æå®âå
¨é¨âåéé®å¨åå§æ¶è¢«éä¸(缺çæ å¿)
//对äºé误çæ¶åï¼è¥éè¦ç¥éæ´å¤çé误æ¶æ¯ï¼è¯·æ§è¡CommDlgErroræ¥æ¥çè¿åå¼
//PrintDlgç®çæ¯è·åå½åç³»ç»è®¾ç½®çé»è®¤æå°æºç¸å
³ä¿¡æ¯ï¼ä¾åé¢ä½¿ç¨
if(!PrintDlg(&printInfo))
{
printInfo.Flags = 0; //æ¸
é¤æ å¿ï¼ç¶åæ§è¡å°ä¼å¼¹åºå¯¹è¯æ¡è®©ç¨æ·éæ©æå°æº
if(!PrintDlg(&printInfo))
{
printf("没æéæ©æå°æºã\n");
return 0;
}
}
//è·åæå°çæ¶åçdcï¼ç¶åå¾è¿ä¸ªdcä¸ç»å¾å°±æ¯æå°åºæ¥çæ ·åäº
HDC hPrintDC = printInfo.hDC;
//éå®å
¨å±å¯¹è±¡ï¼è·å对象æéã devmodeæ¯æå
³è®¾å¤åå§ååæå°æºç¯å¢çä¿¡æ¯
DEVMODE* devMode = (DEVMODE*)GlobalLock(printInfo.hDevMode);
if(devMode == 0)
{
printf("è·åæå°æºè®¾ç½®æ¶åçäºé误.\n");
return 0;
}
devMode->dmPaperSize = DMPAPER_A4; //æå°æºçº¸å¼ 设置为A4ã
devMode->dmOrientation = DMORIENT_PORTRAIT; //æå°æ¹å设置æ纵åæå°
//DMORIENT_LANDSCAPE æ¯æ¨ªåæå°
//对æå°æ¹åç设置ï¼ä¼å½±åhPrintDCç大å°ï¼å设宽度为1024ï¼é«åº¦ä¸º300
//åå¨æ¨ªåæå°çæ¶ådc大å°ä¼æ¯å®½1024 * é«300
//è纵åæå°çæ¶ådc大å°ä¼æ¯å®½300 * é«1024
int printQuality = devMode->dmPrintQuality; //è·åæå°æºçæå°è´¨é
//devMode->dmPrintQuality = DMRES_MEDIUM;
//设置æå°è´¨éçï¼å 为åç´ è¢«æå°å°çº¸ä¸çæ¶åæ¯æå转æ¢ç
//åä½æ¯dpiï¼æ为åç´ æ¯è±å¯¸(dots per inch)ãå°±æ¯ä¸è±å¯¸ççº¸å¼ ä¸
//æå°å¤å°ä¸ªåç´ ç¹ï¼æå³çè¿ä¸ªè´¨éè¶é«ï¼æå°ç»æè¶ç²¾ç»ï¼è¶ä½ï¼è¶ç²ç³
//设置çè´¨éå¯ä»¥æ¯å
·ä½æ°å¼ï¼ä¹å¯ä»¥æ¯å®DMRES_MEDIUM
//ä¸è¬æ们éæ©300ï¼æè
600ï¼DMRES_MEDIUM = 600dpi
//åºç¨æ们修æ¹è¿åç设置.
ResetDC(hPrintDC, devMode);
//解éå
¨å±å¯¹è±¡ï¼å¯¹åºGlobalLock
GlobalUnlock(printInfo.hDevMode);
//设置ç»å¾æ¨¡å¼ï¼ä»¥ä¿è¯ç»å¾å¯ä»¥ä¸å¤±ççç»å¶ä¸å»ï¼å 为StretchDIBitså½æ°è¦æ±è®¾ç½®è¿ä¸ªæè½å¤ä¸æ¯å¤±ççç»å¾
//å½ä½ ç¨StretchDIBitsç»å¾å¾çªå£æ¾ç¤ºçæ¶åå°±ä¼åç°ï¼24ä½å¾ï¼è¥æ²¡æè¿ä¸ªè®¾ç½®ï¼æ¯ä¼å¤±çç
SetStretchBltMode(hPrintDC, HALFTONE);
//读åä½å¾ï¼å¾
ä¼ç»å¨hPrintDCä¸é¢å»
BITMAPINFO bmp_info;
int image_width = 0, image_height = 0;
void* dib_ptr = 0;
if(!read_bmp(bmp_info, "miku.bmp", &dib_ptr))
{
printf("读åä½å¾miku.bmp失败äº.\n");
return 0;
}
image_width = bmp_info.bmiHeader.biWidth;
image_height = bmp_info.bmiHeader.biHeight;
printf("ä½å¾å¤§å°ï¼%d x %d\n", image_width, image_height);
//设置æå°æ¶åçåä½
LOGFONT lf;
lf.lfHeight = -printQuality * 1 / 2.54;
//æå°åºæ¥çååç´ é«åº¦æn个ï¼æ³¨ææ¯åç´ é«åº¦ï¼æå°å°çº¸ä¸çæ¶åæ¯éè¦å°
//åç´ è½¬æ¢æå®é
尺寸åä½ï¼æ¯å¦ä½ éè¦å¨çº¸ä¸æå°é«åº¦ä¸º1cmçåï¼å½ä½ æå°è´¨é为600dpiçæ¶å
//è¿é就设置为 -236, -600dpi * 1cm / 2.54 = -236pix
lf.lfWidth = 0;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = 5; //è¿é设置åä½ééï¼æå³çåä½çå度
lf.lfItalic = false; //æä½
lf.lfUnderline = false; //ä¸å线
lf.lfStrikeOut = 0;
lf.lfCharSet = DEFAULT_CHARSET;
lf.lfOutPrecision = 0;
lf.lfClipPrecision = 0;
lf.lfQuality = PROOF_QUALITY;
lf.lfPitchAndFamily = 0;
strcpy (lf.lfFaceName, "å®ä½"); //使ç¨å®ä½è¿è¡æå°
//å®é
ä¸è¿ä¸æ¥å¹¶ä¸æ¯å¿
é¡»çï¼å 为é»è®¤æå°æºè®¾ç½®å·²ç»é
置好äºï¼è¿éåªæ¯æ们èªå·±åºå®å¥½åä½
HFONT hUseFont = CreateFontIndirect(&lf); //å建åä½
HFONT hOldFont = (HFONT)SelectObject(hPrintDC, hUseFont); //éç¨å建çåä½
//è·ådcç大å°ï¼å®é
ä¸è¿æä¸ç§HORZRESåVERTRESå°±æ¯å®½åº¦åé«åº¦ï¼ä½æ¯ææ¥å¾å°çç»æ说计ç®ä¸æ¥åç¡®ç
//HORZSIZE æ¯Horizontal size in millimetersï¼é¡µé¢å®½åº¦ï¼æ°´å¹³ï¼ï¼åä½æ¯«ç±³mm
//VERTSIZE æ¯Vertical size in millimetersï¼é¡µé¢é«åº¦ï¼åç´ï¼ï¼åä½æ¯«ç±³mm
//LOGPIXELSX æ¯Logical pixels/inch in Xï¼xæ¹åçé»è¾åç´ æ¯è±å¯¸.åä½ pix / inchï¼åç´ æ¯è±å¯¸
//LOGPIXELSY æ¯Logical pixels/inch in Yï¼yæ¹åçé»è¾åç´ æ¯è±å¯¸.åä½ pix / inchï¼åç´ æ¯è±å¯¸
//ä¸ç¨ç®¡é»è¾æ¯ä¸ªä»ä¹ä¸è¥¿ï¼ä¸çä¼ä»ï¼ç¥éåä½æ¯pix / inchå°±è¡äº
//1 inch = 2.54 cmï¼æ以è¿éæ¯ mm / 25.4 * pix / inchï¼å¾å°çç»æå°±æ¯dc大å°åç´ æ°ä¸ºåä½
int dc_page_width = GetDeviceCaps(hPrintDC, HORZSIZE) / 25.4 * GetDeviceCaps(hPrintDC, LOGPIXELSX);
int dc_page_height = GetDeviceCaps(hPrintDC, VERTSIZE) / 25.4 * GetDeviceCaps(hPrintDC, LOGPIXELSY);
//好äºï¼å¯ä»¥å¼å§æå°äº
DOCINFO doc_info = {sizeof(DOCINFO), "æµè¯æå°æº"};
//cbSize
//ç»æä½çåè大å°
//lpszDocName
//ææææ¡£åçå符串æéï¼è¯¥å符串以null为尾ã
//lpszOutput
//ææè¾åºæ件çå称çå符串æéï¼è¯¥å符串以null为尾ãå¦ææé为nullï¼é£ä¹è¾åºå°ä¼åéè³æ个设å¤ï¼è¯¥è®¾å¤å°ç±ä¼ éè³ StartDoc å½æ°çâ设å¤ä¸ä¸æå¥æâHDCæ¥ææã
//lpszDatatype
//æéæå代表æç§æ°æ®ç±»åçå符串ï¼èæ°æ®ç¨äºè®°å½æå°å·¥ä½ï¼è¯¥å符串以null为尾ãåæ³å¼å¯éè¿è°ç¨å½æ° EnumPrintProcessorDatatypes å¯å¾å°ï¼äº¦å¯ä¸º NULLã
//fwType
//æææå°å·¥ä½çå
¶å®ä¿¡æ¯ãå¯ä¸º0æè
以ä¸å¼ä¹ä¸ï¼
//DI_APPBANDING
//DI_ROPS_READ_DESTINATION
//å¼å§ä¸ä¸ªæ¡£æ¡ï¼æå°çæ¶åæ¯æç
§æ¡£æ¡æ¥åºåçï¼è¿åä½ä¸ç¼å·ï¼å¤§äº0ç为æ£å¸¸ï¼
int doc_idd = StartDoc(hPrintDC, &doc_info);
if(doc_idd <= 0)
{
printf("StartDoc é误ï¼é误代ç ï¼%d\n", GetLastError());
goto last_code;
}
printf("ä½ä¸ç¼å·ï¼%d\n", doc_idd);
//å¼å§ä¸ä¸ªæå°é¡µé¢ï¼å¤§äºçäº0为æ£ç¡®
if(StartPage(hPrintDC) < 0)
{
printf("StartPage é误\n");
AbortDoc(hPrintDC); //ç»ædocæå°
goto last_code;
}
//设å®æååå¾åç»å¶çåºå
RECT rcText = {0, 30, dc_page_width, 300};
RECT rcImage = {30, 300, dc_page_width - 30, dc_page_height - 30};
//åä¸æå
DrawText(hPrintDC, "mikuï¼æµè¯æå°å¾ç", -1, &rcText, DT_VCENTER | DT_SINGLELINE | DT_CENTER);
//å°å¾çç»å¶å°dcä¸ï¼ç»æå°æºæå°åºæ¥
//è¿ä¸ªå½æ°å¸¦æ伸åè½çï¼è¥destç宽度é«åº¦åsrcä¸ä¸è´çæ¶åä»ä¼æ伸
StretchDIBits(hPrintDC, rcImage.left, rcImage.top, rcImage.right - rcImage.left,
rcImage.bottom - rcImage.top, 0, 0, image_width, image_height,
dib_ptr, &bmp_info, DIB_RGB_COLORS, SRCCOPY);
//ç»æè¿ä¸é¡µï¼å
¶å®å¯ä»¥å¾ªç¯çstartpageãendpageï¼è¿æ ·å¨ä¸ä¸ªææ¡£ä¸è¿è¡å¤ä¸ªé¡µé¢çæå°
EndPage(hPrintDC);
EndDoc(hPrintDC);
printf("æå°é¡ºå©å®æäº. o(â©_â©)o \n");
last_code:
//éåæ§çåä½
SelectObject(hPrintDC, hOldFont);
//å é¤gdi对象ï¼éæ¾å
å
DeleteObject(hUseFont);
//éæ¾ä½å¾å
å
release_bmp(&dib_ptr);
return 0;
}
 Â
========
win32 æå°æºapi
http://www.cnblogs.com/liangxiaofeng/p/5713480.html
Â
4. APIä¹æå°å½æ°
AbortDoc åæ¶ä¸ä»½ææ¡£çæå°
AbortPrinter å é¤ä¸ä¸å°æå°æºå ³èå¨ä¸èµ·çç¼å²æ件
AddForm 为æå°æºç表åå表添å ä¸ä¸ªæ°è¡¨å
AddJob ç¨äºè·åä¸ä¸ªææçè·¯å¾åï¼ä»¥ä¾¿ç¨å®ä¸ºä½ä¸å建ä¸ä¸ªåå°æå°æ件ãå®ä¹ä¼ä¸ºä½ä¸åé ä¸ä¸ªä½ä¸ç¼å·
AddMonitor 为系ç»æ·»å ä¸ä¸ªæå°æºçè§å¨
AddPort å¯å¨"æ·»å 端å£"对è¯æ¡ï¼å 许ç¨æ·å¨ç³»ç»å¯ç¨ç«¯å£å表ä¸å å ¥ä¸ä¸ªæ°ç«¯å£
AddPrinter å¨ç³»ç»ä¸æ·»å ä¸å°æ°æå°æº
AddPrinterConnection è¿æ¥æå®çæå°æº
AddPrinterDriver 为æå®çç³»ç»æ·»å ä¸ä¸ªæå°é©±å¨ç¨åº
AddPrintProcessor 为æå®çç³»ç»æ·»å ä¸ä¸ªæå°å¤çå¨
AddPrintProvidor 为系ç»æ·»å ä¸ä¸ªæå°ä¾åºå
AdvancedDocumentProperties å¯å¨æå°æºæ档设置对è¯æ¡
ClosePrinter å ³éä¸ä¸ªæå¼çæå°æºå¯¹è±¡
ConfigurePort é对æå®ç端å£ï¼å¯å¨ä¸ä¸ªç«¯å£é 置对è¯æ¡
ConnectToPrinterDlg å¯å¨è¿æ¥æå°æºå¯¹è¯æ¡ï¼ç¨å®å访é®ç½ç»çæå°æºè¿æ¥
DeleteForm ä»æå°æºå¯ç¨è¡¨åå表ä¸å é¤ä¸ä¸ªè¡¨å
DeleteMonitor å é¤æå®çæå°çè§å¨
DeletePort å¯å¨"å é¤ç«¯å£"对è¯æ¡ï¼å 许ç¨æ·ä»å½åç³»ç»å é¤ä¸ä¸ªç«¯å£
DeletePrinter å°æå®çæå°æºæ å¿ä¸ºä»ç³»ç»ä¸å é¤
DeletePrinterConnection å é¤ä¸æå®æå°æºçè¿æ¥
DeletePrinterDriver ä»ç³»ç»å é¤ä¸ä¸ªæå°æºé©±å¨ç¨åº
DeletePrintProcessor ä»æå®ç³»ç»å é¤ä¸ä¸ªæå°å¤çå¨
DeletePrintProvidor ä»ç³»ç»ä¸å é¤ä¸ä¸ªæå°ä¾åºå
DeviceCapabilities å©ç¨è¿ä¸ªå½æ°å¯è·å¾ä¸ä¸ä¸ªè®¾å¤çè½åæå ³çä¿¡æ¯
DocumentProperties æå°æºé ç½®æ§å¶å½æ°
EndDocAPI ç»æä¸ä¸ªæåçæå°ä½ä¸
EndDocPrinter å¨åå°æå°ç¨åºç级å«æå®ä¸ä¸ªææ¡£çç»æ
EndPage ç¨è¿ä¸ªå½æ°å®æä¸ä¸ªé¡µé¢çæå°ï¼å¹¶åå¤è®¾å¤åºæ¯ï¼ä»¥ä¾¿æå°ä¸ä¸ä¸ªé¡µ
EndPagePrinter æå®ä¸ä¸ªé¡µå¨æå°ä½ä¸ä¸çç»å°¾
EnumForms æ举ä¸å°æå°æºå¯ç¨ç表å
EnumJobs æ举æå°éåä¸çä½ä¸
EnumMonitors æ举å¯ç¨çæå°çè§å¨
EnumPorts æ举ä¸ä¸ªç³»ç»å¯ç¨ç端å£
EnumPrinterDrivers æ举æå®ç³»ç»ä¸å·²å®è£ çæå°æºé©±å¨ç¨åº
EnumPrinters æ举系ç»ä¸å®è£ çæå°æº
EnumPrintProcessorDatatypes æ举ç±ä¸ä¸ªæå°å¤çå¨æ¯æçæ°æ®ç±»å
EnumPrintProcessors æ举系ç»ä¸å¯ç¨çæå°å¤çå¨
Escape 设å¤æ§å¶å½æ°
FindClosePrinterChangeNotification å ³éç¨FindFirstPrinterChangeNotificationå½æ°è·åçä¸ä¸ªæå°æºéå对象
FindFirstPrinterChangeNotification å建ä¸ä¸ªæ°çæ¹åéå对象ï¼ä»¥ä¾¿æ们注ææå°æºç¶æçåç§åå
FindNextPrinterChangeNotification ç¨è¿ä¸ªå½æ°å¤æ触åä¸æ¬¡æå°æºæ¹åéåä¿¡å·çåå
FreePrinterNotifyInfo éæ¾ç±FindNextPrinterChangeNotificationå½æ°åé çä¸ä¸ªç¼å²åº
GetForm åå¾ä¸æå®è¡¨åæå ³çä¿¡æ¯
GetJob è·åä¸æå®ä½ä¸æå ³çä¿¡æ¯
GetPrinter åå¾ä¸æå®æå°æºæå ³çä¿¡æ¯
GetPrinterData 为æå°æºè®¾ç½®æ³¨å表é 置信æ¯
GetPrinterDriver é对æå®çæå°æºï¼è·åä¸æå°æºé©±å¨ç¨åºæå ³çä¿¡æ¯
GetPrinterDriverDirectory å¤ææå®ç³»ç»ä¸å å«äºæå°æºé©±å¨ç¨åºçç®å½æ¯ä»ä¹
GetPrintProcessorDirectory å¤ææå®ç³»ç»ä¸å å«äºæå°æºå¤çå¨é©±å¨ç¨åºåæ件çç®å½
OpenPrinter æå¼æå®çæå°æºï¼å¹¶è·åæå°æºçå¥æ
PrinterMessageBox å¨æ¥ææå®æå°ä½ä¸çç³»ç»ä¸æ¾ç¤ºä¸ä¸ªæå°æºåºéæ¶æ¯æ¡
PrinterProperties å¯å¨æå°æºå±æ§å¯¹è¯æ¡ï¼ä»¥ä¾¿å¯¹æå°æºè¿è¡é ç½®
ReadPrinter ä»æå°æºè¯»å ¥æ°æ®
ResetDC é设ä¸ä¸ªè®¾å¤åºæ¯
ResetPrinter æ¹åæå®æå°æºçé»è®¤æ°æ®ç±»ååæ档设置
ScheduleJob æ交ä¸ä¸ªè¦æå°çä½ä¸
SetAbortProc 为Windowsæå®åæ¶å½æ°çå°å
SetForm 为æå®ç表å设置信æ¯
SetJob 对ä¸ä¸ªæå°ä½ä¸çç¶æè¿è¡æ§å¶
SetPrinter 对ä¸å°æå°æºçç¶æè¿è¡æ§å¶
SetPrinterData 设置æå°æºç注å表é 置信æ¯
StartDoc å¼å§ä¸ä¸ªæå°ä½ä¸
StartDocPrinter å¨åå°æå°ç级å«å¯å¨ä¸ä¸ªæ°ææ¡£
StartPage æå°ä¸ä¸ªæ°é¡µåè¦å è°ç¨è¿ä¸ªå½æ°
StartPagePrinter å¨æå°ä½ä¸ä¸æå®ä¸ä¸ªæ°é¡µçå¼å§
WritePrinter å°åéç®å½ä¸çæ°æ®åå ¥æå°æº
========