مواظب باشید!

برنامه نویسی رخدادگرا یکی از الگوهای برنامه نویسی است که جریان برنامه را از طریق رخدادها (event) کنترل می کند. این رخدادها می توانند از سمت دستگاه های ورودی مثل ماوس و کیبورد صادر شوند یا از طریق پیغام های صادر شده یک نخ یا فرآیند باشند. در این مقاله قصد داریم در مورد رخدادها و کنترل آنها در سیستم عامل ویندوز صحبت کنیم.برای روشن تر شدن موضوع بگذارید یک مثال بزنیم: یک برنامه word را باز می کنید و شروع به تایپ می کنید. مطالب تایپ شده همان لحظه نمایش داده می شوند. این عمل چطور اتفاق می افتد؟ وقتی شما کلیدی از صفحه کلید را فشار دهید، از طرف کیبورد یک وقفه صادر می شود که به سیستم عامل می فهماند که فلان کلید زده شده است. سیستم عامل با یک مکانیزم درونی پیغامی به نام wm_keydown را در صف پیغام هاقرار می دهد. حال برنامه ورد این پیغام را دریافت کرده و مقدار کلید زده شده را در صفحه نمایش چاپ می کند. خوب، برنامه ورد این کار را چگونه انجام می دهد؟ وقتی شما یک برنامه ویندوزی می نویسید به یک فراخواننده (callback) برخورد می کنید که وقتی پیغامی از طرف سیستم عامل صادر شد، توسط این تابع هندل می شود و عملیات مورد نظر انجام می شود. پس قبل از این که بحث را دنبال کنیم، بگذارید کمی در مورد مفهوم فراخواننده صحبت کنیم: فرض کنید شما یک برنامه نوشته اید که قصد دارد یک سری داده را مرتب کند و می خواهید در هر مرحله به یک روش آنها را مرتب کنید. یک راه استفاده از تابع های مختلف برای مرتب کردن آن ها است. این روش ساده و درست است، اما فرض کنید شما کد خود را در یک کتابخانه قرار داده اید و برنامه نویس دیگری که قرار است از کتابخانه شما استفاده کند، نمی خواهد از متدهای مرتب سازی شما استفاده کند. در این جا کتابخانه شما در انجام این عمل ناتوان است ، خب چه کار کنیم که دیگر برنامه نویسان بتوانند برای مرتب سازی از روش های دلخواه خودشان استفاده کنند؟ برای این کار شما نیاز به تعریف یک اشاره گر به تابع (pointer to function) دارید. برنامه نویس های دیگر با مقداردهی آن می توانند روش مرتب سازی خود را استفاده کنند برای تعریف اشاره گر به تابع در c++ به روش زیر عمل می کنیم: مقدار returntype نوع داده برگشتی را مشخص می کند. callbackname نام فراخواننده است و مقدارهای 1param ¢ 2param نشان دهنده متغییرهای ورودی اند. وقتی شما یک تابع را به یک فراخواننده می دهید، باید الگوی تابع مطابق با الگوی فراخواننده باشد. مانند کد زیر: همان طور که مشاهده می کنید تابع callback از الگوی fp تبعیت می کند یعنی یک int را به عنوان ورودی و یک double را به عنوان خروجی قبول می کند. بسیار خب حال که با فراخواننده آشنا شدیم، برویم سراغ اصل موضوع که گرفتن مقدار پیغام صادر شده توسط سیستم عامل است. شما به یک شیء از کلاس wndclass (این کلاس نشان دهنده یک پنجره است) برای کنترل کردن پیغام های سیستم عامل نیاز دارید. فیلد lpfnwndproc را از کلاس wndclass مقداردهی کنید این فیلد یک اشاره گر به تابع است و از این الگو تبعیت می کند: برای تعریف مقادیر ورودی و خروجی به لینک پاورقی رجوع کنید. به طور خلاصه hwnd یک عدد صحیح است که کنترل کننده پنجره یا یک کنترل را در خود نگهداری می کند که پیغام برای آن صادر شده است. با مقدار hwnd می توانیم تشخیص دهیم که پیغام برای کدام کنترل صادر شده است. حال باید مقدار پیغام را بازیابی کنیم برای این کار با توجه به پیغام صادر شده مقدار lparam یا wparam را بازیابی می کنیم برای مثال wm_keydown شما با بازیابی lparam می توانید تشخیص دهید که کدام کلید فشار داده شده است . دیدید که کار سختی را برای هندل کردن پیغام ها و نمایش مقدار آن در صفحه نمایش داریم. این مشکل در زبان های ویژوال (زبان هایی که قابلیت ساخت gui رابط کاربری را دارند) معمولا وجود ندارد و اشیای موجود در این زبان ها به صورت داخلی تمام کارها را انجام می دهند. به طور مثال شما می توانید با قرار دادن یک باکس متنی، مقدار وارد شده توسط صفحه کلید را نمایش دهید. ولی خب ممکن است بخواهید که کاربر در تکست باکس فقط عدد وارد کند. فرض کنید که این کار را با زبان های مثل c قرار باشد انجام دهیم. خب باید شما مقدار wm_keydown را بازیابی کنید و بعد آن را اعتبارسنجی کنید. در زبان های ویژوال با مقداردهی رخداد مربوط به keydown ، می توانید مقدار کلید زده شده را بررسی کنید. این رخداد در واقع یک نماینده است و نماینده خود یک اشاره گر به تابع است و رخداد یک شیء از یک مقدار پیش فرض دارند که اگر رخداد توسط برنامه نویس مقداردهی نشد مقدار پیش فرض آنها فراخوانی می شود و کاربر می تواند آنرا مقداردهی کند و از آن استفاده کند. یا این که با ارث بری و بازنویسی متد مربوط به کنترل بدون مقداردهی رخداد متد خود را اجرا کند و یک کنترل سفارشی درست کند. مثلا باکس متنی که فقط عدد را به عنوان ورودی قبول کند. مرجع: http://msdn.com
امیربهاالدین سبط الشیخ


حمله جابز به فلش

... گفتنی است پیش از این که فایل های فلش به عنوان بستر قابل اعتماد انتقاد ویدئو در سطح اینترنت محبوب شوند، بسیاری از برنامه نویسان از فلش برای توسعه نرم افزار تحت وب استفاده می کردند و از این رو، کنترل روی آیتم های این نرم افزارها و جمع آوری اطلاعات مرتبط با تجربه کاربر غیرممکن خواهد شد ...

منبع : جام جم آنلاین    تاریخ : 9   اسفند   1388   شاخه : اشخاص   


محصول جدید نوکیا و اینتل برای پردازش موبایلی

... «می گو» نرم افزاری متن باز مبتنی بر لینوکس است و برنامه نویسان قادر خواهند بود برنامه های کاربردی مختلف را برای این پلت فرم طراحی کنند ...

منبع : جام جم آنلاین    تاریخ : 9   اسفند   1388   شاخه : موبایل   


اپل به شایعات پایان داد

... برنامه خیابان های گوگل، آیتیونز، آیپاد و سافاری به طور پیش فرض در این تبلت نصب هستند و می توان تمام نرم افزارهای آیفون موجود را به سادگی در این تبلت نصب کرد ... اپل از هم اکنون و پیش از انتشار این تبلت های 500دلاری، پکیج های برنامه نویسی لازم برای توسعه نرم افزارهای آیپد را در اختیار برنامه نویسان قرار داده است ...

منبع : جام جم آنلاین    تاریخ : 18   بهمن   1388   شاخه : شرکت ها   


پلتفرم سیمبیان از امروز متن باز می شود

... آزاد سازی متن سیستم عامل symbian به این معناست که از این پس همه کاربران و توسعه گران برنامه های قابل حمل قادر خواهند بود تا به متن (کد) اصلی این پلتفرم دسترسی داشته باشند و از امکانات آن بطور رایگان بهره ببرند ... اما سیمبیان بطور کامل کد باز ارائه خواهد شد که می تواند تجربه ای بهتر را برای برنامه نویسان به ارمغان آورد ...

منبع : وین بتا    تاریخ : 16   بهمن   1388   شاخه : نرم افزار   


گنجینه تورآشپزی!

... سادگی و راحتی زبان برنامه نویسی جاوا و همچنین عمومیت آن در میان تمامی تلفن های همراه، باعث شده که روزبه روز بر تعداد این نرم افزارهای مبتنی بر جاوا افزوده شده و افراد بیشتری نسبت به نوشتن برنامه برای گوشی های موبایل توسط این زبان برنامه نویسی اقدام کنند ... برنامه نویسان ایرانی هم از این قاعده مستثنا نبوده و نرم افزارهای متنوعی با این سیستم ارائه داده اند ... امروز قصد داریم به تعدادی از این برنامه ها بپردازیم ... شاید در ظاهر، این برنامه ها کم حجم و یا کم کاربرد به نظر برسند، اما در عمل در بخش هایی از زندگی ما مورد استفاده قرار می گیرند ... کافیست به منوی اصلی برنامه رفته و قسمت فهرست موضوعات و سپس "آشپزی" را انتخاب کنید ... در قسمت تنظیمات نیز شما می توانید به تغییر نمای ظاهری برنامه پرداخته و یا اقدام به حذف تاریخچه مراجعات خود کنید تا فهرست 10آیتم آخر حذف شود ... همچنین می توانید با استفاده از انتخاب صفحه کلید مربوط به گوشی خود، عملکرد و استفاده از این برنامه را برای گوشی خود راحت تر کنید ... نرم افزار تور ایران همان طور که از اسم برنامه پیداست، این نرم افزار در پیدا کردن مکان های گردشگری کشورمان، شما را یاری می کند ... کلیه مکان های دیدنی آن شهر با توضیحات کافی برای شما شرح داده شده و آدرس هر کدام از آنها نیز در برنامه موجود است ...

منبع : جام جم آنلاین    تاریخ : 27   دی   1388   شاخه : برنامه نویسی   


آن وب که نکوست از ...

... هنوز چیزی از سال جدید میلادی نگذشته، برنامه نویسان و طراحان وب با ارائه مقالات و نظریه ها، در مورد شیوه و روند طراحی وب در سال 2010 و نوآوری هایی که باید در این سال انجام شود صحبت کرده اند ... این برنامه نویسان معتقدند با توجه به پتانسیل وب، باید هرچه سریع تر کارآمدی آن را بالا برد ... 3css برای شکل دادن به محتویات وب امکانات جدید و جالب توجهی در اختیار برنامه نویس قرار داده است ...

منبع : جام جم آنلاین    تاریخ : 27   دی   1388   شاخه : وب   


بازگشت توفانی

... برنامه نویسان نیز سیستم های اضافی و تعمیم داده شده را از رده خارج کردند و در جاهایی مثل پشتیبانی imap کارایی را افزایش دادند ... این مساله نشان می دهد که برنامه نویسان تاندربرد به خوبی از قدرت html در نرم افزارهای تحت سیستم عامل با خبر شده اند و می توانند بسیاری از محدودیت ها را با این روش از پیش بردارند ... کلید موفقیت تاندربرد استفاده از بهترین های دو جهان وب و نرم افزارهای سیستمی است و این نگارش قطعا روی برنامه نویسانی که برنامه های تحت ویندوزی می نویسند نیز تاثیر خواهد گذاشت ...

منبع : جام جم آنلاین    تاریخ : 20   دی   1388   شاخه : نرم افزار   


آنچه در دهه پیش دیده ایم

... در قسمت توسعه، mysql (پایگاه داده رابطه ای رایگان)، جای خود را در بین برنامه نویسان به خوبی باز کرد ...

منبع : جام جم آنلاین    تاریخ : 20   دی   1388   شاخه : وب   


پلتفرم ویدیویی boxee وارد مرحله بتا می شود

... بنابراین در این فاصله زمانی کاربران آزمایشگر و برنامه نویسان فرصت بیشتری خواهند داشت تا بهبودی های کارآمدتر و اصلاحات دقیق تری بر روی چهارچوب این نرم افزار ایجاد کنند ...

منبع : وین بتا    تاریخ : 18   دی   1388   شاخه : نرم افزار   

صفحه 1
2 3 4
امروز 29 اسفند ماه 1388

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player