MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশনে Subclassing এবং Superclassing হল দুইটি গুরুত্বপূর্ণ কৌশল, যেগুলি উইন্ডো কন্ট্রোল বা উইন্ডো ক্লাসের বেস বিহেভিয়ার পরিবর্তন বা কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এই দুটি কৌশল ব্যবহারের মাধ্যমে, আপনি উইন্ডোর মেসেজ হ্যান্ডলিং এবং কন্ট্রোলের আচরণ কাস্টমাইজ করতে পারেন, যা একটি অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং ইউজার-ফ্রেন্ডলি করে তোলে।
Subclassing
Subclassing হল একটি প্রক্রিয়া, যার মাধ্যমে আপনি একটি কন্ট্রোল বা উইন্ডো ক্লাসের আচরণ পরিবর্তন করতে পারেন। এর মাধ্যমে, একটি নতুন ক্লাস আপনার নির্দিষ্ট কন্ট্রোলের আচরণ এবং মেসেজ হ্যান্ডলিং কাস্টমাইজ করে। সাধারণত, যখন আপনি একটি CWnd (Windows ক্লাস) বা CControl এর সাবক্লাস তৈরি করেন, আপনি তার ডিফল্ট মেসেজ হ্যান্ডলার ও ফাংশনগুলোও কাস্টমাইজ করতে পারেন।
Subclassing এর উদ্দেশ্য
- একটি বিদ্যমান উইন্ডোর বা কন্ট্রোলের আচরণ পরিবর্তন।
- মেসেজ হ্যান্ডলার ও ইভেন্ট প্রক্রিয়া কাস্টমাইজ করা।
- কাস্টম গ্রাফিক্স, পেইন্টিং, বা ইনপুট প্রক্রিয়া যোগ করা।
Subclassing এর উদাহরণ
ধরা যাক, আপনি একটি Button Control এর behavior পরিবর্তন করতে চান। MFC তে এটি করতে আপনি SubclassDlgItem() ফাংশন ব্যবহার করতে পারেন।
Code Example:
// Button ক্লাসের Subclassing
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Subclassing the button control with ID_BUTTON1
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
return TRUE;
}
এখানে SubclassDlgItem() ফাংশনটি button control এর behavior পরিবর্তন করবে।
Button মেসেজ হ্যান্ডলিং কাস্টমাইজ করা:
void CMyDialog::OnButtonClicked()
{
AfxMessageBox(_T("Button was clicked!"));
}
এই উদাহরণে, যখন ব্যবহারকারী button এ ক্লিক করবেন, তখন একটি মেসেজ বক্স প্রদর্শিত হবে।
Superclassing
Superclassing হল একধরনের কৌশল, যার মাধ্যমে আপনি একটি বিদ্যমান উইন্ডো বা কন্ট্রোলের ক্লাসের বৈশিষ্ট্য ও আচরণ সম্প্রসারিত করতে পারেন। এটি মূলত একটি নতুন ক্লাস তৈরি করে, যেখানে আপনি বিদ্যমান ক্লাসের ফিচারগুলো অ্যাড করতে পারেন, কিন্তু তার বর্তমান আচরণে কোনো পরিবর্তন করবেন না। Superclassing এর মাধ্যমে আপনি একটি কন্ট্রোল বা উইন্ডোর ক্ষমতাগুলো সম্প্রসারিত করতে পারেন, নতুন ফাংশনালিটি যোগ করতে পারেন বা নতুন মেসেজ হ্যান্ডলার যোগ করতে পারেন।
Superclassing এর উদ্দেশ্য
- একটি কন্ট্রোল বা উইন্ডোর নতুন ক্ষমতা যোগ করা।
- বিদ্যমান কন্ট্রোলের আচরণ পরিবর্তন না করে নতুন ফিচার অ্যাড করা।
- মেসেজ হ্যান্ডলিং এর জন্য কাস্টম কোড যোগ করা।
Superclassing এর উদাহরণ
ধরা যাক, আপনি একটি Button Control এর Superclassing করতে চান, যেখানে আপনি বেস ক্লাসের সাথে নতুন কার্যক্ষমতা যোগ করবেন, যেমন নতুন মেসেজ হ্যান্ডলিং বা ইন্টারঅ্যাকশন।
Code Example:
class CMyButton : public CButton
{
public:
CMyButton() {}
virtual ~CMyButton() {}
// নতুন একটি মেসেজ হ্যান্ডলার যোগ করা
afx_msg void OnClick();
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_CONTROL_REFLECT(BN_CLICKED, &CMyButton::OnClick)
END_MESSAGE_MAP()
void CMyButton::OnClick()
{
AfxMessageBox(_T("Custom Button Clicked"));
}
এখানে, CMyButton ক্লাসটি CButton এর Superclass হিসেবে কাজ করছে এবং OnClick() মেসেজ হ্যান্ডলারটি কাস্টমাইজ করেছে। এই Superclass তৈরি করার পর, আপনি এই নতুন ক্লাসকে আপনার ডায়ালগ বা উইন্ডোতে ব্যবহার করতে পারেন।
ডায়ালগে Superclassing ব্যবহার:
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Superclassing the button with CMyButton
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
return TRUE;
}
এখানে m_btn একটি CMyButton অবজেক্ট, যা CButton এর Superclass।
Subclassing এবং Superclassing এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Subclassing | Superclassing |
|---|---|---|
| অবজেক্টের আচরণ | বিদ্যমান উইন্ডোর বা কন্ট্রোলের আচরণ পরিবর্তন | বিদ্যমান উইন্ডোর বা কন্ট্রোলের আচরণকে সম্প্রসারিত করা |
| ব্যবহার | মেসেজ হ্যান্ডলিং কাস্টমাইজ করতে ব্যবহৃত হয় | নতুন ক্ষমতা বা ফিচার যোগ করতে ব্যবহৃত হয় |
| ফাংশন ও মেসেজ হ্যান্ডলিং | বিদ্যমান ফাংশন বা মেসেজ হ্যান্ডলার কাস্টমাইজ করা | নতুন মেসেজ হ্যান্ডলিং বা ফাংশন অ্যাড করা |
সারাংশ
Subclassing এবং Superclassing হল দুটি গুরুত্বপূর্ণ কৌশল, যা MFC অ্যাপ্লিকেশনে কন্ট্রোল বা উইন্ডোর আচরণ কাস্টমাইজ করতে ব্যবহৃত হয়। Subclassing বিদ্যমান কন্ট্রোলের আচরণ পরিবর্তন করে এবং Superclassing নতুন ফিচার বা ক্ষমতা যোগ করে। এই দুটি কৌশলই উইন্ডোজ অ্যাপ্লিকেশন ডিজাইন ও উন্নয়নে গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষত যখন কন্ট্রোলের বা উইন্ডোর মেসেজ হ্যান্ডলিং বা আচরণ কাস্টমাইজ করার প্রয়োজন হয়।
Read more