সুচিপত্র:
- সরবরাহ
- ধাপ 1: কোড পাওয়া
- ধাপ 2: একটি উদাহরণ প্রকল্প নির্মাণ
- ধাপ 3: কোড জেনারেটর চালানো
- ধাপ 4: একটি উইন্ডো যোগ করা
- ধাপ 5: একটি নিয়ন্ত্রণ যোগ করা
- ধাপ 6: নিয়ন্ত্রণ কিছু করা
- ধাপ 7: উইন্ডোতে অঙ্কন
- ধাপ 8: উইন্ডো ডেটা
- ধাপ 9: কিছু চূড়ান্ত ফন্ট মজা
- ধাপ 10: আরও এগিয়ে যাওয়া
ভিডিও: এম্বেডেড উইন্ডো ম্যানেজার: 10 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
এই প্রকল্পটি দেখায় কিভাবে একটি এলসিডি প্যানেল এবং একটি টাচ স্ক্রিন সহ একটি এমবেডেড মাইক্রো-কন্ট্রোলারে অস্থাবর ওভারল্যাপড উইন্ডোগুলির সাথে একটি উইন্ডো ম্যানেজার বাস্তবায়ন করতে হয়। এটি করার জন্য বাণিজ্যিকভাবে উপলব্ধ সফটওয়্যার প্যাকেজ আছে কিন্তু তাদের অর্থ খরচ হয় এবং বন্ধ উৎস। মিনিওয়িন নামে এটি একটি মুক্ত এবং মুক্ত উৎস। এটি সম্পূর্ণরূপে সঙ্গতিপূর্ণ C99 এ লেখা এবং একটি C বা C ++ অ্যাপ্লিকেশনে ব্যবহার করা যেতে পারে। মিনিউইনের লক্ষ্যগুলি ব্যবহার করা সহজ, পরিবর্তন করা সহজ, বিস্তৃত, হার্ডওয়্যারের বিস্তৃত পোর্টেবল এবং খুব বেশি সম্পদের ক্ষুধার্ত নয়।
আপনার উইন্ডোজ পরিচালনার জন্য কোড প্রদান করার পাশাপাশি মিনিউইনের ইউজার ইন্টারফেস নিয়ন্ত্রণ - বোতাম, স্লাইডার, প্রগ্রেস বার, গাছ ইত্যাদি সংগ্রহ রয়েছে। উইন্ডোজ চারপাশে সরানো যেতে পারে, আকার পরিবর্তন করা, সর্বাধিক করা, ছোট করা, বন্ধ করা - সবগুলি সাধারণ জিনিস যা আপনি বড় উইন্ডো ম্যানেজারে উইন্ডো দিয়ে করেন। কার্নিং এবং এন্টি-আলিয়াজিং সহ ট্রু টাইপ ফন্টগুলি (পাঠ্যকে স্মুওওউথ করে তোলে) আকর্ষণীয় পাঠ্য রেন্ডারিংয়ের জন্যও সমর্থিত।
প্রতিটি উইন্ডোতে আপনার একটি ক্লায়েন্ট এলাকা আছে (আপনার স্থান সীমানার ভিতরে এবং উপরের বারের নিচে)। এটিতে আপনি একটি ডায়ালগ তৈরি করতে নিয়ন্ত্রণ যোগ করতে পারেন অথবা আপনি যা চান তা আঁকতে অন্তর্নির্মিত গ্রাফিক্স লাইব্রেরি ব্যবহার করতে পারেন। সমস্ত গ্রাফিক্স লাইব্রেরি ফাংশন উইন্ডো সচেতন। আপনার উইন্ডোটি কোথায় আছে, এটি কি ওভারল্যাপ করছে বা এটি ছোট করা হয়েছে তা নিয়ে আপনাকে চিন্তা করতে হবে না।
আপনার নিজস্ব উইন্ডো তৈরির পাশাপাশি কিছু স্ট্যান্ডার্ড ডায়ালগও অন্তর্ভুক্ত রয়েছে যা তাত্ক্ষণিকভাবে খুব সহজ - উদাহরণস্বরূপ নিশ্চিতকরণ ডায়ালগ (কেবল একটি ঠিক আছে বা হ্যাঁ/না বোতাম), সময়/তারিখ নির্ধারণকারী, ফাইল চয়নকারী, রঙ চয়নকারী ইত্যাদি।
মিনিউইন একটি স্ট্যান্ডার্ড উইন্ডোজ ম্যানেজার ডিজাইন মেসেজ কিউ সিস্টেম ব্যবহার করে। উইন্ডোজ একে অপরের সাথে এবং উইন্ডো ম্যানেজারের সাথে বার্তার মাধ্যমে যোগাযোগ করতে পারে। আপনি সরাসরি কাজ করার জন্য ফাংশনগুলিকে কল করেন না, আপনি সারিতে একটি বার্তা যোগ করেন এবং উইন্ডো ম্যানেজার এটি আপনার জন্য কার্যকর করবে।
MiniWin মাইক্রো-কন্ট্রোলার বিক্রেতাদের ST, NXP এবং Renesas থেকে টাচ স্ক্রিন ডিসপ্লে সহ স্ট্যান্ডার্ড ডেভেলপমেন্ট বোর্ডে পোর্ট করা হয়েছে। এই সমস্ত ডিভাইসের জন্য হার্ডওয়্যার ড্রাইভার এবং উদাহরণ প্রকল্প রয়েছে। উপরন্তু উইন্ডোজ বা লিনাক্সের জন্য মিনিউইন তৈরি করা যেতে পারে যাতে আপনি আপনার এমবেডেড হার্ডওয়্যার পাওয়ার আগে আপনার ইউজার ইন্টারফেস কোড অনুকরণ করতে পারেন।
মিনিউইনের একটি কোড জেনারেটর রয়েছে। মানব পাঠযোগ্য JSON ফাইল তৈরি করার জন্য আপনি আপনার উইন্ডো এবং কন্ট্রোলগুলি সুনির্দিষ্ট করতে পারেন এবং কোড জেনারেটর ফাইলটি পার্স করে এবং আপনার জন্য কোড তৈরি করে (অনুসরণ করার জন্য অনেক উদাহরণ রয়েছে)। এটি উইন্ডোজ বা লিনাক্স সম্পূর্ণ সিমুলেটর অ্যাপ্লিকেশন তৈরি করে যা শুধু তৈরি করা যায় এবং সেখানে আপনার সিমুলেটেড এলসিডি ডিসপ্লে আপনার মিনিউইন উইন্ডোজের সাথে কাজ করে। আপনি ঠিক একই জেনারেটেড কোড নিতে পারেন এবং এটি একটি এমবেডেড প্রজেক্টে ফেলে দিতে পারেন এবং একই কোড একই উইন্ডো দেখাচ্ছে এবং আপনার এম্বেডেড হার্ডওয়্যারে কিছুক্ষণ পরে নিয়ন্ত্রণ করতে পারে।
এমবিডেড ডিভাইসে মিনিউইনের কোন অপারেটিং সাপোর্টের প্রয়োজন নেই। এটি সব একটি একক থ্রেডে চলে। একটি এমবেডেড প্রসেসরে চলমান আরটিওএসের সাথে মিনিউইনকে একীভূত করা যায় এবং ফ্রিআরটিওএসের সাথে মিনিউইনকে সংহত করার উদাহরণ রয়েছে।
এই নির্দেশাবলী দেখায় কিভাবে একটি STM32 M4 প্রসেসরে সস্তা STM32F429 ডিসকভারি বোর্ড ব্যবহার করে মিনিভিন আপ এবং চালানো যায় যা ইতিমধ্যে সংযুক্ত একটি QVGA টাচ স্ক্রিন ডিসপ্লে সহ আসে। এগুলি আপনার ইলেকট্রনিক্স উপাদান সরবরাহকারী থেকে সহজেই পাওয়া যায়।
মিনিউইন মধ্য-পরিসরের মাইক্রো-কন্ট্রোলার এবং এর উপরে চলে।
সরবরাহ
STM32F429I-DISC1 ডেভেলপমেন্ট বোর্ড এবং একটি মাইক্রো ইউএসবি কেবল
STM32CubeIDE ডাউনলোড যা বিনামূল্যে।
ধাপ 1: কোড পাওয়া
প্রথমে আপনাকে STM32CubeIDE ইনস্টল করতে হবে। আপনি এটি এসটি এর ওয়েবসাইট থেকে পেয়েছেন। আপনাকে নিবন্ধন করতে হবে এবং এটি ডাউনলোড এবং ইনস্টল করতে কিছু সময় লাগে। এটা সব বিনামূল্যে।
এটি ইনস্টল করার সময় মিনিইন সোর্স ডাউনলোড করুন এবং এটি আনজিপ করুন। এটি বড়, তবে আপনি কেবল এর একটি ছোট অংশ ব্যবহার করবেন। এখানে সবুজ 'ক্লোন বা ডাউনলোড' বাটনে ক্লিক করুন …
github.com/miniwinwm/miniwinwm
তারপর ডাউনলোড জিপ নির্বাচন করুন। বিষয়বস্তু আনজিপ করুন।
ধাপ 2: একটি উদাহরণ প্রকল্প নির্মাণ
প্রথমে একটি উদাহরণ প্রকল্প নির্মাণ করা যাক। একটি ভালকে মিনি উইনসিম্পল বলা হয়। STM32CubeIDE শুরু করুন তারপর এটি করুন:
- ফাইল চয়ন করুন | আমদানি করুন …
- সাধারণ খুলুন এবং ওয়ার্কস্পেসে বিদ্যমান প্রকল্প নির্বাচন করুন। পরবর্তী.
- ব্রাউজ ক্লিক করুন এবং যেখানে আপনি মিনিউইন আনজিপ করেছেন সেখানে নেভিগেট করুন। তারপর STM32CubeIDE / MiniWinSimple / STM32F429 ফোল্ডারে যান। ফোল্ডার নির্বাচন করুন ক্লিক করুন।
- প্রকল্পে: MiniWinSimple_STM32F429 টিক করুন তারপর শেষ ক্লিক করুন।
- MiniWinSimple_STM32F429 প্রকল্পটি আপনার প্রকল্প এক্সপ্লোরারে প্রদর্শিত হবে। এটি নির্বাচন করুন তারপর প্রকল্প | বিল্ড প্রজেক্ট দিয়ে এটি তৈরি করুন।
- এখন আপনার ইউএসবি কেবলটি বোর্ড এবং আপনার কম্পিউটারে প্লাগ ইন করুন এবং রান | ডিবাগ ব্যবহার করে এটি চালান এবং ডাউনলোড হয়ে গেলে রান | রিজিউম নির্বাচন করুন। আপনি প্রথমবার একটি স্ক্রিন ক্রমাঙ্কন প্রদর্শন পাবেন তাই LCD ডিসপ্লেতে 3 টি ক্রসের কেন্দ্র স্পর্শ করুন। আপনি এখন ডিসপ্লের উইন্ডোর সাথে ইন্টারঅ্যাক্ট করতে পারেন।
একটি উইন্ডো সরানোর জন্য এটিকে টাইটেল বার দিয়ে টেনে আনুন। একটি উইন্ডোর আকার পরিবর্তন করতে শিরোনাম বারের বাম দিকে সাদা ত্রিভুজ আইকনটি ব্যবহার করুন। মিনিউইন উইন্ডোগুলি সীমানা টেনে নিয়ে আকার পরিবর্তন করা যায় না কারণ মিনিওয়িন যে ডিসপ্লেগুলিতে ব্যবহৃত হয় তা খুব ছোট। একটি উইন্ডোকে ছোট করতে, বড় করতে বা বন্ধ করতে শিরোনাম বারের ডানদিকে আইকনগুলি ব্যবহার করুন (বন্ধ অক্ষম হতে পারে)। যখন একটি উইন্ডো মিনিমাইজ করা হয় তখন আপনি মিনিমাইজড আইকনগুলিকে চারপাশে সরাতে পারবেন না। তারা বাম থেকে ডানে নীচে তৈরি করে।
ধাপ 3: কোড জেনারেটর চালানো
এখন আমরা আমাদের নিজস্ব কিছু উইন্ডো তৈরি করে এবং নতুন কোড byুকিয়ে উদাহরণ প্রকল্পটি পরিবর্তন করব। এটি করার জন্য আমরা কোড জেনারেটর চালাব।
- একটি কমান্ড প্রম্পট খুলুন এবং সেই ফোল্ডারে যান যেখানে আপনি মিনিউইন আনজিপ করেছেন এবং তারপর টুলস / কোডজেন ফোল্ডারে যান।
- উইন্ডোজ CodeGen.exe এর জন্য এক্সিকিউটেবল ইতিমধ্যেই উপলব্ধ। লিনাক্সের জন্য আপনাকে মেক টাইপ করে এটি তৈরি করতে হবে। (আপনি যদি ডাউনলোড করা এক্সিকিউটেবল চালাতে উদ্বিগ্ন থাকেন তবে আপনি উইন্ডোজের জন্য উৎস থেকে এটি তৈরি করতে পারেন কিন্তু আপনার কম্পাইলার এবং ডেভেলপমেন্ট এনভায়রনমেন্ট ইনস্টল করা দরকার। বিস্তারিত জানার জন্য ডক্স ফোল্ডারে মিনিউইন ডকুমেন্টেশন দেখুন)।
- এই ফোল্ডারে কিছু উদাহরণ JSON ফাইল রয়েছে। আমরা example_empty.json ব্যবহার করব। উইন্ডোজ বা লিনাক্সের জন্য এটি সেট আপ করার জন্য আপনাকে প্রথমে এটি সম্পাদনা করতে হবে। এটি একটি এডিটরে খুলুন এবং শীর্ষে যেখানে আপনি "টার্গেট টাইপ" পাবেন সেখানে "লিনাক্স" বা "উইন্ডোজ" মান পরিবর্তন করুন যা আপনি কোড জেনারেটর চালাচ্ছেন।
- এখন কমান্ড প্রম্পটে codegen example_empty.json টাইপ করুন।
- STM32CubeIDE এ আপনার প্রকল্পে যান এবং MiniWinSimple_Common ফোল্ডারটি খুলুন। সেখানে থাকা সমস্ত ফাইল মুছে দিন।
- আমরা JSON ফাইলের "TargetName" ডিফল্ট হিসাবে "MiniWinGen" এ রেখে দিয়েছি যাতে আমাদের জেনারেট কোডের ফোল্ডারের নাম থাকে। সেই ফোল্ডারে যান যেখানে আপনি MiniWin এবং তারপর MiniWinGen_Common ফোল্ডারটি আনজিপ করেছেন। এখন এই সমস্ত ফাইল নির্বাচন করুন এবং আপনার প্রকল্পের MiniWinSimple_Common ফোল্ডারে STM32CubeIDE এ টেনে আনুন এবং ড্রপ করুন।
- এখন STM32CubeIDE এ প্রকল্পটি পুনর্নির্মাণ করুন এবং পুনরায় চালু করুন এবং আপনার নতুন ডিজাইন উইন্ডো প্রদর্শিত হবে। উইন্ডোর বোতামটি চলে গেছে কারণ example_empty.json কোন সংজ্ঞায়িত করে না।
ধাপ 4: একটি উইন্ডো যোগ করা
আমরা এখন JSON কনফিগারেশন ফাইলে একটি দ্বিতীয় উইন্ডো যুক্ত করব এবং কোডটি পুনরায় তৈরি করব।
1. একটি টেক্সট এডিটরে example_empty.json খুলুন।
2. "উইন্ডোজ" বিভাগের অধীনে উইন্ডোজ সংজ্ঞাগুলির একটি অ্যারে রয়েছে যা বর্তমানে শুধুমাত্র একটি উইন্ডো রয়েছে। এই সব কপি করুন …
{
"নাম": "W1", "শিরোনাম": "জানালা 1", "X": 10, "Y": 15, "প্রস্থ": 200, "উচ্চতা": 180, "সীমানা": সত্য, "TitleBar": true, "Visible": true, "Minimized": false}
এবং 2 টি সংজ্ঞা আলাদা করে কমা দিয়ে আবার পেস্ট করুন।
3. "W1" কে "W2" এবং "Window 1" কে "Window 2" এ পরিবর্তন করুন। "X", "Y", "Width" এবং "Height" কে পরিবর্তন করে কিছু ভিন্ন মান মনে রাখবেন স্ক্রিন রেজোলিউশন 240 ওয়াইড বাই 320 হাই।
4. ফাইলটি সংরক্ষণ করুন এবং আবার কোড জেনারেটর চালান।
5. আগের ধাপের মতো ফাইলগুলি অনুলিপি করুন, পুনর্নির্মাণ করুন এবং পুনরায় চালু করুন। আপনার ডিসপ্লেতে এখন 2 টি উইন্ডো থাকবে।
ধাপ 5: একটি নিয়ন্ত্রণ যোগ করা
এখন আমরা আপনার নতুন উইন্ডোতে কিছু নিয়ন্ত্রণ যোগ করব। আগের ধাপের মতো একই ফাইল সম্পাদনা করুন।
1. উইন্ডো W1 এর স্পেসিফিকেশনে শেষ সেটিং ("মিনিমাইজড": মিথ্যা) পরে একটি কমা যোগ করুন তারপর এই টেক্সটটি যোগ করুন
"মেনুবার": সত্য, "MenuBarEnabled": সত্য, "MenuItems": ["Fred", "Bert", "Pete", "Alf", "Ian"], "Buttons": [{"Name": "B1", "Label": "Button1", "X": 10, "Y": 10, "Enabled": true, "Visible": true}]
এই বিভাগটি 5 টি আইটেম সহ একটি মেনু বার যুক্ত করে এবং এটি সক্ষম করে (মেনু বারগুলি বিশ্বব্যাপী অক্ষম করা যেতে পারে, এটি ব্যবহার করে দেখুন)। এটি একটি বোতাম যুক্ত করে যা সক্ষম এবং দৃশ্যমান (সেগুলি অদৃশ্য তৈরি করা যায় এবং পরে কোডে দৃশ্যমান করা যায়)।
2. কোডটি পুনরায় তৈরি করুন, এটি জুড়ে অনুলিপি করুন, পুনর্নির্মাণ করুন, আগের মতো পুনরায় চালু করুন।
ধাপ 6: নিয়ন্ত্রণ কিছু করা
এখন আমাদের মৌলিক ইউজার ইন্টারফেস আছে যা আমাদের এটি কিছু করতে হবে। এই উদাহরণের জন্য আমরা উইন্ডো 1 এর বোতামটি চাপলে একটি রঙ চয়নকারী ডায়ালগ পপ আপ করব।
STM32CubeIDE এ আপনার প্রকল্পে যান এবং MiniWinSimple_Common ফোল্ডারটি খুলুন এবং তারপরে W1.c ফাইলটি খুলুন (কোডটি তৈরি হওয়ার সময় JSON ফাইলে উইন্ডোর "নাম" ক্ষেত্রের সাথে এই ফাইলের নাম মিলবে)।
এই ফাইলে আপনি window_W1_message_function () ফাংশন পাবেন। এটা এই মত দেখাচ্ছে:
void window_W1_message_function (const mw_message_t *message) {MW_ASSERT (message! = (void *) 0, "নাল পয়েন্টার প্যারামিটার"); / * পরবর্তী লাইন কম্পাইলার সতর্কতা বন্ধ করে দেয় কারণ ভেরিয়েবল বর্তমানে অব্যবহৃত */ (অকার্যকর) window_W1_data; সুইচ (মেসেজ-> মেসেজ_আইডি) {কেস MW_WINDOW_CREATED_MESSAGE: / * যেকোন উইন্ডো ইনিশিয়ালাইজেশন কোড এখানে যোগ করুন * / বিরতি; কেস MW_MENU_BAR_ITEM_PRESSED_MESSAGE: / * এখানে উইন্ডো মেনু হ্যান্ডলিং কোড যোগ করুন * / বিরতি; কেস MW_BUTTON_PRESSED_MESSAGE: if (message-> sender_handle == button_B1_handle) { / * এই নিয়ন্ত্রণের জন্য আপনার হ্যান্ডলার কোড এখানে যোগ করুন * /} বিরতি; ডিফল্ট: / * MISRA কে খুশি রাখুন * / বিরতি; }}
যখনই উইন্ডো ম্যানেজার জানালাকে জানাতে হবে যে কিছু ঘটেছে। এই ক্ষেত্রে আমরা জানার জন্য আগ্রহী যে জানালার একমাত্র বোতাম টিপানো হয়েছে। বার্তার প্রকারের সুইচ স্টেটমেন্টে আপনি MW_BUTTON_PRESSED_MESSAGE- এর একটি কেস দেখতে পাবেন। বোতাম টিপলে এই কোডটি চলে। এই উইন্ডোতে শুধুমাত্র একটি বোতাম আছে, কিন্তু আরো কিছু হতে পারে, তাই কোন বোতামটি আছে তা পরীক্ষা করা হয়। এই ক্ষেত্রে এটি কেবল বোতাম B1 হতে পারে (নামটি আবার JSON ফাইলের বোতামের নামের সাথে মিলে যায়)।
সুতরাং এই কেস লেবেলের পরে একটি রঙ চয়নকারী ডায়ালগ পপ আপ করার জন্য কোড যুক্ত করুন, যা হল:
mw_create_window_dialog_colour_chooser (10, 10, "Color", MW_HAL_LCD_RED, মিথ্যা, বার্তা-> প্রাপক_হ্যান্ডেল);
পরামিতিগুলি নিম্নরূপ:
- 10, 10 ডায়ালগের পর্দায় অবস্থান
- "রঙ" হল সংলাপের শিরোনাম
- MW_HAL_LCD_RED হল ডিফল্ট রঙ ডায়ালগ দিয়ে শুরু হবে
- মিথ্যা মানে বড় আকার দেখাবেন না (এটি সত্যে সেট করার চেষ্টা করুন এবং পার্থক্য দেখুন)
- মেসেজ-> প্রাপক হ্যান্ডেল যিনি এই ডায়ালগের মালিক, এই ক্ষেত্রে এটি এই উইন্ডো। একটি উইন্ডোর হ্যান্ডেল ফাংশনের বার্তা প্যারামিটারে রয়েছে। এই উইন্ডোতে ডায়ালগ প্রতিক্রিয়া পাঠানো হবে।
ব্যবহারকারীর বেছে নেওয়া রঙের মান জানার জন্য উইন্ডো ম্যানেজার আমাদের উইন্ডোকে নির্বাচিত রঙের সাথে একটি বার্তা পাঠাবে যখন ব্যবহারকারী ডায়ালগে ওকে বাটন চাপবে। অতএব আমাদের এই বার্তাটিকে সুইচ স্টেটমেন্টের অন্য একটি ক্ষেত্রেও আটকানো দরকার যা এইরকম দেখাচ্ছে:
কেস MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE:
{mw_hal_lcd_colour_t selected_colour = message-> message_data; (অকার্যকর) নির্বাচিত_রঙ; } বিরতি;
আমরা এখনও নির্বাচিত রঙের সাথে কিছু করছি না তাই কেবল একটি কম্পাইলার সতর্কতা রোধ করতে এটিকে অকার্যকর করে ফেলুন। এই ফাংশনের চূড়ান্ত কোড এখন এইরকম দেখাচ্ছে:
void window_W1_message_function (const mw_message_t *message)
{MW_ASSERT (বার্তা! = (অকার্যকর*) 0, "নাল পয়েন্টার প্যারামিটার"); / * পরবর্তী লাইন কম্পাইলার সতর্কতা বন্ধ করে দেয় কারণ ভেরিয়েবল বর্তমানে অব্যবহৃত */ (অকার্যকর) window_W1_data; সুইচ (মেসেজ-> মেসেজ_আইডি) {কেস MW_WINDOW_CREATED_MESSAGE: / * যেকোন উইন্ডো ইনিশিয়ালাইজেশন কোড এখানে যোগ করুন * / বিরতি; কেস MW_MENU_BAR_ITEM_PRESSED_MESSAGE: / * এখানে উইন্ডো মেনু হ্যান্ডলিং কোড যোগ করুন * / বিরতি; কেস MW_BUTTON_PRESSED_MESSAGE: যদি (বার্তা-> প্রেরক_হ্যান্ডেল == button_B1_handle) { / * এই নিয়ন্ত্রণের জন্য এখানে আপনার হ্যান্ডলার কোড যোগ করুন * / mw_create_window_dialog_colour_chooser (10, 10, "কালার", MW_HAL_LCD_RED, মিথ্যা রেসিড, মিথ্যা রেন্ড, মিথ্যা রেন্ড; } বিরতি; কেস MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE: {mw_hal_lcd_colour_t selected_colour = message-> message_data; (অকার্যকর) নির্বাচিত_রঙ; } বিরতি; ডিফল্ট: / * MISRA কে খুশি রাখুন * / বিরতি; }}
কোডটি রান করা উপরের ছবিতে দেখানো হয়েছে। আপনি লক্ষ্য করতে পারেন যে যখন একটি ডায়ালগ দেখাচ্ছে তখন আপনাকে এটিতে সাড়া দিতে হবে এবং আপনি অন্য কিছু করার আগে তা বাতিল করতে হবে। একে বলা হয় মোডাল বিহেভিয়ার। মিনিওয়িনে ডায়ালগ এবং সব সময় বিশ্বব্যাপী মোডাল এবং আপনি একবারে শুধুমাত্র একটি দেখাতে পারেন। এখানে আরো ব্যাখ্যা আছে …
en.wikipedia.org/wiki/Modal_window
ধাপ 7: উইন্ডোতে অঙ্কন
এখন পর্যন্ত আমরা শুধুমাত্র নিয়ন্ত্রণ ব্যবহার করেছি, এবং তারা নিজেদের আঁকা। আমাদের উইন্ডোতে কিছু কাস্টম অঙ্কন করার সময় এসেছে। আপনি যে অংশটি আঁকতে পারেন তা সীমানাগুলির ভিতরে (যদি সেগুলি থাকে তবে সেগুলি alচ্ছিক), স্ক্রোল বারগুলির ভিতরে (যদি সংজ্ঞায়িত করা হয়, এটিও alচ্ছিক) এবং শিরোনাম বারের নীচে (যদি একটি থাকে তবে এটিও alচ্ছিক)। এটিকে উইন্ডো পরিভাষায় ক্লায়েন্ট এলাকা বলা হয়।
মিনি উইনে গ্রাফিক্স কমান্ডের একটি লাইব্রেরি আছে যা আপনি ব্যবহার করতে পারেন। তারা সবাই জানালা সচেতন। এর মানে হল যে উইন্ডোটি দৃশ্যমান, আংশিকভাবে অন্যান্য জানালা দ্বারা আচ্ছাদিত, আংশিকভাবে বন্ধ বা সম্পূর্ণ পর্দা বন্ধ, অথবা আপনি যেখানে অঙ্কন করছেন তার সমন্বয় ক্লায়েন্ট এলাকায় বা তার বাইরে । এটা সব আপনার জন্য যত্ন নেওয়া হয়। আপনি আপনার ক্লায়েন্ট এলাকার বাইরে আঁকতে পারবেন না।
উইন্ডোজ পরিভাষায় ক্লায়েন্ট এলাকায় অঙ্কন করাকে পেইন্টিং বলা হয় এবং প্রতিটি উইন্ডোতে একটি পেইন্ট ফাংশন থাকে যেখানে আপনি আপনার অঙ্কন করেন। আপনি আপনার পেইন্ট ফাংশনকে কল করবেন না, উইন্ডো ম্যানেজার প্রয়োজন হলে এটি আপনার জন্য করে। এটি প্রয়োজন যখন একটি উইন্ডো সরানো হয় বা উপরে অন্য উইন্ডো তার অবস্থান বা দৃশ্যমানতা পরিবর্তন করা হয়। যদি আপনার উইন্ডো পুনরায় রঙ করার প্রয়োজন হয় কারণ উইন্ডোর বিষয়বস্তু নির্ভর করে এমন কিছু ডেটা পরিবর্তিত হয়েছে (অর্থাৎ আপনি জানেন যে উইন্ডো ম্যানেজার জানার পরিবর্তে পুনরায় রঙ করা প্রয়োজন), তাহলে আপনি উইন্ডো ম্যানেজারকে বলবেন যে একটি পুনরায় রঙ করা প্রয়োজন এবং এটি কল করে আপনার পেইন্ট ফাংশন। আপনি এটাকে নিজে কল করবেন না। (এই সব পরবর্তী বিভাগে প্রদর্শিত হয়)।
প্রথমত, আপনাকে আপনার পেইন্ট ফাংশনটি খুঁজে বের করতে হবে। কোড জেনারেটর এটি আপনার জন্য তৈরি করে এবং এটি পূর্ববর্তী বিভাগে পরিবর্তিত বার্তা হ্যান্ডলার ফাংশনের ঠিক উপরে। আপনার প্রকল্পে যান এবং আবার ফাইল W1.c খুলুন।
এই ফাইলে আপনি window_W1_paint_function () ফাংশন পাবেন। এটা এই মত দেখাচ্ছে:
void window_W1_paint_function (mw_handle_t window_handle, const mw_gl_draw_info_t *draw_info)
{MW_ASSERT (draw_info! = (Void*) 0, "নাল পয়েন্টার প্যারামিটার"); / * কঠিন সাদা */ mw_gl_set_fill (MW_GL_FILL) দিয়ে উইন্ডোর ক্লায়েন্ট এলাকা পূরণ করুন; mw_gl_set_solid_fill_colour (MW_HAL_LCD_WHITE); mw_gl_set_border (MW_GL_BORDER_OFF); mw_gl_clear_pattern (); mw_gl_rectangle (draw_info, 0, 0, mw_get_window_client_rect (window_handle).width, mw_get_window_client_rect (window_handle).height); / * এখানে আপনার উইন্ডো পেইন্টিং কোড যোগ করুন */}
এটি খালি হিসাবে উৎপন্ন কোড এবং এটি যা করে তা হল ক্লায়েন্ট এলাকাটি সাদা সাদা দিয়ে পূরণ করা। ক্লায়েন্ট এলাকায় একটি হলুদ ভরা বৃত্ত আঁকা যাক। প্রথমে আমাদের একটি গ্রাফিক্স প্রসঙ্গের ধারণা (আরেকটি উইন্ডোজ জিনিস) বুঝতে হবে। আমরা গ্রাফিক্স প্রসঙ্গে অঙ্কন পরামিতি সেট করি এবং তারপর একটি সাধারণ বৃত্ত অঙ্কন রুটিন কল। এই উদাহরণে আমাদের যে বিষয়গুলো সেট করতে হবে তা হল বৃত্তের একটি সীমানা আছে কি না, সীমানা রেখা শৈলী, সীমানা রঙ, বৃত্তটি ভরাট কিনা, রঙ পূরণ করুন এবং প্যাটার্ন পূরণ করুন। আপনি উপরের কোডটি দেখতে পারেন যা ক্লায়েন্ট এরিয়াকে সীমান্তবিহীন কঠিন ভরাট সাদা আয়তক্ষেত্রের জন্য অনুরূপ কিছু করে। পেইন্ট ফাংশনের প্রতিটি কলের মধ্যে গ্রাফিক্স প্রসঙ্গে মানগুলি মনে রাখা হয় না তাই আপনাকে প্রতিবার মানগুলি সেট আপ করতে হবে (যদিও সেগুলি পেইন্ট ফাংশনের সাথে মনে রাখা হয়)।
উপরের কোডে আপনি দেখতে পাচ্ছেন যে ফিল চালু আছে এবং প্যাটার্নটি বন্ধ রয়েছে, তাই আমাদের সেগুলি আবার সেট করার দরকার নেই। আমাদের সীমানা সেট করতে হবে, সীমানা রেখার স্টাইলকে কঠিন, বর্ডার ফোরগ্রাউন্ড রঙকে কালো এবং রঙকে হলুদে পূরণ করতে হবে:
mw_gl_set_fg_colour (MW_HAL_LCD_BLACK);
mw_gl_set_solid_fill_colour (MW_HAL_LCD_YELLOW); mw_gl_set_line (MW_GL_SOLID_LINE); mw_gl_set_border (MW_GL_BORDER_ON); mw_gl_circle (draw_info, window_simple_data.circle_x, window_simple_data.circle_y, 25);
এই ফাংশনে মন্তব্যটিতে এই কোডটি যোগ করুন যেখানে এটি আপনার কোড যোগ করতে বলে। এরপরে আমাদের একটি বৃত্ত আঁকতে হবে যা এইভাবে করা হয়:
mw_gl_circle (draw_info, 30, 30, 15);
এটি 15, ব্যাসার্ধ সহ 30, 30 স্থানাঙ্কগুলিতে একটি বৃত্ত আঁকে। কোডটি পুনর্নির্মাণ করুন এবং এটি পুনরায় চালান এবং আপনি উপরে দেখানো হিসাবে উইন্ডোতে একটি বৃত্ত দেখতে পাবেন। আপনি লক্ষ্য করবেন যে বৃত্ত এবং বোতামটি ওভারল্যাপ হয়েছে কিন্তু বোতামটি শীর্ষে রয়েছে। এটি নকশা দ্বারা। ক্লায়েন্ট এরিয়াতে আপনি যা কিছু আঁকেন তার উপরে নিয়ন্ত্রণ সবসময় থাকে।
ধাপ 8: উইন্ডো ডেটা
এ পর্যন্ত আমরা উইন্ডো 1 এর মেসেজ ফাংশন (ইনকামিং মেসেজ হ্যান্ডেল করতে) এবং এর পেইন্ট ফাংশন (উইন্ডোর ক্লায়েন্ট এরিয়াতে আঁকার জন্য) আমাদের নিজস্ব কোড প্রয়োগ করেছি। এখন সময় এসেছে দুটোকে লিঙ্ক করার। পেইন্ট ফাংশনে আঁকা বৃত্তটি ব্যবহারকারীর রঙ বাছাইয়ের মাধ্যমে বাটন চাপার সময় ব্যবহারকারীর পছন্দ করা রঙ দিয়ে পূরণ করতে দিন। মনে রাখবেন যে আমরা পেইন্ট ফাংশনকে কল করি না, উইন্ডো ম্যানেজার এটি করে, তাই আমাদের মেসেজ ফাংশন (যা বেছে নেওয়া রঙ জানে) সরাসরি পেইন্ট ফাংশনকে কল করতে পারে না। পরিবর্তে আমাদের ডেটা ক্যাশে করতে হবে এবং উইন্ডো ম্যানেজারকে জানাতে হবে যে পুনরায় রঙ করা প্রয়োজন। উইন্ডো ম্যানেজার তখন পেইন্ট ফাংশনকে কল করবে যা ক্যাশেড ডেটা ব্যবহার করতে পারে।
W1.c এর শীর্ষে আপনি একটি খালি ডেটা স্ট্রাকচার এবং কোড জেনারেটর দ্বারা ঘোষিত এই ধরণের একটি বস্তু দেখতে পাবেন:
টাইপডেফ কাঠামো
{ / * এখানে আপনার ডেটা সদস্যদের যোগ করুন * / চর ডামি; /* কিছু কম্পাইলার খালি স্ট্রাক্ট সম্পর্কে অভিযোগ করে; আপনার সদস্যদের যোগ করার সময় এটি সরান */} window_W1_data_t; স্ট্যাটিক উইন্ডো_ W1_data_t উইন্ডো_ W1_data;
এখানেই আমরা আমাদের ডেটা ক্যাশে করি যাতে এটি কল জুড়ে সংরক্ষিত থাকে এবং উইন্ডো ডেটা নামে পরিচিত। আমাদের কেবল এখানে নির্বাচিত রঙ সংরক্ষণ করতে হবে, যেমন:
টাইপডেফ কাঠামো
{ / * এখানে আপনার ডেটা মেম্বার যোগ করুন * / mw_hal_lcd_colour_t selected_colour; } window_W1_data_t; স্ট্যাটিক উইন্ডো_ W1_data_t window_W1_data = {MW_HAL_LCD_YELLOW};
আমরা এটি হলুদ একটি শুরু রঙ দিতে হবে। এখন মেসেজ ফাংশনে আমরা কোডটি কিছুটা পরিবর্তন করব এখানে নির্বাচিত রঙটি সংরক্ষণ করতে:
কেস MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE:
{window_W1_data.chosen_colour = message-> message_data; } বিরতি;
তারপরে আমরা এই মানটি ব্যবহার করার জন্য পেইন্ট ফাংশনটি পরিবর্তন করব যখন এটি বৃত্তটি এভাবে আঁকবে:
mw_gl_set_solid_fill_colour (window_W1_data.chosen_colour);
এখন আমরা উইন্ডোর বিষয়বস্তু নির্ভর করে এমন ডেটা পরিবর্তন করেছি, তাই আমাদের উইন্ডো ম্যানেজারকে জানাতে হবে যে উইন্ডোটি পুনরায় রঙ করা দরকার। ডায়ালগ ওকে মেসেজ পেলে আমরা মেসেজ ফাংশনে এটি করি:
mw_paint_window_client (বার্তা-> প্রাপক_হ্যান্ডেল);
এর ফলে জানালাটি সরাসরি আঁকা হয় না। এটি একটি ইউটিলিটি ফাংশন যা উইন্ডো ম্যানেজারকে একটি বার্তা প্রেরণ করে যে একটি উইন্ডোকে পুনরায় রঙ করা দরকার (যদি আপনি এটিতে প্রবেশ করেন তবে দেখতে পারেন এটি কীভাবে হয়)। এই ক্ষেত্রে যে উইন্ডোটি পুনরায় রঙ করা দরকার তা নিজেই, এবং উইন্ডোর হ্যান্ডেলটি মেসেজ হ্যান্ডলার ফাংশনের বার্তা প্যারামিটারে রয়েছে।
পুরো ফাইলটি এখন এইরকম দেখায় যদি আপনি নিশ্চিত না হন যে উপরের কোড স্নিপেটগুলি কোথায় যায়:
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত "miniwin.h" #অন্তর্ভুক্ত "miniwin_user.h" #অন্তর্ভুক্ত "W1.h" typedef struct { / * এখানে আপনার ডেটা সদস্যদের যোগ করুন * / mw_hal_lcd_colour_t selected_colour; } window_W1_data_t; স্ট্যাটিক উইন্ডো_ W1_data_t window_W1_data = {MW_HAL_LCD_YELLOW}; void window_W1_paint_function (mw_handle_t window_handle, const mw_gl_draw_info_t *draw_info) {MW_ASSERT (draw_info! = (void *) 0, "নাল পয়েন্টার প্যারামিটার"); / * কঠিন সাদা */ mw_gl_set_fill (MW_GL_FILL) দিয়ে উইন্ডোর ক্লায়েন্ট এলাকা পূরণ করুন; mw_gl_set_solid_fill_colour (MW_HAL_LCD_WHITE); mw_gl_set_border (MW_GL_BORDER_OFF); mw_gl_clear_pattern (); mw_gl_rectangle (draw_info, 0, 0, mw_get_window_client_rect (window_handle).width, mw_get_window_client_rect (window_handle).height); / * এখানে আপনি উইন্ডো পেইন্টিং কোড যোগ করুন */ mw_gl_set_fg_colour (MW_HAL_LCD_BLACK); mw_gl_set_solid_fill_colour (window_W1_data.chosen_colour); mw_gl_set_line (MW_GL_SOLID_LINE); mw_gl_set_border (MW_GL_BORDER_ON); mw_gl_circle (draw_info, 30, 30, 15); } void window_W1_message_function (const mw_message_t *message) {MW_ASSERT (message! = (void *) 0, "নাল পয়েন্টার প্যারামিটার"); / * পরবর্তী লাইন কম্পাইলার সতর্কতা বন্ধ করে দেয় কারণ ভেরিয়েবল বর্তমানে অব্যবহৃত */ (অকার্যকর) window_W1_data; সুইচ (মেসেজ-> মেসেজ_আইডি) {কেস MW_WINDOW_CREATED_MESSAGE: / * যেকোন উইন্ডো ইনিশিয়ালাইজেশন কোড এখানে যোগ করুন * / বিরতি; কেস MW_MENU_BAR_ITEM_PRESSED_MESSAGE: / * এখানে উইন্ডো মেনু হ্যান্ডলিং কোড যোগ করুন * / বিরতি; কেস MW_BUTTON_PRESSED_MESSAGE: যদি (বার্তা-> প্রেরক_হ্যান্ডেল == button_B1_handle) { / * এই নিয়ন্ত্রণের জন্য এখানে আপনার হ্যান্ডলার কোড যোগ করুন * / mw_create_window_dialog_colour_chooser (10, 10, "কালার", MW_HAL_LCD_RED, মিথ্যা রেসিড, মিথ্যা রেন্ড, মিথ্যা রেন্ড; } বিরতি; কেস MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE: {window_W1_data.chosen_colour = message-> message_data; mw_paint_window_client (বার্তা-> প্রাপক_হ্যান্ডেল); } বিরতি; ডিফল্ট: / * MISRA কে খুশি রাখুন * / বিরতি; }}
তৈরি করুন এবং আবার চালান এবং আপনি বৃত্তের ভরাট রং সেট করতে সক্ষম হওয়া উচিত।
উইন্ডো ডেটার এই উদাহরণটি ডেটা ব্যবহার করে যা সোর্স ফাইলের উপরে একটি স্ট্যাটিক ডেটা স্ট্রাকচারে সংরক্ষিত থাকে। আপনার যদি উইন্ডোর একটি উদাহরণ থাকে তবে এটি ঠিক আছে, যেমনটি আমরা এই উদাহরণে করি, তবে যদি আপনার একাধিক উদাহরণ থাকে তবে তারা সবাই একই ডেটা স্ট্রাকচার ভাগ করবে। প্রতি-উদাহরণের ডেটা থাকা সম্ভব তাই একই উইন্ডো টাইপের একাধিক দৃষ্টান্তের নিজস্ব ডেটা রয়েছে। ডক্স ডিরেক্টরিতে পাওয়া মিনিউইন ডকুমেন্টেশনে এটি ব্যাখ্যা করা হয়েছে। ফাইলের উদাহরণ এটি একই উইন্ডো টাইপের একাধিক ছবি দেখানোর জন্য ব্যবহার করে (যেমন এই নির্দেশের একেবারে শীর্ষে প্রধান ছবিতে দেখা যায়)।
ধাপ 9: কিছু চূড়ান্ত ফন্ট মজা
মিনিউইন ট্রু টাইপ ফন্ট রেন্ডারিং সমর্থন করে। যদি এমন একটি জিনিস থাকে যা আপনার ইউজার ইন্টারফেসকে সুন্দর দেখায় তবে এটি আকর্ষণীয় ফন্ট। এই চূড়ান্ত ধাপটি দেখায় কিভাবে একটি মিনিউইন উইন্ডোতে একটি ট্রু টাইপ ফন্ট রেন্ডার করতে হয়।
ট্রু টাইপ ফন্ট রেন্ডার করার দুটি উপায় আছে। একটি হল সেগুলো সরাসরি আপনার ক্লায়েন্ট এরিয়াতে আঁকা যেমনটা আগে বৃত্তের জন্য করা হয়েছিল, অন্যটি হল আপনার উইন্ডোতে একটি টেক্সট বক্স কন্ট্রোল যোগ করা। আমরা পরেরটা করছি যত সহজ।
এখন আমরা আমাদের JSON কনফিগারেশন ফাইলে একটি টেক্সট বক্স নিয়ন্ত্রণ যোগ করব। এটি উইন্ডো 2 এর সংজ্ঞায় যুক্ত করুন যাতে এটি এর মতো দেখাচ্ছে:
এটার মত:
{
"নাম": "W2", "শিরোনাম": "উইন্ডো 2", "X": 50, "Y": 65, "প্রস্থ": 100, "উচ্চতা": 80, "সীমানা": সত্য, "TitleBar": সত্য, "দৃশ্যমান": সত্য, "ছোট করা": মিথ্যা, "টেক্সটবক্স": [{"নাম": "TB1", "X": 0, "Y": 0, "প্রস্থ": 115, "উচ্চতা": 50, "জাস্টিফিকেশন": "সেন্টার", "ব্যাকগ্রাউন্ড কালার": "MW_HAL_LCD_YELLOW", "ফোরগ্রাউন্ড কালার": "MW_HAL_LCD_BLACK", "Font": "mf_rlefont_BLKCHCRY16", "Enabled": true, "visible"
মিনিউইনে ট্রু টাইপ ফন্ট সম্পর্কে একটি দ্রুত শব্দ।. Tf ফাইলে ফন্ট আসে। বড় কম্পিউটারে উইন্ডো ম্যানেজারগুলিতে এগুলি যখন প্রয়োজন হয় তখন আপনার ডিসপ্লেতে উপস্থাপিত হয়। এটি প্রচুর প্রক্রিয়াকরণ শক্তি এবং মেমরি নেয় এবং ছোট ডিভাইসের জন্য উপযুক্ত নয়। মিনিউইনে সেগুলি বিটম্যাপে প্রাক-প্রক্রিয়াকৃত হয় এবং কম্পাইল করার সময় একটি নির্দিষ্ট ফন্ট সাইজ এবং স্টাইলে (বোল্ড, ইটালিক্স ইত্যাদি) লিঙ্ক করা হয় অর্থাৎ কম্পাইল করার সময় আপনি কোন আকার এবং স্টাইলে কোন ফন্ট ব্যবহার করতে যাচ্ছেন তা নির্ধারণ করতে হবে। আপনার ডাউনলোড করা মিনিউইন জিপ ফাইলে দুটি উদাহরণ ফন্টের জন্য এটি করা হয়েছে। আপনি যদি অন্যান্য আকার এবং শৈলীতে অন্যান্য ফন্ট ব্যবহার করতে চান তবে ডক্স ফোল্ডারে মিনিউইন ডকুমেন্টেশন দেখুন। উইন্ডোজ এবং লিনাক্সের জন্য মিনিউইনে টুলস রয়েছে।
এবং একটি দ্বিতীয় দ্রুত শব্দ - অধিকাংশ ফন্ট কপিরাইট, আপনি মাইক্রোসফট উইন্ডোজ খুঁজে পাবেন সহ। ব্যক্তিগত ব্যবহারের জন্য সেগুলো ইচ্ছামতো ব্যবহার করুন, কিন্তু আপনি যা কিছু প্রকাশ করেন তা অবশ্যই নিশ্চিত করতে হবে যে ফন্টগুলি লাইসেন্স দিয়ে প্রকাশ করা হয়েছে, যেমনটি মিনিভিনে অন্তর্ভুক্ত 2 টি ফন্টের ক্ষেত্রে, কিন্তু মাইক্রোসফটের ফন্ট নয়!
কোডে ফিরে যান! জেনারেট করুন, ফাইল ড্রপ করুন, বিল্ড করুন এবং আগের মতো পুনরায় চালু করুন এবং আপনি উইন্ডো 2 দেখতে পাবেন এখন একটি বোকা ফন্টে হলুদ পটভূমিতে কিছু ডিফল্ট পাঠ্য রয়েছে। উইন্ডো 2 এর সোর্স ফাইল W2.c এডিট করে টেক্সট পরিবর্তন করা যাক
আমাদের তৈরি করা টেক্সট বক্সের সাথে আমাদের যোগাযোগ করতে হবে এবং মিনিভিনের যেকোনো যোগাযোগের মতো আপনি যেভাবে এটি করেন তা হল একটি বার্তা পাঠানো। উইন্ডো তৈরি হওয়ার সময় আমরা নিয়ন্ত্রণে পাঠ্য সেট করতে চাই কিন্তু এটি দেখানোর আগে, তাই আমরা MW_WINDOW_CREATED_MESSAGE ক্ষেত্রে বার্তা হ্যান্ডলারে কোড যোগ করি। উইন্ডো প্রদর্শিত হওয়ার ঠিক আগে এটি উইন্ডো কোড দ্বারা প্রাপ্ত হয় এবং এটি এইরকম প্রারম্ভিক কাজের জন্য তৈরি করা হয়। কোড জেনারেটর একটি স্থান ধারক তৈরি করেছে যা বার্তা হ্যান্ডলার ফাংশনে এইরকম দেখাচ্ছে:
কেস MW_WINDOW_CREATED_MESSAGE:
/ * এখানে কোন উইন্ডো প্রারম্ভিক কোড যোগ করুন */ বিরতি;
এখানে আমরা টেক্সট বক্স কন্ট্রোল এ একটি বার্তা পোস্ট করতে যাচ্ছি যে আমরা mw_post_message ফাংশনটি ব্যবহার করে কোন টেক্সট দেখাতে চাই তা বলব:
কেস MW_WINDOW_CREATED_MESSAGE:
/ * যেকোনো উইন্ডো ইনিশিয়ালাইজেশন কোড এখানে যোগ করুন */ mw_post_message (MW_TEXT_BOX_SET_TEXT_MESSAGE, বার্তা-> প্রাপক_হ্যান্ডেল, text_box_TB1_handle, 0UL, "একটি অন্ধকার এবং ঝড়ো রাত …", MW_CONTROL_MESSAGE); বিরতি;
এই পরামিতিগুলি হল:
- MW_TEXT_BOX_SET_TEXT_MESSAGE - এটি মেসেজের ধরন যা আমরা নিয়ন্ত্রণে পাঠাচ্ছি। তারা miniwin.h এ তালিকাভুক্ত এবং ডকুমেন্টেশনে নথিভুক্ত।
- বার্তা-> প্রাপক_হ্যান্ডেল - এই বার্তাটি কার কাছ থেকে এসেছে - এই উইন্ডো - যার হ্যান্ডেলটি বার্তা প্যারামিটারে রয়েছে যা বার্তা হ্যান্ডলার ফাংশনে প্রবেশ করেছে।
- text_box_TB1_handle - আমরা কাকে বার্তা পাঠাচ্ছি - পাঠ্য বাক্স নিয়ন্ত্রণের হ্যান্ডেল। এগুলি জেনারেট করা ফাইল miniwin_user.h এ তালিকাভুক্ত।
- 0UL - ডেটা মান, এই ক্ষেত্রে কিছুই নয়।
- "একটি অন্ধকার এবং ঝড়ো রাত ছিল …" - পয়েন্টার মান - নতুন পাঠ্য।
- MW_CONTROL_MESSAGE - প্রাপকের ধরন যা একটি নিয়ন্ত্রণ।
এটাই. যথারীতি পুনর্নির্মাণ এবং পুনরায় চালান এবং আপনি উপরের চিত্রের মতো দেখানো পাঠ্য বাক্সটি পাবেন।
মেসেজ পোস্টিং মিনিউইনের জন্য মৌলিক (যেমন এটি সব উইন্ডো ম্যানেজারদের জন্য)। আরও উদাহরণের জন্য জিপ ফাইলের উদাহরণ প্রকল্পগুলি দেখুন এবং একটি বিস্তৃত ব্যাখ্যার জন্য ডকুমেন্টেশনে মিনিউইন বার্তাগুলির বিভাগটি পড়ুন।
ধাপ 10: আরও এগিয়ে যাওয়া
মিনিভিনের এই মৌলিক পরিচিতির জন্যই এটি। মিনিভিন এখানে প্রদর্শিত হয়েছে তার চেয়ে অনেক বেশি কিছু করতে পারে। উদাহরণস্বরূপ, এই নির্দেশে ব্যবহৃত বোর্ডের পর্দা ছোট এবং নিয়ন্ত্রণগুলি ছোট এবং একটি ডিবারের সাথে ব্যবহার করা প্রয়োজন। যাইহোক, অন্যান্য উদাহরণ এবং হার্ডওয়্যার বৃহত্তর ডিসপ্লেতে বৃহত্তর নিয়ন্ত্রণ (সেখানে 2 টি আকার আছে) ব্যবহার করে এবং এগুলি আঙুল দ্বারা পরিচালিত হতে পারে।
এখানে প্রদর্শিত নিয়ন্ত্রণের চেয়ে আরও অনেক ধরণের নিয়ন্ত্রণ রয়েছে। আরও নিয়ন্ত্রণের জন্য কোড জেনারেটর ফোল্ডারে JSON ফাইলগুলির বিভিন্ন উদাহরণ দেখুন। সমস্ত নিয়ন্ত্রণের ধরন এই উদাহরণগুলিতে আচ্ছাদিত।
উইন্ডোজের অনেক অপশন আছে। সীমানা, শিরোনাম বার এবং আইকন সব কনফিগারযোগ্য। আপনার কাছে স্ক্রোল বার এবং স্ক্রোলিং উইন্ডো ক্লায়েন্ট এলাকা থাকতে পারে, একই উইন্ডো টাইপ এবং জানালার একাধিক দৃষ্টান্ত নগ্ন হতে পারে (শুধুমাত্র একটি ক্লায়েন্ট এলাকা, কোন সীমানা বা শিরোনাম বার নয়) যার মানে হল যে তারা ডিসপ্লেতে কম্পাইল করার সময় ঠিক করা আছে (আকারের বড় আইকন সহ এই বিভাগে ছবিটি দেখুন - এগুলি আসলে 6 টি নগ্ন জানালা)।
MiniWin কোন গতিশীল মেমরি ব্যবহার করে না। এটি ছোট সীমাবদ্ধ ডিভাইসের জন্য উপযুক্ত করে তোলে এবং কিছু এমবেডেড প্রকল্পের জন্য এটি একটি প্রয়োজনীয়তা। মিনিউইন এবং এটি যে কোডটি তৈরি করে তা সম্পূর্ণরূপে MISRA 2012 'প্রয়োজনীয়' স্তরের সাথে সামঞ্জস্যপূর্ণ।
আরও তথ্যের জন্য ডকুমেন্টেশনের জন্য ডক্স ফোল্ডারে দেখুন এবং জিপ ফাইলের অন্যান্য উদাহরণ অ্যাপ্লিকেশন। এখানে মিনিভিনের সমস্ত বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করা যায় এবং কিভাবে ফিনএফএস এবং ফ্রিআরটিওএসের সাথে মিনিউইনকে সংহত করা যায় তা দেখানো হয়েছে।
প্রস্তাবিত:
কেবল ম্যানেজার: 6 টি ধাপ
ক্যাবল ম্যানেজার: একজন আইটি ছাত্র হিসাবে, সবাই আমার ফোনে, ইন্টারনেটের জন্য তারের জন্য আমাকে জিজ্ঞাসা করতে আসে … তাই আমি আমার সাহায্য ছাড়াই তাদের প্রয়োজনীয় তারের সন্ধানের একটি সহজ উপায় চেয়েছিলাম। এই কারণেই আমি কেবল ম্যানেজার তৈরি করেছি এই ধারণাটি একটি চূড়ান্ত হিসাবে বিকশিত হচ্ছে
ওয়েবমিনে ফাইল ম্যানেজার কাজ করা: 5 টি ধাপ
ওয়েবমিনে ফাইল ম্যানেজার কাজ করা: ওয়েবমিন ফাইল ম্যানেজার একটি খুব দরকারী টুল। ওরাকলের (সাবান বক্স) কারণে ব্রাউজারে জাভা অ্যাপ ব্যবহার করা খুবই কঠিন হয়ে পড়েছে। দুর্ভাগ্যবশত, ফাইল ম্যানেজার একটি জাভা অ্যাপ। এটি খুব শক্তিশালী এবং এটিকে খারাপ করার জন্য প্রচেষ্টার মূল্য রয়েছে
টাস্ক ম্যানেজার - একটি গৃহস্থালি কাজ ব্যবস্থাপনা সিস্টেম: 5 টি ধাপ (ছবি সহ)
টাস্ক ম্যানেজার - একটি গৃহস্থালির কাজ ব্যবস্থাপনা ব্যবস্থা: আমি আমাদের পরিবারের (এবং, আমি কল্পনা করি, অন্যান্য অনেক পাঠকের) সম্মুখীন একটি বাস্তব সমস্যার সমাধান করার চেষ্টা করতে চেয়েছিলাম, যা আমার সন্তানদের সাহায্য করার জন্য বরাদ্দ, অনুপ্রাণিত এবং পুরস্কৃত করার উপায়। গৃহস্থালি কাজের সঙ্গে। এখন পর্যন্ত, আমরা একটি স্তরিত শীট রেখেছি
ইউসিএল - এম্বেডেড // সৌর প্যানেলের জন্য ডুয়েল অ্যাক্সিস লাইট ট্র্যাকার: 7 টি ধাপ
ইউসিএল - এম্বেডেড // সৌর প্যানেলের জন্য ডুয়েল অ্যাক্সিস লাইট ট্র্যাকার: একত্রিত প্রকল্প এবং পৃথক 3D ফাইল
এম্বেডেড সিস্টেম সহ হোম সিকিউরিটি: 12 টি ধাপ (ছবি সহ)
এমবেডেড সিস্টেমের সাথে হোম সিকিউরিটি: হ্যালো রিডার্স, এটি অন্য সকল সিকিউরিটি সিস্টেমের মত হোম সিকিউরিটি সিস্টেম তৈরির জন্য একটি নির্দেশযোগ্য। এই সিস্টেমে উন্নত বৈশিষ্ট্য আছে ট্র্যাপ এবং প্যানিক মোড সংযোগের মাধ্যমে ভিকটিমের বাড়ির মালিক, প্রতিবেশী এবং থানার নেটওয়ার্কের মাধ্যমে।