m_zi
یک شنبه 06 بهمن 1387, 11:51 صبح
سلام خسته نباشيد . من مي خوام از StatusBar استفاده كنم و دو تا Panel داشته باشم و در هر يك متني را بنوسيم ميشه كد ان را اينجا بگذاريد .
ممنون از راهنمايي شما
Nima_NF
یک شنبه 06 بهمن 1387, 14:04 عصر
1- یک ID در قسمت Table string برای pane مورد نظر بسازید (در resource view) مثلا با عنوان ID_INDICATOR_TEST و نوشته ای که می خواهید نمایش دهد را در فیلد جدول بنویسید.
2- اگر statusbar قبلا در برنامه شما وجود دارد که کدهای زیر را ویرایش کنید در غیر این صورت بنویسید:(ترتیب مهم است و اگر به سایر Pane ها احتیاج ندارید مانند CAPS یا NUM و .. آن ها را از ساختار زیر پاک کنید)
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_TEST,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
اگر می خواهید نوشته ها مدام تغییر کنند باید از ON_UPDATE_COMMAND_UI استفاده کنید و توسط SetText نوشته مورد نظر خود را وارد کنید.
1- کد زیر را در کلاس موجود در پنجره مورد نظر اضافه کنید (در .h) :
afx_msg void OnUpdateStatus(CCmdUI *pCmdUI);
و در فایل cpp تعریف زیر:
void CMainFrame::OnUpdateStatus(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
CString statusStr(L"This is a test for status bar");
pCmdUI->SetText( statusStr );
}
ضمنا در قسمت پیام ها در فایل cpp کد آن را اضافه کنید:
BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_TEST, OnUpdateStatus)
END_MESSAGE_MAP()
اگر پروژه ای را از ابتدا بدون status bar ساخته اید حتما کد زیر را باید در قسمت OnCreate برنامه بنویسید:
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.