CDC::StartDoc
Informa al controlador de dispositivo que un nuevo trabajo de impresión está iniciando y que todo el StartPage y llamadas subsiguientes de EndPage se deben colocar en cola bajo el mismo trabajo hasta que una llamada de EndDoc aparece.
int StartDoc(
LPDOCINFO lpDocInfo
);
int StartDoc(
LPCTSTR lpszDocName
);
Parámetros
lpDocInfo
Señala una estructura de DOCINFO que contiene el nombre de archivo de documento y el nombre del archivo de salida.lpszDocName
Puntero a una cadena que contiene el nombre de archivo de documento.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es mayor que cero.Este valor es el identificador del trabajo de impresión del documento.
Si se produce un error en la función, el valor devuelto es menor o igual que cero.
Comentarios
Esto garantiza que los documentos de una página no son entremezclados más tiempo con otros trabajos.
Para las versiones de Windows 3,1 y versiones posteriores, esta función reemplaza el escape de impresora de STARTDOC .Utilizando esta función garantiza que los documentos que contienen más de una página no se están intercalados con otros trabajos de impresión.
StartDoc no se debe utilizar dentro de metarchivos.
Ejemplo
Este fragmento de código obtiene la impresora predeterminada, abra un trabajo de impresión, y pone en cola una página con “Hello, World!” en él.Dado que el texto formulario por este código no se ajusta a las unidades lógicas de la impresora, el texto de salida puede ser en tales pequeñas letras que el resultado es ilegible.La escala de la CDC funciona, por ejemplo SetMapMode, SetViewportOrg, y SetWindowExt, se puede utilizar para corregir el ajuste de escala.
void CDCView::DoStartDoc()
{
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initalize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}
}
Requisitos
encabezado: afxwin.h