أخواني لو سمحتم عندي سؤال في التحويل بين المتغيرات:
أنا مثلاً عندي متغير من نوع HWND حصلت على قيمته من القيمة التي تعيدها الدالة
CreateWindow , وأريد أن أظهر قيمته في MessageBox بأن يظهر قيمته الحقيقية دون أن يحوله إلى رموز وكذلك int ، و ........
أخواني لو سمحتم عندي سؤال في التحويل بين المتغيرات:
أنا مثلاً عندي متغير من نوع HWND حصلت على قيمته من القيمة التي تعيدها الدالة
CreateWindow , وأريد أن أظهر قيمته في MessageBox بأن يظهر قيمته الحقيقية دون أن يحوله إلى رموز وكذلك int ، و ........
السلام عليكم,
نعلم أن معظم متغيرات الوندوز هي في الأصل متغيرات من نوع DWORD وأن مكروسوفت أعطتهم أنواعا مختلفة حتى لا تتخلط علينا الأمور وحتى نقلل من الأخطاء في البرمجة. فمثلا كما دكرت فإن HWND ليس هو أيضا إلا متغير من نوع DWORD .
ولكي نحول المتغيرات ما علينا سوى أن نقوم بما يسمى ب CAST ويعني أن نزيد أمام المتغير النوع الدي نريده.
وهنا سأعطي مثالا جوابا على دكرت. نريد مثلا أن نظهر HWND لنافدة ما في رسالة من نوع MessageBox فيمكن أن نقوم بما يلي :
نعتبر أن hwnd هو المتغير سنغيره إلى متغير DWORD dw وسنكتب ما يلي :
dw=(DWORD)hwnd
أو نكتب مثلا :
int ihw=(int)hwnd
سنحصل على نفس الشيء لأن int هو أيضا متغير من نوع 32 بت وهنا سنتعامل مع الرقم int كأنه رقم عادي ونعلم أن قيمته تدل على هاندل النافدة المعنية.
ولإظهار الرقم في النافدة يجب تحويله إلى STRING وهنا يمكن أن نستعمل الدالة wsprintf مثلا أو إدا كنت تستعمل كلاس CString أن تستعمل دالة Format لهدا الكلاس.
والعكس صحيح أيضا يمكن أن نحول الرقم إلى متغير HWND كما يلي :
hwnd=(HWND)i
إلى اللقاء.
ألف شكر أخوي والله يوفقك ويجعلها في موازين حسناتك..
بس ياريت أخوي إذا ما أكلف عليك تضع لي مثال يعرض قيمة متغير من نوع int في MessageBox أي يعرضها كما هي بالرقم دون أن يحولها إلى حروف.
وشكرا مرة ثانية.
تم تعديل هذه المشاركة بواسطة الكـتـكوت في 7 نوفمبر 2004 في 03:30
السلام عليكم,
هذا المثال سيطبع العدد 123456 في نافذة MessageBox . ويجب أن نعلم أن الأعداد تطبع كحروف.
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
int i=123456;
char cc[20];
wsprintf(cc,"%d",i);
MessageBox(0,cc,"TEST",0);
ExitProcess(0);
return 0;
}إلى اللقاء.
السلام عليكم,
هذا الكود يعمل في بيئة win32 Application ويمكن تشغيله أيضا في بيئة Console ولكن هنا يجب أن نغير السطر
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
بالسطر
int main()
إلى اللقاء.
ألف شكر لكم جميع أخواني على هذه المعلومات الرائعة
هذا الموضوع مغلق.