ورود

View Full Version : StatusBar



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
}