WinCE串口编程API函数

1.打开串口

HANDLE CreateFile(

     LPCTSTR lpFileName,

     DWORD dwDesiredAccess,

     DWORD dwShareMode,

     LPSECURITY_ATTRIBUTES lpSecurityAttributes,

     DWORD dwCreationDisposition,

     DWORD dwFlagsAndAttributes,

     HANDLE hTemplateFile

);

在Windows CE下,利用CreateFile函数打开一个COM口时,dwShareMode(共享模式)必须设置为0,表示独占方式;lpSecurityAttributes(安全参数)必须设置为NULL;hTemplateFile(模板文件)必须设置为NULL;dwCreationDisposition需要设置为OPEN_EXISTING。则上述函数简化为:

HANDLE CreateFile(LPCTSTR lpFileNameDWORD dwDesiredAccess0, NULL, OPEN_EXISTING,  DWORD dwFlagsAndAttributesNULL);

其中dwDesiredAccess设置为GENERIC_READ表示可读,设置为GENERIC_WRITE表示可写。通常可通过如下示例打开一个串口。

CreateFile(
    _T("COM1:"),
    GENERIC_READ | GENERIC_WRITE,    // 允许读和写
    0,                           // 独占方式(共享模式)
    NULL,
    OPEN_EXISTING,                // 打开而不是创建(创建方式)
    0,

    NULL

);

打开串口成功,函数返回串口句柄;打开串口失败,函数返回INVALID_HANDLE_VALUE

2.关闭串口

BOOL CloseHandle(

    HANDLE hObject

);

如:CloseHandle(m_hComm); //m_hComm是CreateFile函数返回的串口句柄。

关闭串口成功,函数返回非零值;关闭串口失败,函数返回零。

3.DCB(设备控制块)

  DCB结构完全描述了串口的使用参数。

typedef struct _DCB {

    DWORD DCBlength;      /* sizeof(DCB)                     */

    DWORD BaudRate;       /* Baudrate at which running       */

    DWORD fBinary: 1;     /* Binary Mode (skip EOF check)    */

    DWORD fParity: 1;     /* Enable parity checking          */

    DWORD fOutxCtsFlow:1; /* CTS handshaking on output       */

    DWORD fOutxDsrFlow:1; /* DSR handshaking on output       */

    DWORD fDtrControl:2;  /* DTR Flow control                */

    DWORD fDsrSensitivity:1; /* DSR Sensitivity              */

    DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */

    DWORD fOutX: 1;       /* Enable output X-ON/X-OFF        */

    DWORD fInX: 1;        /* Enable input X-ON/X-OFF         */

    DWORD fErrorChar: 1;  /* Enable Err Replacement          */

    DWORD fNull: 1;       /* Enable Null stripping           */

    DWORD fRtsControl:2;  /* Rts Flow control                */

    DWORD fAbortOnError:1; /* Abort all reads and writes on Error */

    DWORD fDummy2:17;     /* Reserved                        */

    WORD wReserved;       /* Not currently used              */

    WORD XonLim;          /* Transmit X-ON threshold         */

    WORD XoffLim;         /* Transmit X-OFF threshold        */

    BYTE ByteSize;        /* Number of bits/byte, 4-8        */

    BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */

    BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */

    char XonChar;         /* Tx and Rx X-ON character        */

    char XoffChar;        /* Tx and Rx X-OFF character       */

    char ErrorChar;       /* Error replacement char          */

    char EofChar;         /* End of Input character          */

    char EvtChar;         /* Received Event character        */

    WORD wReserved1;      /* Fill for now.                   */

} DCB, *LPDCB;

DCBlength:指定DCB结构的大小。

BaudRate:指定通信设备的波特率,常用的如:CBR_9600。

fBinary:该参数必须设置为TRUE,使能二进制传输模式,因为Win32 API不支持非二进制传输模式。

fParity:指定是否执行奇偶校验。

fOutxCtsFlow:指定CTS(clear-to-send)信号是否被监视并作为输出流控制信号。如果该参数设置为TRUE,同时CTS信号被关闭,则输出被挂起,直到CTS信号重新发出。

fOutxDsrFlow:指定DSR(data-set-ready)信号是否被监视并作为输出流控制信号。如果该参数设置为TRUE,同时DSR信号被关闭,则输出被挂起,直到DSR信号重新发出。

fDtrControl:指定DTR(data-terminal-ready)信号是否作为数据流控制信号。该参数可以设置为:

 

DTR_CONTROL_DISABLE

当串口设备打开时,DTR信号线始终设为禁止

DTR_CONTROL_ENABLE

当串口设备打开时,DTR信号线设为使能并始终打开

DTR_CONTROL_HANDSHAKE

使DTR支持握手,此时可以调用EscapeCommFunction函数来释放DTR线上的错误

fDsrSensitivity:指定串口通信设备是否对DSR信号状态敏感。设置为TRUE,则除非DSR信号线上的电平为高,否则接收到的字节将被忽略。

fTXContinueOnXoff:指定当输入缓冲区满且收到XoffChar字符时,传输是否终止。该参数设置为TRUE,则输入缓冲区的字节数小于XoffLim定义的字节数时传输将继续,发送完XoffChar字节后将停止接收字节。如果该参数设置为FALSE,那么只有当输入缓冲区的字节数在XonLim定义的字节数内,且驱动程序发送过XonChar字符以恢复接收过程时,传输才会继续。

fOutX:指定在数据发送期间是否使用XON/XOFF流控制。该参数设置为TRUE,则当接收到XoffChar字符时将停止发送,直到接收到XonChar字符时开始发送。

fInX:指定在接收数据期间是否使用XON/XOFF流控制。该参数设置为TRUE,则当输入缓冲区中存有数据的空间达到XoffLim定义的字节数时,XoffChar将被发送;当输入缓冲区中可用的空间达到XonLim定义的字节数时,XonChar被发送。

fErrorChar:指定当收到的字符发生奇偶校验错误时,是否使用ErrorChar成员定义的字符代替。该参数设置为TRUE,且fParity设置为TRUE,将会发生替换。

fNull:指定null是否被丢弃,设置为TRUE,则接收到的null字符被丢弃。

fRtsControl:指定RTS(request-to-send)流控制,若该参数为0,则缺省值为RTS_CONTROL_HANDSHAKE

RTS_CONTROL_DISABLE

当串口设备打开时,RTS线始终为禁止

RTS_CONTROL_ENABLE

当设备打开时,RTS线始终设为使能并始终打开

RTS_CONTROL_HANDSHAKE

启动RTS握手功能。当输入缓冲区字符小于缓冲区总数的1/2时,驱动程序使RTS信号为高,超过3/4时,使RTS信号为低。若RTS握手功能可用,可调用EscapeCommFunction函数释放DTR线上的错误

RTS_CONTROL_TOGGLE

指定当发送数据时,RTS信号线为高,缓冲区数据发送完,RTS信号线为低

fAbortOnError:指定当错误发生时,读写操作是否终止。该参数设置为TRUE,则当错误发生时,所有的读写操作将终止。直到应用程序调用ClearCommError函数来获取错误信息之后,驱动程序才会进行进一步的通信。

fDummy2:该参数保留,未用。

wReserved:该参数没有被使用,必须设置为0。

XonLim:指定发送XON字符前输入缓冲区允许的最小字节数。

XoffLim:指定发送XOFF字符前输入缓冲区允许的最大字节数。最大允许接收字符数可以用定义的全部输入缓冲区字节数减去此值得到。

ByteSize:指定一个传送字节中的数据位数(数据位)。

Parity:指定奇偶校验方法

EVENPARITY

偶校验

MARKPARITY

标记校验

NOPARITY

无校验

ODDPARITY

奇校验

SPACEPARITY

Space

StopBits:指定停止位的位数

ONESTOPBIT

1位停止位

ONE5STOPBITS

1.5位停止位

TWOSTOPBITS

2位停止位

XonChar:指定发送接收的XON字符。

XoffChar:指定发送接收的XOFF字符。

ErrorChar:指定当接收到的数据发生奇偶校验错误时替换的字符。

EofChar:指定某字符作为数据结束标记。

EvtChar:指定某字符作为事件标记。

wReserved1:该参数保留,未用。

4.配置串口

BOOL GetCommState(

  HANDLE hFile,

  LPDCB lpDCB

);

该函数用来获取已打开串口的参数信息,并将这些信息填充到lpDCB参数所指向的DCB(设备控制块)中。

返回值:成功返回非零值,失败返回零

BOOL SetCommState(

  HANDLE hFile,

  LPDCB lpDCB

);

返回值:成功返回非零值,失败返回零

  该函数用来设置已打开串口的参数信息。

  在设置串口参数时,一般先调用GetCommState函数获取串口参数信息到一个DCB(设备控制块)中,然后对感兴趣的参数进行修改,最后再调用SetCommState函数完成串口参数的配置。

  例如可以通过如下代码配置串口参数:

——————————————————————————————————

//得到打开串口的当前属性参数,修改后再重新设置串口。

if (!GetCommState(m_hComm,&DCB_COM1))

{

    TRACE(_T("GetCommState error"));      

    return FALSE;

}

   

//设置串口参数

DCB_COM1.BaudRate = CBR_9600;   // 设置波特率9600

DCB_COM1.fBinary = TRUE; // 设置二进制模式,此处必须设置TRUE

DCB_COM1.fParity = TRUE; // 支持奇偶校验

DCB_COM1.fOutxCtsFlow = FALSE;  // No CTS output flow control

DCB_COM1.fOutxDsrFlow = FALSE;  // No DSR output flow control

DCB_COM1.fDtrControl = DTR_CONTROL_DISABLE; // No DTR flow control

DCB_COM1.fDsrSensitivity = FALSE; // DSR sensitivity

DCB_COM1.fTXContinueOnXoff = TRUE; // XOFF continues Tx

DCB_COM1.fOutX = FALSE;     // No XON/XOFF out flow control

DCB_COM1.fInX = FALSE;        // No XON/XOFF in flow control

DCB_COM1.fErrorChar = FALSE;    // Disable error replacement

DCB_COM1.fNull = FALSE;  // Disable null stripping

DCB_COM1.fRtsControl = RTS_CONTROL_DISABLE;   //No RTS flow control

DCB_COM1.fAbortOnError = FALSE;  // 当串口发生错误,并不终止串口读写

DCB_COM1.ByteSize = 8;   // 数据位,范围:4-8

DCB_COM1.Parity = NOPARITY; // 校验模式

DCB_COM1.StopBits = 0;   // 1位停止位

   

//设置串口参数

if (!SetCommState(m_hComm, &DCB_COM1))

{

    TRACE(_T("SetCommState error"));      

    return FALSE;

}

——————————————————————————————————

5.读写串口

BOOL ReadFile(

  HANDLE hFile,

  LPVOID lpBuffer,

  DWORD nNumberOfBytesToRead,

  LPDWORD lpNumberOfBytesRead,

  LPOVERLAPPED lpOverlapped

);

hFile:CreateFile函数返回的串口句柄。

lpBuffer:指定接收数据的缓冲区。

nNumberOfBytesToRead:想要读取的字节数。

lpNumberOfBytesRead:实际读取的字节数。

lpOverlapped:Windows CE不支持,设置为NULL。

 

BOOL WriteFile(

  HANDLE hFile,

  LPCVOID lpBuffer,

  DWORD nNumberOfBytesToWrite,

  LPDWORD lpNumberOfBytesWritten,

  LPOVERLAPPED lpOverlapped

);

hFile:CreateFile函数返回的串口句柄。

lpBuffer:指定存储发送数据的缓冲区。

nNumberOfBytesToRead:指定将要发送的数据的字节数。

lpNumberOfBytesRead:实际发送的数据的字节数。

lpOverlapped:Windows CE不支持,设置为NULL。

读写函数的返回值都是成功时返回非零值,失败时返回零。

例:

DWORD dwLength;

char *recvBuf = new char[1024];

BOOL fReadState = ReadFile(m_hComm, recvBuf, 1024, &dwLength, NULL);

delete[] recvBuf;

 

DWORD dwactlen;

char *psendbuf = new char[32];

BOOL fWriteState = WriteFile(m_hComm, psendbuf, 32, &dwactlen, NULL);

delete[] psendbuf;

需要注意的是,由于从串口读写数据的速度比较慢,因此一般情况下,不会在主线程中读写大量的数据,而是创建单独的线程来读写数据,特别是读数据


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.异步串口I/O

BOOL GetCommMask(

  HANDLE hFile,

  LPDWORD lpEvtMask

);

BOOL SetCommMask(

  HANDLE hFile,

  DWORD dwEvtMask

);

BOOL WaitCommEvent(

  HANDLE hFile,

  LPDWORD lpEvtMask,

  LPOVERLAPPED lpOverlapped

);

GetCommMask函数用于得到串口已经设置了的串口事件,参数hFile指定已打开的串口句柄,参数lpEvtMask用于存取得到的串口事件集。SetCommMask函数的功能与GetCommMask函数正好相反,用于设置串口事件集。WaitCommEvent函数用于等待预先设置的串口事件中的某一个事件发生,该函数将阻塞线程,直到预先设置的串口事件中的某一事件的发生。参数lpEvtMask用于存储已经发生的事件,参数lpOverlapped必须设置为NULL,因为在Windows CE中不支持重叠I/O操作。

串口时间表:

EV_BREAK

检测到中断发生

EV_CTS

CTS信号改变了状态

EV_DSR

DSR信号改变了状态

EV_ERR

串口驱动程序检测到了错误,如CE_RXPARITY,CE_OVERRUN,CE_FRAME

EV_RING

检测到振铃

EV_RLSD

RLSD信号改变了状态

EV_RXCHAR

接收到了一个字符

EV_RXFLAG

接收到了一个事件字符

EV_TXEMPTY

在输出缓冲区中的最后一个字符被发送

2.设置端口读写超时

BOOL GetCommTimeouts(

  HANDLE hFile,

  LPCOMMTIMEOUTS lpCommTimeouts

);

BOOL SetCommTimeouts(

  HANDLE hFile,

  LPCOMMTIMEOUTS lpCommTimeouts

);

在用ReadFile和WriteFile读写串口时,需要考虑超时问题。如果在指定的时间内没有读出或者写入指定数量的字节数据,那么ReadFile函数或者WriteFile函数就会返回。GetCommTimeouts函数用来查询当前的超时时间设置,该函数会填充一个COMMTIMEOUTS结构。SetCommTimeouts函数用来通过一个COMMTIMEOUTS结构设置超时时间。两个函数的返回值都是成功时返回非零值,失败时返回零。

typedef struct _COMMTIMEOUTS {

    DWORD ReadIntervalTimeout;          /*读间隔超时*/

    DWORD ReadTotalTimeoutMultiplier;   /*读时间系数*/

    DWORD ReadTotalTimeoutConstant;     /*读时间常量*/

    DWORD WriteTotalTimeoutMultiplier;  /*写时间系数*/

    DWORD WriteTotalTimeoutConstant;    /*写时间常量*/

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

ReadIntervalTimeout:以毫秒为单位设置通信线路上的两个字符到达之间最大时间间隔。在ReadFile操作期间,从接收到第一个字符开始计时。如果任意两个字符到达之间的时间间隔超过这个最大值,则ReadFile操作完成,返回缓冲数据。如果该值设置为0,则不使用间隔超时。

ReadTotalTimeoutMultiplier:读时间系数。以毫秒为单位设置一个用来计算读操作总超时时间的时间系数。

ReadTotalTimeoutConstant:读时间常量。以毫秒为单位设置一个用来计算读操作总超时时间的时间常量。

读总超时时间 = 读时间系数*要读的字节数 + 读时间常量

WriteTotalTimeoutMultiplier:写时间系数。以毫秒为单位设置一个用来计算写操作总超时时间的时间系数。

WriteTotalTimeoutConstant:写时间常量。以毫秒为单位设置一个用来计算写操作总超时时间的时间常量。

写总超时时间 = 写时间系数*要写的字节数 + 写时间常量

超时有间隔超时和总超时两种类型。间隔超时是指在接收时两个字符之间的最大时延。从串口读取数据时,当接收到一个字节时,通信驱动程序启动一个内部定时器开 始计时,在下一个字节到来之前,如果定时器时间超过了间隔超时时间,读操作就会被放弃。总超时是指读操作或者写操作总共花费的最大时间。写操作只支持总超 时,读操作对两种类型的超时都支持。

如果应用程序将ReadIntervalTimeout和ReadTotalTimeoutMultiplier设置为MAXDWORD,并且将ReadTotalTimeoutConstant设置为大于0并且小于MAXDWORD的数,则调用ReadFile函数时,会有以下情况:

  1 如果接收缓冲区中有字符存在,则ReadFile函数立即返回这些字符。

  2 如果接收缓冲区中没有字符,则ReadFile函数会等待直到一个字符到达,然后立即返回。

  3 若在ReadTotalTimeoutConstant设定的时间内没有任何字符到达,则ReadFile超时返回。

  间隔超时和总超时的设置是不相关的。

  下面列举一些情况:

  1 有读间隔超时,读总超时,写总超时:将COMMTIMEOUTS结构中的五个成员设置为相应值。

  2 有读总超时,写总超时:将ReadIntervalTimeout设置为0,将其他成员设置为相应值。

  3 在读一次输入缓冲区中的内容后,读操作就立即完成,不管是否读入了要求的字符:将ReadIntervalTimeout设置为MAXDWORD,

将ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都设置为0。

  4 ReadFile没有超时设置,直到有适当的字符数返回或者错误发生,该函数才返回:将ReadIntervalTimeout,ReadTotalTimeoutMultiplier和

ReadTotalTimeoutConstant都设置为0。

  5 WriteFile没有超时设置:将WriteTotalTimeoutMultiplier和

WriteTotalTimeoutConstant都设置为0。

例:

——————————————————————————————————

COMMTIMEOUTS CommTimeOuts;

GetCommTimeouts(m_hComm, &CommTimeOuts);

CommTimeOuts.ReadIntervalTimeout = 100;/* 接收字符间最大时间间隔 */

CommTimeOuts.ReadTotalTimeoutMultiplier = 1;    

CommTimeOuts.ReadTotalTimeoutConstant = 100;/* 读数据总超时常量 */

CommTimeOuts.WriteTotalTimeoutMultiplier = 0;

CommTimeOuts.WriteTotalTimeoutConstant = 0;     

SetCommTimeouts(m_hComm, &CommTimeOuts);

——————————————————————————————————

——————————————————————————————————

COMMTIMEOUTS CommTimeOuts;

GetCommTimeouts (m_hComm, &CommTimeOuts);

CommTimeOuts.ReadIntervalTimeout = MAXDWORD; 

CommTimeOuts.ReadTotalTimeoutMultiplier = 0; 

CommTimeOuts.ReadTotalTimeoutConstant = 0;   

CommTimeOuts.WriteTotalTimeoutMultiplier = 10; 

CommTimeOuts.WriteTotalTimeoutConstant = 1000; 

SetCommTimeouts( m_hComm, &CommTimeOuts )

——————————————————————————————————

=========================================


3.设置接收/发送缓冲区大小

BOOL SetupComm(

  HANDLE hFile,

  DWORD dwInQueue,

  DWORD dwOutQueue

);

hFile指定已打开的串口句柄,dwInQueue指定接收缓冲区的大小,dwOutQueue指定发送缓冲区的大小。

返回值:成功时返回非零值,失败时返回零。

例:

SetupComm(m_hComm,512,512);

如果不使用该函数,系统会推荐一个适合的默认值。

4.控制串口

BOOL SetCommBreak(

  HANDLE hFile

);

BOOL ClearCommBreak(

  HANDLE hFile

);

  SetCommBreak函数用来停止串口传输字符并且设置串口为中断状态,ClearCommBreak函数用于重新传输字符,hFile指定已打开的串口句柄。

5.清空串口缓冲区

BOOL PurgeComm(

  HANDLE hFile,

  DWORD dwFlags

);

  PurgeComm函数用于清空串口的接收缓冲区与发送缓冲区。dwFlags参数用来设置操作类型,设置为PURGE_TXCLEAR,表示清空发送缓冲区,设置为PURGE_RXCLEAR,表示清空接收缓冲区。两者也可以组合使用,表示同时清空接收缓冲区和发送缓冲区。

例:

PurgeComm(ceSeries->m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR );

6.清除错误并查询状态

BOOL ClearCommError(

  HANDLE hFile,

  LPDWORD lpErrors,

  LPCOMSTAT lpStat

);

  ClearCommError函数用于清除驱动程序产生的任何错误并返回当前串口的状态。lpErrors表示发生的错误码,lpStat指向COMSTAT结构,用于存储当前串口的状态。

 

 

 

  错误码表:

CE_BREAK

硬件检测到了一个中断情况

CE_FRAME

硬件检测到了一个帧错误

CE_IOE

硬件通信时发生一个I/O错误

CE_MODE

请求模式未被支持,或者hFile参数无效。如果指定了这个错误,那么它就是唯一的合法错误。

CE_OVERRUN

字符缓冲区被侵占,下一个字符丢失

CE_RXOVER

输入缓冲区溢出。输入缓冲区没有空间或者收到end-of-file (EOF)字符后又收到字符

CE_RXPARITY

硬件检测到奇偶校验错误

CE_TXFULL

应用程序试图发送一个字符,但输出缓冲区已满

COMSTAT结构体:

typedef struct _COMSTAT {

    DWORD fCtsHold : 1;

    DWORD fDsrHold : 1;

    DWORD fRlsdHold : 1;

    DWORD fXoffHold : 1;

    DWORD fXoffSent : 1;

    DWORD fEof : 1;

    DWORD fTxim : 1;

    DWORD fReserved : 25;

    DWORD cbInQue;

    DWORD cbOutQue;

} COMSTAT, *LPCOMSTAT;

fCtsHold:表示是否正在等待CTS (Clear to Send)信号。

fDsrHold:表示是否正在等待DSR (Data Set Ready)信号。

fRlsdHold:表示是否正在等待RLSD (Receive Line Signal Detect)(接收线路信号检测,也叫载波检测)信号。

fXoffHold:表示是否因为收到XOFF字符而等待。

fXoffSent:表示是否因为驱动程序发送XOFF字符而等待。

fEof:表示是否收到End of File (EOF)字符。

fTxim:如果是1,表示队列中的字符是由TransmitCommChar函数写入的而不是WriteFile函数。

fReserved:保留,未用。

cbInQue:表示接收缓冲区中存储的待ReadFile读取的字节数。

cbOutQue:表示发送缓冲区中存储的待发送的字节数。

例:

DWORD dwReadErrors;

COMSTAT    cmState;

ClearCommError(m_hComm,&dwReadErrors,&cmState);


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 将发送目录中的数据写入打印机 5. API之文本和字体函数 AddFontResource 在Windows系统中添加一种字体资源 CreateFont 用指定的属性创建一种逻辑字体 CreateFontIndirect 用指定的属性创建一种逻辑字体 CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定的矩形中 DrawTextEx 与DrawText相似,只是加入了更多的功能 EnumFontFamilies 列举指定设备可用的字体 EnumFontFamiliesEx 列举指定设备可用的字体 EnumFonts 列举指定设备可用的字体 ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串 GetCharWidth 调查字体中一个或多个字符的宽度 GetFontData 接收一种可缩放字体文件的数据 GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息 GetKerningPairs 取得指定字体的字距信息 GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息 GetRasterizerCaps 了解系统是否有能力支持可缩放的字体 GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素 GetTextAlign 接收一个设备场景当前的文本对齐标志 GetTextCharacterExtra 判断额外字符间距的当前值 GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 GetTextColor 判断当前字体颜色。通常也称为"前景色" GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 GetTextExtentPoint 判断一个字串的大小(范围) GetTextFace 获取一种字体的字样名 GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息 GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 PolyTextOut 描绘一系列字串 RemoveFontResource 从Windows系统中删除一种字体资源 SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 SetTextColor 设置当前文本颜色。这种颜色也称为"前景色" SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 TabbedTextOut 支持制表站的一个文本描绘函数 TextOut 文本绘图函数 6. API之菜单函数 AppendMenu 在指定的菜单里添加一个菜单项 CheckMenuItem 复选或撤消复选指定的菜单条目 CheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目 CreateMenu 创建新菜单 CreatePopupMenu 创建一个空的弹出式菜单 DeleteMenu 删除指定的菜单条目 DestroyMenu 删除指定的菜单 DrawMenuBar 为指定的窗口重画菜单 EnableMenuItem 允许或禁止指定的菜单条目 GetMenu 取得窗口中一个菜单的句柄 GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 GetMenuContextHelpId 取得一个菜单的帮助场景ID GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 GetMenuItemCount 返回菜单中条目(菜单项)的数量 GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息 GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 GetMenuState 取得与指定菜单条目状态有关的信息 GetMenuString 取得指定菜单条目的字串 GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 GetSystemMenu 取得指定窗口的系统菜单的句柄 HiliteMenuItem 控制顶级菜单条目的加亮显示状态 InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 InsertMenuItem 插入一个新菜单条目 IsMenu 判断指定的句柄是否为一个菜单的句柄 LoadMenu 从指定的模块或应用程序实例中载入一个菜单 LoadMenuIndirect 载入一个菜单 MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 ModifyMenu 改变菜单条目 RemoveMenu 删除指定的菜单条目 SetMenu 设置窗口菜单 SetMenuContextHelpId 设置一个菜单的帮助场景ID SetMenuDefaultItem 将一个菜单条目设为默认条目 SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) SetMenuItemInfo 为一个菜单条目设置指定的信息 TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 作者Blog:http://blog.csdn.net/daiguopeng/ 相关文章 用VC 6.0实现串行通信的三种方法 windows运行命令详解 Windows API函数大全四 Windows API函数大全三 Windows API函数大全二
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值