السلام عليكم.
تجربة اليوم بسيطة شوي:)
وهي كيفية تغيير الخط في ال StatusBar و تغيير بعض خصائص ال Status bar.
و هذه لقطة من البرنامج:

و فكرة البرنامج بسيطة و تعتمد على نوعي المعطيات : LOGFONT و CFont فعندما نريد استعمال خط في أحد الأدوات يمكن تحقيق ذلك عن طريق التعليمات التالية:
LOGFONT m_lf; CFont m_font; memset(&m_lf , 0 , sizeof(LOGFONT) ) ; m_lf.lfHeight = 8 ; strcpy( m_lf.lfFaceName , "MS Sans Serif" ); m_font.CreateFontIndirect( &m_lf );
(طبعا في البرنامج جعلت المتحولات Members ل CMainFrame و لكن وضعتها في الشيفرة السابقة للتوضيح فقط)
فالتعليمة الاولى تحجز مكانا في الذاكرة للمتحول m_lf من نوع LOGFONT .
و التعليمة الثانية تحدد ارتفاع الخط بعدد النقاط Pixels.
و التعليمة الثالثة تحدد اسم الخط المراد استخدامه.
و التعليمة الرابعة تنشء الخط و تقوم بتحميله.
و بعدها يمكن استعمال هذا الخط في الأدوات ففي حالتنا كتبت :
m_wndStatusbar.SetFont(&m_font);
و الآن عند الضغط على الامر Change Font من القائمة Status BAr كتبت الشيفرة التالية:
CFontDialog dlg(&m_lf,CF_SCREENFONTS);
if (dlg.DoModal() == IDOK )
{
m_font.DeleteObject();
if (m_font.CreateFontIndirect( &m_lf ) )
{
m_wndStatusBar.SetFont(&m_font);
RecalcLayout();
}
}التعليمة الاولى تصرح عن متحول من CFontDialog و هذا ال Class هو واحد من مجموعة Classes موجودة ضمن MFC و هو يسهل عمليةادخال معلومات الخط و و جعل واجهة اختيار الخط مشتركة بين البرامج .
التعليمة الثانية تقوم باظهار Font Dialog حيث تستطيع اختيار اسم الخط و مؤثراته و حجمه.
التعليمة الثالثة تقوم بازالة معلومات الخط الموجودة حاليا ضمن m_font.
و بنفس الطريقة تم إنشاء و تحميل الخط الجديد.
التعليمة الأخيرة و هي مهمة و هي تطلب من الاطار Frame اعادة توضيع ال Control bars مثل ال Statusbar و Toolbar و ذلك حتى يتسنى لشريط الحالة أن يغير من ارتفاعه إذا كان حجم الخط الجديد كبير.
و بالنسبة لتغيير خصائص ال Status bar يتم ذلك عن طريق التعليمة:
m_wndStatusbar.SetPaneInfo( 0 , nID , SBPS_STRETCH|SBPS_NORMAL , cxWidth );
البارامتر الاول يحدد رقم المنطقة Pane ضمن ال Statusbar المطلوب تغيير خصائصها.
البارامتر الثاني يحدد معرف هذه المنطقة.
البارامتر الثالث يحدد الخصائص المراد تطبيقها على هذه المنطقة و طبعا يمكن الاختيار من ضمن مجموعة كبيرة من الخصائص.
البارامتر الرابع يحدد عرض هذه المنطقة.
شيفرة البرنامج موجودة على الوصلة:
http://arabteam.nicmatic.com/adel/StatusBarFont.zip
مع التحيات.

