 بسم اللہ الرحمن الرحیم آج ہم موڈیول 60 دیسکس کریں گے موڈیول 60 ہے console control handler example اس کے اندر ہم ایک ایک ایک ایک ایک سمپل پوگرام ہے اس ایک سمپل پوگرام کے اندر ہم ایک console handler بنائیں کے بڑا سمپل سے ہندلر ہے فسلی اس کے اندر main پوگرام کے اندر ایک loop ہوگا وہ loop کر رہا ہے اور ساتھ ایک bip کر رہا ہے بیب کرتا رہے گا اور loop کرتا رہے گا اس کا اور کوئی کام نہیں ہے اس کے لابعا اس نے کیا کیا اس کے لابعا وہ یہ کرے گا کہ console handler بنائے گا اور اس کو register کر دے گا windows کے ساتھ اور اب جب پوگرام loop کر رہا ہے تو just وہ ایک event کا ویٹ کر رہا ہے سے console event کا ویٹ کر رہا ہے اگر سے log off ہوتا ہے یا shutdown ہوتا ہے یا control c press ہوتا ہے یا console break press ہوتا ہے تو یہ ان تمام events کا وہ ویٹ کر رہا ہے اور handler کے اندر code ہے جو کہ event کو detect کرے گے اور اس کے according لی user کو message دے گی آئے اس پوگرام کو دیکھتے ہیں یہ پوگرام اس کے اندر آپ کو نظر آ رہا ہے یہ ایک prototype ہے just handler کا prototype ہے اس کی win api ہے اور return type اس کی اور یہاں بیچ میں control event نام رکھتی ہے جسے ہمیں یہ پتا لگے گا کہ کس طرح کا event کا کرو ہے جس کو کہ اس نے respond کرنا ہے کس طرح کا console event کا کرو ہے اب ہم اپنے main کو دیکھتے ہیں main بڑا simple ہے main کے اندر کچھ بھی نہیں آپ نے firstly set console control handler کا function use کیا اور اس کو use کر کے آپ نے اپنا handler ہے اس کو windows کے ساتھ register کر دیا اگر آپ نے پتا دیئے کہ یہ والا handler invoke ہونا چاہئے جب بھی console کا کوئی بھی event کرو اور اگر کسی بیجا سے آپ کا نہیں یہ ہوتا register function تو کیا ہوگا error آئے گا اس کے اس میں یہ messager کسی بیجا سے کہ event کر نہیں ہو سکا سی طرح سے handler جو ہے وہ register نہیں ہو سکا once یہ handler کو register کرلتا ایک loop کے اندر انٹر ہو جاتا یہ ایک y loop ہے یہ y loop یہاں سے start ہو رہا ہے اور یہاں پہ ختم ہو رہا ہے اس loop کے اندر انٹر ہو دے گا یہاں پہ exit flag یہ ایک flag ہے previous slide کے اندر اگر آپ دیکھیں اس flag کی value جو تھی وہ false ہے ساتھ اس نے not use کیا ساتھ اس نے not use کیا not use ہونے سے not false value true ہو گی یہ اس loop کے اندر آگیا اب یہ loop کے اندر رے گا جب تک exit flag کی value true نہیں ہو جاتی exit flag کی value true ہو گی not کر کے false ہو جائی گی یہ loop سے بہا رہا جا اس loop کے اندر کچھ بھی نہیں کر رہے سمپلی sleep کر رہے sleep کرنے سا یہ جو thread ہے وہ block ہو جائے گی five seconds کے لیے this thread block رہے گی اور اس کے بعد سمپلی کیا کر رہے beep کر رہے اور کتنی duration کے لیے beep آئے گی کوئی تقریبا quarter of a second کے لیے beep آئے گی اور پھر سے sleep کرے گا پھر beep آئے گے پھر سے sleep کرے گا پھر beep آئے گی all the time یہ سی loop کے اندر اور اس loop کے اندر کیا کر رہا اس loop کے اندر یہ سمپلی جو ہمارے console کے control event سے ان کا wait کر رہا اب ہم اپنے handler بچلتے یہ ہمارا handler ہے handler کیا کر رہا اس control event کو دیکھ رہا اس control event کی value کو چیک کرتا اس control event کی اس میں value چیک کی اگر یہ control see event کی equivalent ہے یعنی کہ اگر کسی user نے keyboard سے control اور see پرس کیا تو اس کے اس کے اندر یہ والی code execute ہوگی اس code کے اندر سمپلی وہ ایک message دے رہا اور exit flag کو true کر رہا اور sleep کر رہا for 4000 4 seconds کے لیے تقریبا sleep کر رہا اور اس کے بعد یہ ایک اور message دے گا leaving hander in one second or less اور پھر return کر لیے تو اس کا مطلب ہے کہ یہاں پہ وہ exit flag کو true کر دے گا exit flag کے true ہونے سے سب سے important چیز کے exit flag کا true ہنا exit flag جب true ہو جائے گا تو ہمارا وہ main کا loop تھا یہ والا ہمارا main کا loop ہے اس loop کے اندر یہ control variable یہ true ہو جائے گا not کر کے false اور یہ loop terminated ہو جائے گا ہمارا terminated ہو جائے گا دوسرا case کیا دوسرا case یہاں کہ اگر اس نے close کیا یعنی کہ window کے پر آپ دیکھتے ہیں ایک وہ close والا اوپر box بنا ہوتا اس کے پر آپ کلک کرتے ہیں تو window close ہو جاتے ہیں تو یہ close کا event جو ہے receive ہو گا hander تو اگر close کیا ہے تو اس صورت میں یہ close کے آپ کو ایک message دے رہا ہے اور exit flag کو true کر رہا ہے exit flag کو again true کرنے سے کیا ہوگا کہ ہمارا جو وہ main loop ہے وہ کتم ہو جائے گا program close ہو جائے گا اور event ہے یہ بتا رہا ہے کہ کونسا event یہاں پہ اس کو receive ہوا exit flag کو اس نے true کر دیا اور یہاں پہ یہ return کرنے سے program یہ تو return کر جائے گا اور اس کے exit flag کے true ہنے سے جو ہمارا main loop ہے وہ terminate ہو جائے گا اور program کی execution ختم ہو جائے گا یا کوئی آتکنے کی ضرورت ہے کہ hander ایک different thread کے اندر چل رہا ہے اور جو ہمارا main کا loop ہے وہ ایک different thread کے اندر چل رہا ہے تو یہ اگر return کر رہا ہے اس کا return ہونے سے جو alag independent loop ہے وہ ختم ہو رہا ہے اور exit flag کے false ہونے سے جو ہمارا main program کا thread ہے وہ terminate ہو اور last case ہے کہ جی default یہ ہم نے دو evens تھے دو evens کے لیے ہم نے cases بنائے تھے اس کے لیوہاں تین اور evens ہیں جس case میں یہ handler call ہو گا تو اس case میں بھی اگر handler call ہوتا تو یہ exactly same کام کرہا ہے true کرہا ہے is it flag کو اور ایک user کو message دے رہا ہے اور return return کرنے سے یہ handler کا function جو ہے وہ بھی return کر جائے گا اور exit flag کے true ہونے سے main کا جو loop ہے وہ بھی terminate ہو اس طرح سے جو main program میں وہ end ہوئی