مواظب باشید!

برنامه نویسی رخدادگرا یکی از الگوهای برنامه نویسی است که جریان برنامه را از طریق رخدادها (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
امیربهاالدین سبط الشیخ


چه نکاتی در موفقیت یک گروه وب نقش دارند؟

... - طراحی به هم پیوستن (concrete design): قبل از این که abstract design بتواند یک رابط کاربر کامل را ارائه نماید، می بایست جزئیات مشخص تری از اینترفیس ها، نحوه به کارگیری امکانات و حرکت بین آنها، طراحی اطلاعات و ویژوال، مشخص گردد ...

منبع : اخبار فناوری اطلاعات    تاریخ : 19   دی   1388   شاخه : وب   


برنامه نویس جایزالخطاست!

... از آنجا که برنامه نویسان ویژوال استودیوی زیادی در داخل کشورمان داریم و بیشتر برنامه نویسان قدرت این محیط را به خوبی درک کرده اند، سراغ یکی از ابزارهای دیباگ ویژوال استودیو می رویم ... visual studio debugger این برنامه به همراه تمامی نسخه های ویژوال استودیو منتشر شده است و امکانات زیادی دارد که می توان از میان آن ها به موارد زیر اشاره کرد:1- یکسان کردن سورس و سمبل کدها به طور کامل2- اضافه شدن به پردازش های در حال اجرای روی سیستم برای اشکال زدایی (از این روش به منظور اشکال زدایی سرویس های ویندوزی نوشته شده در ویژوال استودیو استفاده می شود ... حال که با برخی از ویژگی های دیباگر ویژوال استودیو آشنا شدیم، نحوه استفاده از آن را در محیط ویژوال استودیو با هم مرور خواهیم کرد: در بخش منوها، با انتخاب گزینه debug، می توانید برنامه خود را در مود اشکال زدا یا بدون اشکال زدا اجرا کنید ...

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


ویژوال استودیو 10 برای ویندوز آزور برنامه می نویسد

آنلاین- همشهری آنلاین:شرکت مایکروسافت در کنفرانس برنامه نویسان حرفه ای امسال تمرکز خود را بر روی پردازش ابری و چگونگی برنامه نویسی برای این سیستم معطوف کرده استبه گزارش پی سی مگزین، باب ماگلیا، مدیر سرور مایکروسافت در این مراسم نسخه شماره ده نرم افزار برنامه نویسی visual studio را معرفی کرد. در این نسخه قابلیت جدیدی ایجاد شده است که به برنامه نویسان اجازه نوشتن و انتشار کد در سیستم ویندوز آزور را می دهد. ...

منبع : همشهری آنلاین    تاریخ : 1   آذر   1388   شاخه : برنامه نویسی   


پی دی سی در راه است

... از همه مهم تر، چیزی که برنامه نویسان ویندوزی منتظر آن هستند، ویژوال استودیو دات 2010 است که با مدل های جدید برنامه نویسی و امکانات جدیدی از جمله اسکریپت نویسی دینامیک و xaml همواره از داغ ترین بخش های این کنفرانس است ...

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


ارائه دومین نسخه بتای «ویژوال استودیو»

... ارائه دومین نسخه بتای «ویژوال استودیو» مایکروسافت دومین نسخه بتای نرم افزار visual studio 2010 و net framework 4 را آماده کرده و آن ها را برای بارگذاری در دسترس تعدادی از کاربران برگزیده خود قرار داده است ...

منبع : روزنامه خراسان    تاریخ : 3   آبان   1388   شاخه : برنامه نویسی   


گونه شناسی ویژوال استودیو

... بسیاری از برنامه نویسان هیچ گاه از نسخه express ویژوال استودیو استفاده نمی کنند، در صورتی که اغلب شان تفاوت های میان نسخه های استاندارد، حرفه ای و اکسپرس ویژوال استودیو را نمی دانند و صرفا به خاطر این که آن یکی حجم بیشتری دارد آن را انتخاب می کنند ...

منبع : بازیاب    تاریخ : 3   مهر   1388   شاخه : برنامه نویسی   


تجربه برنامه نویسی موازی ساده

... 4- مایکروسافت ویژوال استودیو نگارش 2005 یا 2008 یا یکی از نسخه های مشابه مایکروسافت ویژوال c++ اکسپرس ...

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


ساده تر از ساده، سریع تر از سریع

... مایکروسافت ویژوال استودیو، بدون شک بزرگ ترین، ساده ترین و در عین حال، مفیدترین محیط تولید کد ویژوال است ... این ماکرو در ویژوال استودیو 2005 اجرا می شود و گفته می شود حتی نسخه های 2003 هم می توانند آن را اجرا کنند ... dpack، یک مجموعه رایگان از ابزارهای ویژوال استودی 2003 و 2005 است که بهره وری های توسعه دهندگان را افزایش می دهد ... blogmycode، برنامه نویسان بلاگ نویس به هوش، این افزونه این امکان را می دهد که کدهای خود را از داخل ویژوال استودیو در وبلاگ قرار دهیم، این کار با یک کلیک ساده انجام می پذیرد، کافیست کد موردنظر را انتخاب کرده، سپس با کلیک راست گزینه blog this را انتخاب نمایید ... oracle developer tools for vs، ابزاری برای توسعه دهندگان اوراکل در محیط ویژوال استودیو است ... net، این افزونه اجرای ساده آزمون های واحد را با یک کلیک در هر جایی از solutionهای ویژوال استودیو را امکان پذیر کرده است ...

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


ویروسی که folder option را حذف می کند.

... exe خیلی حرفه ای تر نوشته شده است و ظاهرا با ویژوال بیسیک 6 ایجاد شده است ...

منبع : شبکه فن آوری اطلاعات ایران    تاریخ : 7   تیر   1388   شاخه : امنیت   

صفحه 1
2 3 4
امروز 2 فروردین ماه 1389

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

Get Adobe Flash player