Message loop in Microsoft Windows
বার্তা লুপ প্রতিটি প্রোগ্রামে কোডের একটি বাধ্যতামূলক বিভাগ যা মাইক্রোসফ্ট উইন্ডোজের অধীনে একটি গ্রাফিকাল ইউজার ইন্টারফেস ব্যবহার করে। যে উইন্ডোজ প্রোগ্রামগুলির একটি জিইউআই রয়েছে সেগুলি ইভেন্ট-চালিত। উইন্ডোজ প্রতিটি থ্রেডের জন্য একটি পৃথক বার্তা সারি বজায় রাখে যা একটি উইন্ডো তৈরি করেছে। সাধারণত শুধুমাত্র প্রথম থ্রেড উইন্ডো তৈরি করে। উইন্ডোজ সেই সারিতে বার্তা রাখে যখনই সেই থ্রেডের উইন্ডোতে মাউস ক্রিয়াকলাপ ঘটে, যখনই কীবোর্ড ক্রিয়াকলাপ ঘটে যখন সেই উইন্ডোটিতে ফোকাস থাকে এবং অন্যান্য সময়ে। একটি প্রক্রিয়া তার নিজস্ব সারিতে বার্তা যোগ করতে পারে। ব্যবহারকারীর ইনপুট গ্রহণ করতে এবং অন্যান্য কারণে, একটি উইন্ডো সহ প্রতিটি থ্রেডকে ক্রমাগত তার সারি থেকে বার্তা পুনরুদ্ধার করতে হবে এবং সেগুলির উপর কাজ করতে হবে। একজন প্রোগ্রামার গেটমেসেজকে কল করে একটি লুপ লিখে প্রক্রিয়াটি সম্পন্ন করেন (যা একটি বার্তার জন্য ব্লক করে এবং এটি পুনরুদ্ধার করে), এবং তারপর ডিসপ্যাচমেসেজকে কল করেন (যা বার্তাটি প্রেরণ করে), এবং অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করেন। এটি হল বার্তার লুপ। প্রধান প্রোগ্রামে সাধারণত একটি বার্তা লুপ থাকে, যা মূল থ্রেডে চলে এবং প্রতিটি তৈরি মোডাল ডায়ালগে অতিরিক্ত বার্তা লুপ থাকে। প্রক্রিয়াটির প্রতিটি উইন্ডোর জন্য বার্তা তার বার্তা সারির মধ্য দিয়ে যায় এবং তার বার্তা লুপ দ্বারা পরিচালিত হয়। একটি বার্তা লুপ হল এক ধরনের ইভেন্ট লুপ। একটি মৌলিক বার্তা লুপ নিম্নরূপ প্রদর্শিত হয়ঃ ইন্ট উইনাপি উইনমেইন (ইনস্ট্যান্স ইনস্ট্যান্স, ইনস্ট্যান্স এইচপ্রেভ ইনস্ট্যান্স, এল. পি. এস. টি. আর এল. পি. সি. এম. ডি. লাইন, ইন্ট এন. সি. এম. ডি. শো) {এম. এস. জি এম. এস. জি; বুল ব্র্যাট; যেখানে (1) {ব্র্যাট = গেটমেসেজ (& এম. এস. জি, এন. ইউ. এল. এল, 0,0); যদি (ব্র্যাট = =-1)// যদি ব্র্যাট-1 হয়, গেটমেসেজ ব্যর্থ হয়েছে। {// ত্রুটিটি পরিচালনা করুন বা লগ করুন; সম্ভবত প্রস্থান করুন। //.} অন্যথায় যদি (bRet! = 0)// bRet যদি 0 বা-1 না হয়, তবে বার্তাটি অবশ্যই প্রক্রিয়া করা উচিত। {ট্রান্সলেটমেসেজ (& এম. এস. জি); ডিসপ্যাচমেসেজ (& এম. এস. জি);} অন্যথায়// যদি bRet 0 হয়, বার্তা লুপটি প্রস্থান করা উচিত। ইভেন্ট লুপের জন্য প্রতিটি বার্তায় ট্রান্সলেটমেসেজ কল করা প্রচলিত যা ভার্চুয়াল কীস্ট্রোককে স্ট্রিংয়ে অনুবাদ করতে পারে। প্রযুক্তিগতভাবে ট্রান্সলেটমেসেজ কল করার প্রয়োজন নেই, তবে এটি কল না করা হলে সমস্যা হতে পারে। বার্তা লুপে অবশ্যই ডিসপ্যাচমেসেজ কল করতে হবে। বার্তা লুপটি যে বার্তাগুলি পরিচালনা করে তার উপর সরাসরি কাজ করে না। এটি ডিসপ্যাচমেসেজ-এ কল করে তাদের প্রেরণ করে, যা বার্তাটি যে উইন্ডোতে সম্বোধন করা হয়েছিল তার "উইন্ডো পদ্ধতি"-তে বার্তাটি স্থানান্তর করে। ("উইণ্ডো পদ্ধতি" একটি কলব্যাক পদ্ধতি, যা নিবন্ধিত হওয়ার সময় উইণ্ডো ক্লাসের সাথে যুক্ত হয়েছিল।) (একাধিক উইন্ডো একই উইন্ডো পদ্ধতি ব্যবহার করতে পারে।) কোড সরাসরি একটি উইণ্ডো পদ্ধতিতে বার্তা পাঠাতে পারে। এগুলিকে ননকিউয়েড বার্তা বলা হয়। একটি কঠোর বার্তা লুপ একমাত্র বিকল্প নয়। প্রোগ্রামের অন্য কোথাও কোড বার্তা গ্রহণ এবং প্রেরণ করতে পারে। পিকমেসেজ হল একটি নন-ব্লকিং কল যা অবিলম্বে ফিরে আসে, যদি কোনও বার্তা অপেক্ষা করে থাকে বা কেউ অপেক্ষা না করে থাকে তবে কোনও বার্তা নেই। একটি বার্তা সারিতে না থাকা পর্যন্ত ওয়েটমেসেজ একটি থ্রেডকে ঘুমাতে দেয়। আধুনিক গ্রাফিকাল ইন্টারফেস কাঠামো, যেমন উইন্ডোজ ফর্ম, উইন্ডোজ প্রেজেন্টেশন ফাউন্ডেশন, এম. এফ. সি, ডেলফি, কিউ. টি এবং অন্যান্যদের উইন্ডোজ বার্তা লুপ কোড করার জন্য অ্যাপ্লিকেশনগুলির প্রয়োজন হয় না, কারণ তারা স্বয়ংক্রিয়ভাবে কী প্রেস এবং মাউস ক্লিকের মতো ইভেন্টগুলিকে কাঠামোর মধ্যে সংজ্ঞায়িত হিসাবে তাদের উপযুক্ত হ্যান্ডলারগুলিতে রুট করে। যাইহোক, প্রতিটি কাঠামো কোথাও একটি বার্তা লুপ প্রয়োগ করে এবং আরও সরাসরি নিয়ন্ত্রণের প্রয়োজন হলে বার্তা লুপটি সাধারণত অ্যাক্সেস বা প্রতিস্থাপন করা যেতে পারে। এক্স উইন্ডো সিস্টেমে ইভেন্ট লুপের জন্য এক্সলিব দেখুন এক্সটারনাল লিঙ্কগুলি এমএফসি বার্তা এবং কমান্ড রাউটিংয়ের গোলকধাঁধা দিয়ে ঘোরানো (এমএসজে, জুলাই 1995) একটি কী 'স ওডিসিঃ ভিসিএল প্ল্যাটফর্মের মাধ্যমে একটি কীস্ট্রোক বার্তার পথ এসডিকেঃ বার্তা এবং বার্তা সারি প্ল্যাটফর্ম এসডিকেঃ উইন্ডোজ এপিআইঃ বার্তা এবং বার্তা সারি ব্যবহার করে বার্তা লুপ প্রবেশ করা (এমএসডিএন) গেটমেসেজ ফাংশন পিকমেসেজ ফাংশন ইভেন্ট (কম্পিউটিং) মাইক্রোসফ্ট অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস