PDA

View Full Version : Windows Messages Subclassing



CodeMasterX
جمعه 11 خرداد 1386, 17:42 عصر
سلام و خسته نباشید به همه دوستان

کسی میتونه توضیح کامل و فنی از ساختار Windows Messaging بنویسه یا مقاله ای برامون بذاره ؟

CodeMasterX
دوشنبه 28 خرداد 1386, 02:33 صبح
کسی در مورد این سیستم هیچ مطلبی نداره ؟!

www2006
دوشنبه 28 خرداد 1386, 16:40 عصر
کسی در مورد این سیستم هیچ مطلبی نداره ؟!

یک Message در واقع یک مقدار Integer است ... ویندوز از Message ها برای برقراری ارتباط بین پنجره هاش استفاده میکنه در پائین ترین سطح ممکن ( یعنی با استفاده از یک Int )
مثلاً اگه شما بخوای که یک پنجره یا کنترل ( که خود نوعی پنجره است ) ، کار خاصی رو انجام بده ، باید بهش یک Message ارسال کنید .. به همین ترتیب اگر یک پنجره بخواد که شما کار خاصی رو انجام بدید باید یک Message به شما بفرسته ... اگر یک Event اتفاق بیفته ( مثل فشرده شدن یک دکمه کیبورد ) ، Message هایی از طرف سیستم برای پنجره های موجود در سیستم ارسال می شود و اگر شما هم یکی از آن پنجره ها باشید ، باید آن Message را به گونه ی مناسبی هندل کنید ...

هر Message در ویندوز دو پارامتر اصلی داره : wParam و lParam که اساسا ً اولی 16 بیتی است و دومی 32 بیتی .. ولی در Win32 هر دو 32 بیتی هستند .. الزامی وجود نداره که هر Message از هر دوی این پارامترها استفاده کنه بعضی ها مثل WM_CLOSE از هیچکدام استفاده نمیکنند ولی بعضیها مثل WM_COMMAND از هر دوتاش استفاده میکنه که در اینجا wParam خودش شامل دو مقداره : یکی پیام ( در دو بایت با ارزشتر ) و دیگری آی دی مربوط به کنترل یا منویی که پیام را فرستاده است ( که در دو بایت کم ارزشتر پارامتر wParam قرار میگیره ) و پارامتر lParam هم شامل هندل ( HWND ) کنترلیست که پیام را ارسال کرده و یا مقدار NULL اگر این پیام از طرف پنجره ای ارسال نشده باشد ...

برای ارسال یک پیام در ویندوز میتوان از دو تابع PostMessage و SendMessage استفاده کرد ( که البته تفاوت هایی با هم دارند که به صف پیامها مربوط میشه )

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

------
خیلی سرپاییه ، میدونم ... ولی الآن کاملتر از این نمیتونم بنویسم
..
راستش چند وقت پیش میخواستم مقاله ای در باره کار با توابع API ویندوز بنویسم که همه این موارد رو پوشش میداد ( البته با مثال ) ، منتها بنا به دلایلی میسر نشد ... ولی در آینده ای نزدیک حتما این کارو میکنم

CodeMasterX
دوشنبه 28 خرداد 1386, 18:25 عصر
آقا ممنون، خوب بود.
من بیشتر دنبال یه مدل گرافیکی از آرشیتکت و معماری این سیستم ویندوز هستم.اگر منبعی سراغ دارید ممنون میشم.

www2006
سه شنبه 12 تیر 1386, 15:31 عصر
من بیشتر دنبال یه مدل گرافیکی از آرشیتکت و معماری این سیستم ویندوز هست

http://www.barnamenevis.org/forum/attachment.php?attachmentid=9548&stc=1&d=1183465789

البته معماری کل سیستم نیست .. ولی یه مدل گرافیکی که هست ..:چشمک:


در ضمن :

ولی در آینده ای نزدیک حتما این کارو میکنم
اون مقاله رو هم شروع کردم .. اینم لینکش :
http://www.barnamenevis.org/forum/showthread.php?p=361625#post361625