MFC (Microsoft Foundation Classes) তে Printing এবং Print Preview এর মাধ্যমে আপনি সহজেই আপনার অ্যাপ্লিকেশন থেকে কাগজে প্রিন্ট আউট নিতে পারেন এবং ব্যবহারকারীদের প্রিন্ট করার আগে কিভাবে আউটপুট দেখাবে তা প্রিভিউ করার সুযোগ দিতে পারেন। MFC প্রিন্টিং সিস্টেমটি একটি শক্তিশালী ফিচার যা আপনাকে বিভিন্ন ধরনের কাস্টম প্রিন্ট আউট তৈরি করতে সহায়তা করে।
MFC Printing এর মূল ধারণা
MFC তে প্রিন্টিং করার জন্য CDC (Device Context) ক্লাস এবং CPrintDialog এর মতো বিভিন্ন ক্লাস ব্যবহৃত হয়। CDC হল একটি ক্লাস যা ডিভাইস (যেমন স্ক্রীন, প্রিন্টার) এর সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়। প্রিন্টিং শুরু করার আগে, আপনাকে ডিভাইস কনটেক্সট সেট আপ করতে হয় এবং তারপরে প্রিন্ট আউট ডিজাইন করতে হয়। MFC তে প্রিন্টিং সিস্টেমে সাধারণত নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করা হয়:
- CPrintDialog এর মাধ্যমে প্রিন্টার নির্বাচন করা।
- CDC ক্লাসের মাধ্যমে কন্টেন্ট প্রস্তুত করা এবং প্রিন্ট করা।
- CPrintPreview এর মাধ্যমে প্রিন্ট প্রিভিউ প্রদান করা।
Print Preview Implementation
Print Preview হল একটি ফিচার যা ব্যবহারকারীদের তাদের প্রিন্ট আউট কিভাবে প্রদর্শিত হবে তা আগে থেকেই দেখার সুযোগ দেয়। MFC তে প্রিন্ট প্রিভিউ দেখানোর জন্য CPrintPreview ক্লাস ব্যবহার করা হয়।
Print Preview Implementation Steps
- CView ক্লাসে প্রিন্ট প্রিভিউ মেথড যুক্ত করা
- OnPreparePrinting() এবং OnBeginPrinting() মেথড কাস্টমাইজ করা
- CPrintPreviewDialog ব্যবহার করে প্রিভিউ শো করা
উদাহরণ: MFC প্রিন্টিং এবং প্রিন্ট প্রিভিউ
// CMyView.cpp
void CMyView::OnFilePrint()
{
CView::OnFilePrint(); // প্রিন্টিং কমান্ড কল করা
}
BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
// প্রিন্টিংয়ের প্রস্তুতি নেয়ার জন্য
return DoPreparePrinting(pInfo);
}
void CMyView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// প্রিন্টারের জন্য কাস্টম সেটিংস বা প্রস্তুতি নেয়া যায় এখানে
}
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// প্রিন্টিংয়ের জন্য আসল কন্টেন্ট ড্র করা
CString strText = _T("This is a test print!");
pDC->TextOut(100, 100, strText); // টেক্সট প্রিন্ট করা
}
void CMyView::OnFilePrintPreview()
{
// প্রিন্ট প্রিভিউ দেখানোর জন্য
CPrintPreviewState* pState = new CPrintPreviewState;
AFXPrintPreview(this, pState); // প্রিন্ট প্রিভিউ শুরু করা
}
কোড ব্যাখ্যা:
- OnFilePrint(): প্রিন্ট কমান্ডের জন্য কল করা হয়।
- OnPreparePrinting(): এই মেথডে আপনি প্রিন্টিংয়ের জন্য প্রস্তুতি নেন। এটি DoPreparePrinting() ফাংশনকে কল করে, যা প্রিন্টিং শুরু করার আগে সঠিক কনফিগারেশন তৈরি করে।
- OnBeginPrinting(): প্রিন্টিং শুরু হওয়ার আগে কোনো বিশেষ সেটিংস বা প্রস্তুতি নেয়ার জন্য।
- OnPrint(): এখানে আসল প্রিন্টিং ডেটা (যেমন টেক্সট, ছবি বা গ্রাফিক্স) প্রিন্ট করা হয়।
- OnFilePrintPreview(): এই মেথডে প্রিন্ট প্রিভিউ দেখানোর জন্য AFXPrintPreview() ফাংশন ব্যবহার করা হয়।
Printing Dialog এবং Printer Selection
CPrintDialog ক্লাস ব্যবহৃত হয় প্রিন্টারের নির্বাচনের জন্য। এটি প্রিন্টিং ডায়ালগ বক্স দেখায় যেখানে ব্যবহারকারী প্রিন্টার নির্বাচন করতে পারেন এবং অন্যান্য প্রিন্ট অপশন কাস্টমাইজ করতে পারেন।
Code Example: CPrintDialog ব্যবহার
void CMyView::OnFilePrint()
{
CPrintDialog printDlg(FALSE); // FALSE মানে প্রিন্ট ডায়ালগ বক্স খুলবে
if (printDlg.DoModal() == IDOK)
{
// প্রিন্টার নির্বাচনের পর প্রিন্টিং কার্যক্রম শুরু করা
CDC* pDC = printDlg.GetPrinterDC();
if (pDC)
{
OnBeginPrinting(pDC, &m_PrintInfo); // প্রিন্টিং শুরু
OnPrint(pDC, &m_PrintInfo); // প্রিন্টিংয়ের কন্টেন্ট
pDC->EndDoc(); // প্রিন্টিং শেষ করা
}
}
}
এখানে, CPrintDialog ক্লাস ব্যবহার করে একটি প্রিন্ট ডায়ালগ বক্স তৈরি করা হচ্ছে। ব্যবহারকারী যখন প্রিন্টার নির্বাচন করবেন এবং "OK" চাপবেন, তখন GetPrinterDC() ফাংশন দিয়ে নির্বাচিত প্রিন্টার থেকে একটি CDC কনটেক্সট পাওয়া যাবে, এবং তারপর প্রিন্টিংয়ের প্রক্রিয়া শুরু হবে।
Print Preview ক্লাসের ফাংশন
CPrintPreview ক্লাসের মাধ্যমে প্রিন্ট প্রিভিউ তৈরি করা হয়, যা ব্যবহারকারীদের প্রিন্ট করার আগে প্রিন্ট আউট কেমন হবে তা দেখানোর সুযোগ দেয়।
Code Example: CPrintPreview ব্যবহার
void CMyView::OnFilePrintPreview()
{
CPrintPreviewState* pState = new CPrintPreviewState;
AFXPrintPreview(this, pState); // প্রিন্ট প্রিভিউ শুরু করা
}
এই কোডের মাধ্যমে AFXPrintPreview() ফাংশন কল করা হয় যা প্রিন্ট প্রিভিউ শো করার জন্য প্রয়োজনীয় সেটআপ করবে।
সারাংশ
MFC তে Printing এবং Print Preview প্রক্রিয়া ব্যবহার করে আপনি সহজেই প্রিন্ট আউট তৈরি করতে পারেন এবং ব্যবহারকারীদের প্রিন্ট করার আগে প্রিভিউ দেখানোর সুবিধা দিতে পারেন। CPrintDialog, CDC, এবং CPrintPreview ক্লাসগুলির সাহায্যে প্রিন্টিং এবং প্রিন্ট প্রিভিউয়ের কাস্টমাইজেশন সহজতর হয়। আপনি যেকোনো প্রিন্ট আউট প্রক্রিয়াকে আপনার অ্যাপ্লিকেশনের চাহিদা অনুযায়ী কাস্টমাইজ করতে পারেন।
MFC (Microsoft Foundation Classes) তে প্রিন্টিং এবং প্রিন্ট সেটআপ ডায়ালগ ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ এবং সাধারণত গ্রাফিক্যাল অ্যাপ্লিকেশন এবং রিপোর্টিং অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়। এই প্রক্রিয়াগুলি MFC তে প্রিন্টারকে পরিচালনা, প্রিন্টের জন্য কনফিগারেশন সেটিংস নির্ধারণ এবং প্রিন্ট আউটপুট তৈরি করার জন্য ব্যবহৃত হয়। CPrintDialog, CPrintPreview, এবং CDC ক্লাসগুলো প্রিন্টিং সম্পর্কিত কাজগুলোর জন্য ব্যবহৃত হয়।
প্রিন্টিং প্রক্রিয়া (Printing Process)
MFC তে প্রিন্টিং করার জন্য, CDC (Device Context) ক্লাসের সাহায্যে ডিভাইস বা প্রিন্টারে ডেটা রেন্ডার করা হয়। যখন আপনি একটি প্রিন্ট কমান্ড চালান, তখন CDC ক্লাস প্রিন্টার ডিভাইসের সাথে যোগাযোগ করে এবং প্রিন্টিং প্রক্রিয়া শুরু হয়। CPrintDialog ব্যবহার করে আপনি প্রিন্ট সেটআপ ডায়ালগ খুলতে পারেন, এবং CPrintPreview ব্যবহার করে প্রিন্ট প্রিভিউ দেখাতে পারেন।
প্রিন্ট ডায়ালগ (Print Dialog)
CPrintDialog ক্লাসটি ব্যবহারকারীর কাছে প্রিন্ট সেটিংস নির্বাচনের জন্য একটি স্ট্যান্ডার্ড প্রিন্ট ডায়ালগ উইন্ডো প্রদান করে। এই ডায়ালগটি ব্যবহার করে ব্যবহারকারী প্রিন্টার নির্বাচন করতে পারেন, প্রিন্ট কপি সংখ্যা নির্ধারণ করতে পারেন, এবং অন্যান্য প্রিন্ট সেটিংস পরিবর্তন করতে পারেন।
CPrintDialog ব্যবহার:
Code Example:
CPrintDialog printDlg(FALSE); // FALSE মানে প্রিন্ট ডায়ালগ শুধুমাত্র প্রদর্শন করবে, প্রিন্ট করবে না
if (printDlg.DoModal() == IDOK)
{
// ব্যবহারকারী প্রিন্ট সেটআপ সম্পন্ন করেছেন
// প্রিন্টার সেটিংস এবং অন্যান্য অপশনগুলি এখানে অ্যাক্সেস করা যাবে
CDC dc;
dc.Attach(printDlg.GetPrinterDC()); // প্রিন্টার ডিভাইস কনটেক্সটে সংযুক্ত করা
// প্রিন্টিং প্রক্রিয়া এখানে সম্পাদিত হবে
}
এখানে, CPrintDialog ডায়ালগ উইন্ডো প্রদর্শিত হবে এবং ব্যবহারকারী প্রিন্টার এবং অন্যান্য সেটিংস নির্বাচন করবেন। DoModal() ফাংশনটি ডায়ালগ উইন্ডোটি চালাবে এবং ব্যবহারকারী ডায়ালগ বন্ধ করলে IDOK ফিরিয়ে দিবে।
প্রিন্ট সেটআপ ডায়ালগ (Print Setup Dialog)
CPrintDialog এর মাধ্যমে আপনি প্রিন্ট সেটআপ সম্পর্কিত কনফিগারেশন যেমন প্রিন্টার পেজ সাইজ, কপি সংখ্যা ইত্যাদি পরিচালনা করতে পারেন। তবে, CPageSetupDialog ক্লাসটি একটি সাধারণ প্রিন্ট সেটআপ ডায়ালগ প্রদান করে, যা পেজ মাপ, মার্জিন ইত্যাদি সেট করতে সহায়তা করে।
CPageSetupDialog ব্যবহার:
Code Example:
CPageSetupDialog pageSetupDlg;
if (pageSetupDlg.DoModal() == IDOK)
{
// প্রিন্ট সেটআপ ডায়ালগের পরবর্তী কোড
// ব্যবহারকারী যখন সঠিক পেজ সেটিংস নির্বাচন করবেন
}
এটি একটি সাধারণ Page Setup Dialog খুলবে, যেখানে ব্যবহারকারী পেজ সাইজ, মার্জিন ইত্যাদি কনফিগার করতে পারবেন।
প্রিন্ট প্রক্রিয়া (Printing Process) - CDC ব্যবহার
MFC তে CDC (Device Context) ব্যবহার করে প্রিন্টিং করা হয়। CDC হল একটি কনটেক্সট যেখানে সমস্ত গ্রাফিক্যাল ডেটা যেমন লাইন, টেক্সট, এবং ইমেজ প্রিন্ট করার জন্য পাঠানো হয়। এই প্রিন্টিং প্রক্রিয়াতে একটি কাস্টম OnPrint() ফাংশন তৈরি করতে হয়, যা প্রিন্টিং রেন্ডারিং প্রক্রিয়া নিয়ন্ত্রণ করে।
Print ডেটা রেন্ডারিং:
Code Example:
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// প্রিন্ট প্রক্রিয়া শুরু
pDC->TextOut(100, 100, _T("Hello, MFC Printing!")); // টেক্সট প্রিন্ট করা
// অন্যান্য গ্রাফিক্স এবং ডেটা রেন্ডারিং ফাংশন ব্যবহার করা যায়
}
এখানে TextOut() ফাংশনটি একটি টেক্সট প্রিন্ট করবে নির্দিষ্ট কোর্ডিনেটস (100, 100) পজিশনে।
প্রিন্ট প্রিভিউ (Print Preview)
CPrintPreview ক্লাসটি ব্যবহৃত হয় প্রিন্টিংয়ের আগে ডকুমেন্টের প্রিভিউ দেখানোর জন্য, যাতে ব্যবহারকারী প্রিন্ট আউটপুট দেখে নিশ্চিত হতে পারেন যে প্রিন্ট সেটিংস ঠিকভাবে কনফিগার করা হয়েছে। এটি প্রিন্টিংয়ের জন্য একটি পিডিএফ বা প্রিন্ট ফাইল তৈরি করার মতো কাজ করে।
Print Preview ব্যবহার:
Code Example:
void CMyView::OnFilePrintPreview()
{
CPrintPreviewState* pState = new CPrintPreviewState;
OnPreparePrinting(pState);
DoPrintPreview(IDD_PREVIEW, this, pState);
}
এখানে, DoPrintPreview() ফাংশনটি প্রিন্ট প্রিভিউ ডায়ালগ চালাবে এবং প্রিন্ট ফাইলটি প্রিভিউ দেখাবে।
সারাংশ
MFC তে প্রিন্টিং এবং Print Setup Dialog ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন গ্রাফিক্যাল ইউজার ইন্টারফেসের মধ্যে রিপোর্ট তৈরি বা ডকুমেন্ট প্রিন্টিং প্রয়োজন হয়। CPrintDialog এবং CPageSetupDialog ডায়ালগ উইন্ডোগুলি প্রিন্টিং এবং সেটআপ প্রক্রিয়াকে সহজ করে, এবং CDC ক্লাসের মাধ্যমে প্রিন্ট আউটপুট তৈরি করা যায়। CPrintPreview ব্যবহারের মাধ্যমে প্রিন্টিংয়ের আগে একটি প্রিভিউ দেখানো সম্ভব। MFC তে এই ফিচারগুলি ব্যবহার করে উন্নত প্রিন্টিং ফাংশনালিটি যুক্ত করা যায়।
MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশনে Print Preview একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীকে প্রিন্ট করার পূর্বে ডকুমেন্টের প্রিন্ট আউট কেমন হবে তা দেখানোর সুবিধা দেয়। এটি ব্যবহারকারীদের সাহায্য করে যাতে তারা প্রিন্টিংয়ের আগে তাদের ডকুমেন্টের ফরম্যাট বা লেআউট পর্যালোচনা করতে পারেন। MFC তে Print Preview তৈরি এবং কাস্টমাইজ করা সহজ, তবে এটি সঠিকভাবে কনফিগার এবং পরিচালনা করার জন্য কিছু বিশেষ ফাংশন ও কনসেপ্ট ব্যবহার করতে হয়।
এখানে, আমরা Print Preview তৈরি এবং কাস্টমাইজ করার জন্য প্রয়োজনীয় ধাপগুলো আলোচনা করবো।
Print Preview তৈরি (Creating Print Preview)
MFC তে Print Preview তৈরি করতে, আপনাকে সাধারণত কিছু মূল ক্লাস এবং ফাংশন ব্যবহার করতে হয়। এর মধ্যে প্রধানত CView, CDC, CPrintDialog, এবং CPrintPreviewView ক্লাসের সাহায্যে এই কার্যটি সম্পন্ন করা হয়।
- CPrintPreviewView ক্লাসের ব্যবহার:
- এই ক্লাসটি প্রিন্ট প্রিভিউ উইন্ডোটি তৈরি করে এবং প্রিন্টার কমান্ডের সাথে ইন্টারঅ্যাক্ট করে।
- এটি ডকুমেন্টের প্রিন্ট লেআউট প্রদর্শন করে এবং ব্যবহারকারীদের প্রিন্ট বা Cancel অপশন নির্বাচন করার সুযোগ দেয়।
Code Example:
void CMainFrame::OnFilePrintPreview()
{
AFXPrintPreview(this); // এটি Print Preview উইন্ডো প্রদর্শন করবে
}
এই ফাংশনটি OnFilePrintPreview() কল করার পর প্রিন্ট প্রিভিউ উইন্ডো প্রদর্শন করবে, যেখানে ব্যবহারকারী প্রিন্ট কমান্ডের আগে ডকুমেন্ট দেখতে পারবেন।
Print Preview কাস্টমাইজ করা (Customizing Print Preview)
MFC তে Print Preview কাস্টমাইজ করার জন্য, আপনি কিছু নির্দিষ্ট কনফিগারেশন এবং কোডিং কৌশল ব্যবহার করতে পারেন। কিছু কাস্টমাইজেশন অন্তর্ভুক্ত থাকতে পারে যেমন:
- প্রিন্ট প্রিভিউ উইন্ডোতে পার্সোনালাইজড টুলবার বা মেনু অপশন যোগ করা।
- প্রিন্ট লেআউট পরিবর্তন করা (যেমন মার্জিন, পেজ সাইজ, ইত্যাদি)।
- পেজ রেন্ডারিং কাস্টমাইজ করা (যেমন ডকুমেন্টের কন্টেন্ট কেমন দেখাবে)।
- CView এর মাধ্যমে কাস্টমাইজ পেজ রেন্ডারিং:
- OnDraw() ফাংশনটি Print Preview উইন্ডোতে কন্টেন্ট প্রদর্শনের জন্য ব্যবহৃত হয়। এটি কাস্টম রেন্ডারিং করতে সাহায্য করে।
Code Example:
void CMyView::OnDraw(CDC* pDC)
{
// Custom drawing logic goes here
pDC->TextOut(100, 100, _T("Hello, MFC Print Preview!")); // Custom text to be printed
}
- CPrintPreviewView ক্লাসে কাস্টমাইজেশন:
- আপনি CPrintPreviewView এর ক্লাসটি কাস্টমাইজ করতে পারেন যাতে এটি আপনার নির্দিষ্ট লেআউট বা ফরম্যাট অনুযায়ী পেজ কনটেন্ট প্রদর্শন করে।
Code Example:
BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
// Adjust page size and margins for print preview
pInfo->SetMinPage(1);
pInfo->SetMaxPage(1);
return DoPreparePrinting(pInfo);
}
এটি নিশ্চিত করে যে প্রিন্ট প্রিভিউ শুধুমাত্র ১টি পেজ প্রদর্শন করবে এবং আপনি প্রয়োজনে পেজ সাইজ ও মার্জিন কাস্টমাইজ করতে পারেন।
Print Preview তে টুলবার এবং মেনু অপশন কাস্টমাইজ করা
আপনি প্রিন্ট প্রিভিউ উইন্ডোর টুলবার এবং মেনু অপশনগুলো কাস্টমাইজ করতে পারেন যাতে ব্যবহারকারী আরও সহজে প্রিন্ট, Zoom, Next Page বা Previous Page অপশনগুলো অ্যাক্সেস করতে পারে। এটি করার জন্য, আপনি CPrintPreviewView এর মেম্বার ফাংশন যেমন OnPreparePrinting(), OnBeginPrinting(), OnEndPrinting() এবং OnPrint() ব্যবহার করতে পারেন।
- Zoom In/Out: প্রিন্ট প্রিভিউতে ব্যবহারকারীর সুবিধার্থে Zoom অপশন যোগ করা যেতে পারে। এটি ডকুমেন্টের আকার বড় বা ছোট করার সুবিধা দেয়।
Code Example:
void CMyView::OnZoomIn()
{
m_nZoomLevel += 10; // Zoom level বাড়ানো
Invalidate(); // উইন্ডো পুনঃরেন্ডার করা
}
- Next/Previous Page: প্রিন্ট প্রিভিউতে পেজ পরিবর্তন করার জন্য Next Page এবং Previous Page অপশন যোগ করা যায়।
Code Example:
void CMyView::OnNextPage()
{
if (m_nCurrentPage < m_nTotalPages)
{
m_nCurrentPage++;
Invalidate(); // উইন্ডো পুনঃরেন্ডার করা
}
}
প্রিন্ট প্রিভিউ ডায়ালগ কাস্টমাইজ করা
MFC তে CPrintDialog ব্যবহার করে আপনি প্রিন্ট ডায়ালগ কাস্টমাইজ করতে পারেন, যা প্রিন্ট প্রিভিউ থেকে প্রিন্ট কমান্ড এক্সিকিউট করার জন্য ব্যবহৃত হয়। এতে আপনি প্রিন্টারের প্রোপার্টি এবং পছন্দসই অপশন কাস্টমাইজ করতে পারেন।
Code Example:
void CMainFrame::OnFilePrint()
{
CPrintDialog printDlg(FALSE);
if (printDlg.DoModal() == IDOK)
{
// প্রিন্ট অপশন কাস্টমাইজ করে প্রিন্ট শুরু করা
CDC dc;
dc.CreateDC(printDlg.GetDriverName(), printDlg.GetDeviceName(), NULL, NULL);
OnBeginPrinting(&dc, &m_PrintInfo); // প্রিন্টিং শুরু
}
}
সারাংশ
Print Preview তৈরি এবং কাস্টমাইজ করা MFC অ্যাপ্লিকেশনগুলির জন্য একটি গুরুত্বপূর্ণ ফিচার। MFC তে প্রিন্ট প্রিভিউ উইন্ডো তৈরি করতে CPrintPreviewView এবং CView ক্লাস ব্যবহার করা হয়, এবং এটি ডায়ালগ, কাস্টম রেন্ডারিং, টুলবার এবং মেনু অপশন কাস্টমাইজেশন সমর্থন করে। আপনার প্রিন্ট লেআউট, মার্জিন, পেজ সাইজ, এবং অন্যান্য অপশন কাস্টমাইজ করে আপনি একটি ব্যবহারকারী-বান্ধব এবং ফিচার-প্যাকড প্রিন্ট প্রিভিউ উইন্ডো তৈরি করতে পারবেন, যা ব্যবহারকারীদের প্রিন্ট করার আগে তাদের কন্টেন্ট দেখতে এবং সেটি অ্যাডজাস্ট করতে সাহায্য করে।
MFC (Microsoft Foundation Classes)-এ OnPrint এবং OnPreparePrinting মেথড দুটি খুবই গুরুত্বপূর্ণ, বিশেষত যখন আপনি আপনার অ্যাপ্লিকেশন থেকে প্রিন্ট আউট নেওয়ার কার্যকারিতা যোগ করতে চান। এই মেথডগুলি কাস্টম প্রিন্টিং এবং প্রিন্টিং সেটআপ সম্পর্কিত কাজগুলো পরিচালনা করতে ব্যবহৃত হয়।
OnPreparePrinting
OnPreparePrinting মেথডটি প্রিন্টিং শুরু করার আগে প্রয়োজনীয় প্রস্তুতি নিতে ব্যবহৃত হয়। এটি সাধারণত প্রিন্টিং প্রসেস শুরু হওয়ার আগে কল করা হয় এবং প্রিন্ট ডায়ালগ বা প্রিন্ট সেটআপ কনফিগারেশন প্রদান করতে সহায়তা করে। এই মেথডটি আপনার অ্যাপ্লিকেশনকে প্রিন্টিং প্রক্রিয়া শুরু করার আগে বিভিন্ন সেটিংস কনফিগার করার সুযোগ দেয়।
MFC-তে প্রিন্টিং প্রক্রিয়া শুরু করার সময় OnPreparePrinting মেথডটি এমনভাবে কনফিগার করা হয় যাতে প্রিন্টার, পেজ সাইজ, মার্জিন ইত্যাদি সেট করা যায়।
OnPreparePrinting মেথডটি সাধারণত CView বা CWnd ক্লাসে ব্যবহার করা হয়।
ব্যবহার:
BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
// প্রিন্টিং সেটআপ কনফিগারেশন
pInfo->SetMinPage(1); // মিনিমাম পেজ
pInfo->SetMaxPage(1); // ম্যাক্সিমাম পেজ
return DoPreparePrinting(pInfo); // DoPreparePrinting কলে প্রিন্টিং প্রস্তুতি নেয়
}
এখানে, CPrintInfo একটি স্ট্রাকচার যা প্রিন্টিং সম্পর্কিত ইনফরমেশন ধারণ করে, যেমন পেজ রেঞ্জ, প্রিন্টার সেলেকশন ইত্যাদি।
OnPrint
OnPrint মেথডটি প্রিন্টিং এর মূল লজিক ধারণ করে এবং এটি CView বা CWnd ক্লাসে ব্যবহৃত হয়। এই মেথডটি ড্রয়িং ফাংশনালিটি সরবরাহ করে, যা ব্যবহারকারী বা অ্যাপ্লিকেশন ডাটা অনুযায়ী পেজে কন্টেন্ট প্রিন্ট করতে সহায়তা করে।
OnPrint সাধারণত প্রিন্টিং ডিভাইসের গ্রাফিক্স কনটেক্সট (CDC) ব্যবহার করে ড্রয়িং অপারেশন করে। এতে আপনি বিভিন্ন পেইজ উপাদান (যেমন টেক্সট, লাইন, গ্রাফিক্স) ড্রয়িং করতে পারবেন।
ব্যবহার:
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// প্রিন্টার গ্রাফিক্স কনটেক্সট পেতে
pDC->TextOut(100, 100, _T("Hello, MFC Printing!"));
// আপনি যেকোনো গ্রাফিক্স বা টেক্সট ড্র করতে পারেন
pDC->MoveTo(100, 120);
pDC->LineTo(200, 120);
}
এখানে, CDC হল প্রিন্টিং বা ড্রয়িং করার জন্য ব্যবহৃত কনটেক্সট ক্লাস। TextOut() এবং LineTo() মেথড ব্যবহার করে আপনি টেক্সট এবং লাইন ড্র করতে পারেন।
OnPreparePrinting এবং OnPrint এর পার্থক্য
- OnPreparePrinting: এই মেথডটি প্রিন্টিংয়ের আগে প্রয়োজনীয় প্রস্তুতি নেয়। এখানে প্রিন্ট সেটআপ, পেজ রেঞ্জ, ডিভাইস নির্বাচন ইত্যাদি কনফিগার করা হয়।
- OnPrint: এই মেথডটি মূলত প্রিন্ট আউটের জন্য কনটেন্ট তৈরি এবং গ্রাফিক্স ড্র করার জন্য ব্যবহৃত হয়। এটি প্রিন্টারের গ্রাফিক্স কনটেক্সট ব্যবহার করে কন্টেন্ট পেজে প্রিন্ট করে।
সারাংশ
MFC তে OnPreparePrinting এবং OnPrint মেথড দুটি প্রিন্টিং প্রক্রিয়া পরিচালনা করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। OnPreparePrinting মেথডটি প্রিন্টিং শুরুর আগে সেটআপ এবং কনফিগারেশন তৈরি করে, যখন OnPrint মেথডটি ড্রয়িং এবং কন্টেন্ট প্রিন্টের জন্য ব্যবহৃত হয়।
MFC (Microsoft Foundation Classes) তে Multi-Page এবং Custom Page Layout প্রিন্টিং একটি সাধারণ প্রক্রিয়া, যা আপনাকে একাধিক পেজে ডেটা প্রিন্ট করার সুবিধা দেয়। এই প্রক্রিয়ায় আপনি কাস্টম পেজ সাইজ, লেআউট এবং কন্টেন্ট নিয়ন্ত্রণ করতে পারবেন। প্রিন্টিংয়ের জন্য MFC এর CDC (Device Context) এবং CPrintDialog ক্লাসগুলোর ব্যবহার গুরুত্বপূর্ণ।
এখানে আমরা আলোচনা করব কিভাবে MFC তে Multi-Page এবং Custom Page Layout তৈরি করা যায় এবং কিভাবে কাস্টম প্রিন্টিং অপশনগুলো কনফিগার করা যায়।
Multi-Page Printing
Multi-Page Printing এর মাধ্যমে আপনি একাধিক পেজে ডেটা প্রিন্ট করতে পারবেন। MFC তে এটি সাধারনত OnBeginPrinting(), OnPrint() এবং OnEndPrinting() ফাংশনের মাধ্যমে করা হয়।
1. প্রিন্টিংয়ের জন্য প্রস্তুতি
প্রথমে, আপনার অ্যাপ্লিকেশনে প্রিন্টিং শুরু করার জন্য OnBeginPrinting() মেথডটি কাস্টমাইজ করতে হবে। এই মেথডে প্রিন্টারের কনফিগারেশন ও প্রয়োজনীয় ইনফরমেশন সেট করা হয়।
void CMyDoc::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// প্রিন্টিংয়ের জন্য কিছু ইনিশিয়ালাইজেশন
pInfo->SetMaxPage(10); // মোট পেজ সংখ্যা (এটি আপনি ডাইনামিকভাবে পরিবর্তন করতে পারেন)
}
এখানে, SetMaxPage() মেথডের মাধ্যমে আপনি মোট পেজের সংখ্যা সেট করতে পারেন।
2. ডেটা প্রিন্টিং
OnPrint() ফাংশনে আপনি প্রতিটি পেজের জন্য ডেটা প্রিন্ট করতে পারেন। এখানে আপনি প্রিন্টারের জন্য CDC (Device Context) ব্যবহার করেন যা আপনাকে পেজে ডেটা রেন্ডার করতে সাহায্য করবে।
void CMyDoc::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
int pageNum = pInfo->GetCurrentPage();
// এখানে আপনার কাস্টম ডেটা প্রিন্ট করতে হবে
CString str;
str.Format(_T("Page Number: %d"), pageNum);
// ডেটা প্রিন্ট করুন
pDC->TextOut(100, 100, str); // পেজে টেক্সট প্রিন্ট করুন
}
এখানে, GetCurrentPage() ব্যবহার করে প্রতিটি পেজের জন্য কন্টেন্ট প্রিন্ট করা হচ্ছে।
3. প্রিন্টিং শেষ হওয়া
প্রিন্টিংয়ের শেষে আপনি OnEndPrinting() মেথড ব্যবহার করতে পারেন, যেখানে আপনি যদি কোনো রিসোর্স ব্যবহার করে থাকেন (যেমন ফাইল বা কাস্টম ডিভাইস কন্টেক্সট) তা মুক্ত করবেন।
void CMyDoc::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// রিসোর্স ফ্রি করা বা অন্যান্য ক্লিনআপ কাজ
}
এটি প্রিন্টিং প্রক্রিয়া সম্পূর্ণ হওয়ার পর কোন ক্লিনআপ বা রিসোর্স রিলিজ করার জন্য ব্যবহার করা হয়।
Custom Page Layout Printing
Custom Page Layout Printing এর মাধ্যমে আপনি কাস্টম পেজ সাইজ, মার্জিন, পেজ লেআউট ইত্যাদি কাস্টমাইজ করতে পারেন। MFC তে CDC এবং CPrintDialog এর মাধ্যমে পেজ লেআউট এবং সাইজ কাস্টমাইজ করা যায়।
1. CPrintDialog এবং কাস্টম পেজ সাইজ নির্বাচন
MFC তে CPrintDialog ব্যবহার করে আপনি প্রিন্টারের পছন্দসই সেটিংস এবং পেজ সাইজ কাস্টমাইজ করতে পারেন। আপনি প্রিন্ট ডায়ালগে কাস্টম পেজ সাইজ যোগ করতে পারেন।
void CMyApp::OnFilePrint()
{
CPrintDialog printDlg(FALSE); // FALSE for printer selection dialog
printDlg.GetDefaults();
// কাস্টম পেজ সাইজ সেট করা
printDlg.m_pd.nPageSize = DMPAPER_A4; // A4 সাইজ ব্যবহার করা
printDlg.DoModal();
// প্রিন্টিংয়ের কোড
CPrintInfo printInfo;
CDocument* pDoc = GetActiveDocument();
pDoc->Print(&printInfo);
}
এখানে DMPAPER_A4 দিয়ে A4 সাইজের কাস্টম পেজ সাইজ সেট করা হয়েছে। আপনি অন্যান্য পেজ সাইজও ব্যবহার করতে পারেন।
2. Custom Layout Configuration (Margins, Orientation)
MFC তে আপনি CDC এর মাধ্যমে মার্জিন এবং পেজ অরিয়েন্টেশন কাস্টমাইজ করতে পারেন। পেজ অরিয়েন্টেশন Portrait বা Landscape নির্বাচন করা যেতে পারে এবং মার্জিনের জন্য SetMargins() ব্যবহার করা হয়।
void CMyDoc::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// পেজ অরিয়েন্টেশন সেট করা
pDC->SetMapMode(MM_TEXT);
// মার্জিন কাস্টমাইজ করা
int leftMargin = 100, topMargin = 100;
pDC->SetWindowExt(100, 100);
pDC->SetViewportExt(leftMargin, topMargin);
// পেজে ডেটা প্রিন্ট করা
CString str;
str.Format(_T("Custom Layout Printing"));
pDC->TextOut(leftMargin, topMargin, str);
}
এখানে, আপনি SetWindowExt() এবং SetViewportExt() মেথডের মাধ্যমে মার্জিন এবং পেজ সাইজ কাস্টমাইজ করতে পারেন।
3. Custom Page Content Rendering
কাস্টম পেজ লেআউট তৈরি করার জন্য আপনি পেজের বিভিন্ন অংশে কন্টেন্ট প্রিন্ট করতে পারেন, যেমন:
- টেবিল, চার্ট, গ্রাফ বা কাস্টম গ্রাফিক্স প্রিন্ট করা
- একাধিক কলাম বা পেজে ভেঙে কন্টেন্ট প্রিন্ট করা
void CMyDoc::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
int pageNum = pInfo->GetCurrentPage();
CString str;
str.Format(_T("Custom Page Layout - Page %d"), pageNum);
// পেজে প্রিন্ট করা
pDC->TextOut(150, 150, str); // কাস্টম পজিশনে প্রিন্ট করা
}
এখানে কাস্টম লেআউটে পেজে প্রিন্ট করা হয়েছে। আপনি চাইলে অন্যান্য গ্রাফিক্সও প্রিন্ট করতে পারেন, যেমন DrawText, Rectangle, বা Ellipse।
সারাংশ
MFC তে Multi-Page এবং Custom Page Layout Printing আপনাকে একাধিক পেজে প্রিন্ট এবং কাস্টম পেজ সাইজ, লেআউট, মার্জিন ইত্যাদি কাস্টমাইজ করার সুযোগ দেয়। CDC এবং CPrintDialog এর মাধ্যমে আপনি প্রিন্টিংয়ের সময় কাস্টম পেজ সাইজ, মার্জিন, অরিয়েন্টেশন এবং কন্টেন্ট কাস্টমাইজ করতে পারেন। আপনি যখন একাধিক পেজ প্রিন্ট করেন, তখন OnBeginPrinting(), OnPrint() এবং OnEndPrinting() ফাংশনগুলো ব্যবহার করে ডেটা প্রিন্ট করতে পারেন এবং পেজ লেআউট নিয়ন্ত্রণ করতে পারেন।
Read more