أرجوكم يا جماعة .
الدالة مهمة جدا .
أرجوكم يا جماعة .
الدالة مهمة جدا .
أرجوا أنك توضح ويش تقصد بالدالة إكتب التفاصيل كاملة
ومشكـــــــــور
مشكور اخي باتيستوتا على المتابعة .
هذي الدالة من اشهر دوال ال API التابعة للفيجوال بيسك .
SendMessage
ارجو اني اكون وضحت .
عبدالرحمن
السلام عليكم.
التابع SendMessage يقوم بارسال رسالة مباشرة إلى نافذة محددة حيث يتم استدعاء ال Windows Procedure و لا يعود التحكم للتابع المستدعي حتى يتم تنفيذ الرسالة , و لا يتم وضع هذه الرسالة ضمن رتل الرسائل و إنما يتم تنفيذها مباشرة ( لا تنتظر في الدور لأن معها واسطة:) ).
وهذا التابع له الشكل التالي :
LRESULT SendMessage( HWND hWnd, // handle to destination window UINT Msg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter );
البارامتر الاول هو مقبض Handle النافذة التي ستستلم الرسالة.
البارامتر الثاني هو الرسالة التي سيتم ارسالها مثل : WM_SIZE
البارامترين الثالث و الرابع يحددان معلومات إضافية يمكن ارسالها مع كل رسالة و طبيعة هذه المعلومات تختلف مع كل رسالة .
مع التحيات.
ولكن لو ما عليك تعب انك تحط مثال وتشرحه .
وتكسب فينا اجر باذن الله .
لان الدالة مهمة جدا جدا جدا . وانا حتى الان لم استوعبها جيدا
(قبل الشرح )
فارجوك ( مثال مع شرحه )
والله يعطيك العافية والمثوبة .
اخوك عبدالرحمن
السلام عليكم ،،،
بالنسبة للدالة SendMessage تستخدم بكثره في الفيجوال بيسك وفي الفيجوال سي خاصة عند استخدام win32 sdk اما عند استخدام mfc فانه بعض الرسائل يوجد لها أجراء للكائن يقوم بها وبعضا تتحتاج إلى إرسال رسالة، عموما في الفيجوال بيسك استخدامها على حد علمي فانا لست خبيرا في الفيجوال بيسك كالتالي :
لكل اداة في ويندوز ( مو بس في الفيجوال بيسك ) او نافذة يوجد هناك قيمة تسمى مقود المعالجة ( ترجمتها من راسي لكن تسمى في ويندوز باسم HANDLE ) و هو رقم 32 بت ... عموما ... هي في الفيجوال بيسك خاصية للقراءة فقط و لا تستطيع تغييرها اسمها hwnd .. هذه الخاصية هي قيمة مقود المعالجة للاداة او النافذة ... و غالبا ستحتاج لهذه القيمة مع win api لانها تتطلب هذا القيمة بكثرة في وظائفها المتعدده ،، عموما ساشرح لك كيفية استخدام هذا الرقم مع دالة SendMessage و هذا الشي اللي انت طلبته ،
Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( ByVal hwnd As Long, _ ByVal wMsg as Long, _ ByVal wParam As Long, _ lParam As Any) As Long
[*]hwnd : هذا هو رقم مقودالمعالجة، واللي تحصل عليه من خاصية الاداة أو النافذة hwnd .
[*]uMsg : الرسالة التي سترسلها ... وهي تحدد بالضبط العملية التي تريد تنفيذها و سأعطيك قائمة بالاسفل بالارسائل التي اعرفها و اذا اردت المزيد فخذها من MSDN .
[*]wParam : قيمة هذا المتغير تعتمد على الرسالة التي سترسلها ... و هو عبارة عن معلومة ترسلها مع الرسالة .
و الكود التالي يوضح لك الطريقة :
[*]lParam : نفس عمل اللي فوق .
لا حظ انه في بعض الاحيان تستخدم wparam و احيان تستخدم lparam في نقل البيانات، و احيان الاثنين .. حسب نوع الرسالة المرسلة .
و اللحين هذا بعض الكود لتنفيذ العملية ، مع النافذة (form) أو أداة و هو يغير عنوان النافذة :
SendMessage(form.hwnd, WM_SETTEXT, 0, yourmessage)
نلاحظ ان wparam ما كان له دور .. اما lparam فهو اللي فيه العنوان الجديد .
عموما باجرب بعض الكودات مع الفيجوال بيسك و اعطيك خبر، بس اصبر علي شوي لان استخدامي للدالة كان في الفيجوال سي و بحياتي ما استخدمته في الفيجوال بيسك .. ولا ودي اعطيك شي غلط .
تقبل تحياتي ،،،
شكركم على هذا الرد الوافي . ولكن ينقصه مثال .
كملوا جميلكم واعطونا مثال .
الله يعطيكم العافية .
يا جماعة ابغى مثال واحد بس .
جزاكم الله خير .
بسم الله الرحمن الرحيم
جزاكم الله خير
بس عجلوا علينا بالمثال
هذا مثال ياشباب
'This project needs a ListBox, named List1 and a TextBox, named Text1
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const LB_FINDSTRING = &H18F
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Add some items to the listbox
With List1
.AddItem "Computer"
.AddItem "Screen"
.AddItem "Modem"
.AddItem "Printer"
.AddItem "Scanner"
.AddItem "Sound Blaster"
.AddItem "Keyboard"
.AddItem "CD-Rom"
.AddItem "Mouse"
End With
End Sub
Private Sub Text1_Change()
'Retrieve the item's listindex
List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
End Sub
هذا الموضوع مغلق.