How to apply menus (xp style) to dialog ?
Printed From: Codejock Forums
Category: Codejock Products
Forum Name: Toolkit Pro
Forum Description: Topics Related to Codejock Toolkit Pro
URL: http://forum.codejock.com/forum_posts.asp?TID=3272
Printed Date: 09 November 2025 at 12:59pm Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com
Topic: How to apply menus (xp style) to dialog ?
Posted By: jigarmehtamscit
Subject: How to apply menus (xp style) to dialog ?
Date Posted: 24 November 2005 at 12:05pm
Hi,
I want to apply office xp style menu to my dialog class.. So, how can i do that ? If i take code form the dialog, it gives error saying, GetCommandBars is not declared.. So, is there any sample of link from where i can find this.. ?
------------- Regards,
Jigar Mehta
|
Replies:
Posted By: jigarmehtamscit
Date Posted: 24 November 2005 at 12:56pm
Oops..
I got the sampel..
But another questiion is, I want to add a static text to the status bar.. Now, the value of the static text will be updated on runtime.. just like line number of the cursor or like the X and Y co-ordinate of the mouse.. So, how to add that to the status control ?? Any sample for that ? i saw the sample application statusbar but not found how to add the static text to status bar..
Thx
------------- Regards,
Jigar Mehta
|
Posted By: jigarmehtamscit
Date Posted: 24 November 2005 at 2:16pm
Oh.. again i was able to add teh static control to the statusbar.. but it comes on teh menu bar.. 
following is the code i wrote in initdialog function,
m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_STRETCH, 100);
int iIndex = m_wndStatusBar.GetPaneCount(); m_wndStatusBar.AddIndicator(IDC_STATIC1, iIndex);
int nIndex = m_wndStatusBar.CommandToIndex(IDC_STATIC1); ASSERT (nIndex != -1); m_wndStatusBar.SetPaneWidth(nIndex, 100); m_wndStatusBar.SetPaneStyle(nIndex, m_wndStatusBar.GetPaneStyle(nIndex) | SBPS_NOBORDERS); m_wndStatusBar.AddControl(&m_XPos, IDC_STATIC1, FALSE);
i took one static control made a control variable for that as m_XPos and it shows the static control on menu bar.. instaead of statusbar..
Please tell me what can be the problem.. I tried all teh things.. I debugged then found that PositionBars function called from addcontrol function gets some -18 value for my control as X value.. so, it calculates the value on its own and MoveWindow function moves my window to the menu bar as a result.
------------- Regards,
Jigar Mehta
|
Posted By: Oleg
Date Posted: 25 November 2005 at 2:45am
|
Why you need static text, if you can update text directly to status bar
m_wndStatusBar.SetPaneText(...) ?
------------- Oleg, Support Team CODEJOCK SOFTWARE SOLUTIONS
|
Posted By: jigarmehtamscit
Date Posted: 25 November 2005 at 12:15pm
Thanks,
It helped me.. but still I am adding static control to the status bar..
Because i took code from the sample application, there it was Indicator.. If I change anything in the default struct of the indicator, my program doesnt work properly..
Like if I change,
static UINT indicators[] = { ID_SEPARATOR,   ; // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, };
to something like this,
static UINT indicators[] = { ID_SEPARATOR,   ; // status line indicator ID_MY_TEXT, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, };
Program doesnt work properly so, I add my static control to the status bar and doint what i want... so, how can I add the items in the status bar ?
------------- Regards,
Jigar Mehta
|
Posted By: jigarmehtamscit
Date Posted: 25 November 2005 at 2:04pm
oleg wrote:
Why you need static text, if you can update text directly to status bar
m_wndStatusBar.SetPaneText(...) ? |
What if we want to set the m_wndStatusBar.SetPaneText from a global thread ?? Following is my code for reference..
UINT threadBackgroundTask(LPVOID lParam) { CAppGUIDlg *pDlg; pDlg = (CAppGUIDlg *)lParam;
while(1) { if(pDlg != NULL) { pDlg->m_wndStatusBar.SetPaneText(4, "Jigar"); Sleep(1000); } } return 0; }
And this thread is started from my dialog,
pBgThread = AfxBeginThread(threadBackgroundTask, this, THREAD_PRIORITY_NORMAL );
where I pass pointer to the dialog to the thread..
Now, the execution gives abort dialog while checking for ASSERT(this)..
So, does it mean that we can not access statusbar object from the global thread.. ?? I can not make the therad as the member of the class.. So, please suggest me the solution..
------------- Regards,
Jigar Mehta
|
Posted By: Oleg
Date Posted: 26 November 2005 at 6:45am
|
SetPaneText can be called only from thread created status bar,
but you can send some message like:
#deifne MY_TEXT_CHANGED (WM_APP + 2)
pDlg->SendMessage(MY_TEXT_CHANGED);
and in CAppGUIDlg catch it and set status text.
------------- Oleg, Support Team CODEJOCK SOFTWARE SOLUTIONS
|
Posted By: jigarmehtamscit
Date Posted: 26 November 2005 at 1:10pm
Ok.. thx.. I did that and now its working.. Thx for the help..
------------- Regards,
Jigar Mehta
|
|