PDA

View Full Version : Print outputs on the printer



choobin84
چهارشنبه 01 آبان 1387, 10:25 صبح
چطوري نتايج برنامه رو به سمت چاپگر printer بِفِشنايَم؟
سي يا پلاس پلاسش نمي فَرقد...
ممنون

__H2__
چهارشنبه 01 آبان 1387, 22:00 عصر
سلام
اگر بخواهیم در ++VC بحث کنیم...
(من سالها است که VC++Native کار نکرده ام ولی سعی میکنم کمک و راهنمایی کوچکی انجام دهم.)
کلاسس پایه CFormView در mfc دارای چند متد پشتیبانی کننده این هدف می باشد.
OnFilePrint جهت آغاز چاپ یک سره و OnFilePrintPreview جهت نمایش print preview.

یعنی با اجرای هر یک از دو متد فوق عملیات آغاز میشود.
سه روال مهم قابل باز تعریف وجود دارد که دو پارامتر ورودی دارند


viod name (CDC* hDC, CPrintInfo* hPInfo)

پارامتر اول اشاره گر پرده ترسیم پرینتر است و پارامتر دوم هم اطلاعات کلی ساختار پرینت را نگاه میدارد.

روال اول OnBeginPrinting است که فقط و فقط یک بار در شروع چاپ اجرا میشود و اصلی ترین وظیفه شما در این بخش محاسبه تعداد صفحات است و عدد مذکور را باید به دومین پارامتر روال بدهید.


hPInfo->SetMaxPage(5);


بعد روال OnPrint به تعداد صفحات اجرا میشود و شما باید ترسیمات خود را روی CDC انجام دهید
مثلاً


hDC->TextOut(intX, intY, CStringZ);


و در نهایت و در آخر کار فقط یک بار OnEndPrinting اجرا میشود.

=====

البته این روش پرینت مستقیم خیلی سرعت خوبی دارد ولی در عوض مشکل است و مخصوصاٌ نگه داری (توسعه کد و عوض کردن نمایه چاپ با توجه به نیازهای جدید) آن میتواند مشکل و بعضاً غیر ممکن باشد و منجر به از اول نوشتن دستورات شود.

برای همین ابزار آلات و کامپونت هایی برای پرینتر ساده تر و پیشرفته تر هم وجود (مثل crystalreport درپیت!).
(که البته در این مورد من تجربه ای با آنها در ++vc نداشتم و فوقش میتوان در vc++.net کمکتان کنم.)

=====

برای نمونه کد هم سرچی کردم و نمونه ساده و روان زیر را پیدا کردم که بر اساس همین اصول ساده فوق الذکر کار میکند.
(منبع نمونه کد: http://www.codeproject.com/KB/printing/printlongtext.aspx)


موفق باشید.