15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


OnBeginPrinting, OnEndPrinting functions

Michael.FOURNEAU@is.belgacom.be
Friday, June 07, 1996

Hello,

I am developing an application with MSVC 1.51 under Windows 3.1.

When I use "Print Preview" or "Print" commands, I get the following error 
message:
"ELMI caused a General Protection Fault in module ELMI.EXE at 0003:3A27"
and the application is stopped.

All the variables used are defined in my elmiview.h as Public !

I must define a new Font size for the "Print" command.

I am lost ! Can somebody help me ?

Michael.


Here there are both functions:
CElmiView::OnBeginPrinting(...)
CElmiView::OnEndPrinting(...)


/************************************\
 * CElmiView::OnBeginPrinting (...) *
\************************************/

void CElmiView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// default preparation 
	mPageHeight = pDC->GetDeviceCaps (VERTRES);
	mPageWidth = pDC->GetDeviceCaps (HORZRES);
	      
	// LOGFONT struct: attributes for the font used     
	m_lf.lfHeight=(int)(mPageWidth * LFHEIGHT_VIEW / 640);     	// 
Character size  //++++
	
	m_Font.DeleteObject();
	m_Font.CreateFontIndirect(&m_lf);  
	  
    	DocSize = GetTotalSize();
	
	DocSize.cy = (int) (DocSize.cy * (1.0 * m_lf.lfHeight) / 
LFHEIGHT_VIEW);
	           
	mNumRows = DocSize.cy / mPageHeight + (DocSize.cy % mPageHeight > 0);
	mNumCols = DocSize.cx / mPageWidth + (DocSize.cx % mPageWidth > 0);
	pInfo->SetMinPage (1);
	pInfo->SetMaxPage (mNumRows * mNumCols);
}

/**********************************\
 * CElmiView::OnEndPrinting (...) *
\**********************************/

void CElmiView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{                                                   
	      
	// LOGFONT struct: attributes for the font used     
	m_lf.lfHeight=LFHEIGHT_VIEW;       	// Character size  //++++
	
	m_Font.DeleteObject();
	m_Font.CreateFontIndirect(&m_lf);                                     
    
}


------------------- END --------------------



LeRoy Baxter -- lbaxter@cinfo.com
Sunday, June 09, 1996

Well, I'm not sure about this, but my code for printing works and the major difference is this:

  in the OnPreparePrinting(), remove the m_Font.DeleteObject();

 in the OnEndPrinting(), remove the m_Font.CreateFontIndirect(&m_lf);                                     

----------
From: 	Michael.FOURNEAU@is.belgacom.be[SMTP:Michael.FOURNEAU@is.belgacom.be]
Sent: 	Friday, June 07, 1996 1:02 PM
To: 	mfc-l@netcom.com
Cc: 	windev-l@netcom.com
Subject: 	OnBeginPrinting, OnEndPrinting functions

Hello,

I am developing an application with MSVC 1.51 under Windows 3.1.

When I use "Print Preview" or "Print" commands, I get the following error 
message:
"ELMI caused a General Protection Fault in module ELMI.EXE at 0003:3A27"
and the application is stopped.

All the variables used are defined in my elmiview.h as Public !

I must define a new Font size for the "Print" command.

I am lost ! Can somebody help me ?

Michael.


Here there are both functions:
CElmiView::OnBeginPrinting(...)
CElmiView::OnEndPrinting(...)


/************************************\
 * CElmiView::OnBeginPrinting (...) *
\************************************/

void CElmiView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// default preparation 
	mPageHeight = pDC->GetDeviceCaps (VERTRES);
	mPageWidth = pDC->GetDeviceCaps (HORZRES);
	      
	// LOGFONT struct: attributes for the font used     
	m_lf.lfHeight=(int)(mPageWidth * LFHEIGHT_VIEW / 640);     	// 
Character size  //++++
	
	m_Font.DeleteObject();
	m_Font.CreateFontIndirect(&m_lf);  
	  
    	DocSize = GetTotalSize();
	
	DocSize.cy = (int) (DocSize.cy * (1.0 * m_lf.lfHeight) / 
LFHEIGHT_VIEW);
	           
	mNumRows = DocSize.cy / mPageHeight + (DocSize.cy % mPageHeight > 0);
	mNumCols = DocSize.cx / mPageWidth + (DocSize.cx % mPageWidth > 0);
	pInfo->SetMinPage (1);
	pInfo->SetMaxPage (mNumRows * mNumCols);
}

/**********************************\
 * CElmiView::OnEndPrinting (...) *
\**********************************/

void CElmiView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{                                                   
	      
	// LOGFONT struct: attributes for the font used     
	m_lf.lfHeight=LFHEIGHT_VIEW;       	// Character size  //++++
	
	m_Font.DeleteObject();
	m_Font.CreateFontIndirect(&m_lf);                                     
    
}


------------------- END --------------------







| Вернуться в корень Архива |