|
Is mnuPop valid and what return values of mnuSubMenu
|
|
|
|
|
Sunshine Always wrote: how do i disable a submenu item when i select another submenu item?
you cannot hide/unhide teh menu item on runtime.. except if you creating menu on runtime.. you only can disable and enable the menu item
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and you
|
|
|
|
|
HI
I read unicode string in str(TCHAR *str).How can i convert it into ascii.
|
|
|
|
|
You mean something like W2A() ?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
knowing that he's using TCHAR string, i'd say T2A() instead
|
|
|
|
|
asdtry wrote: I read unicode string in str(TCHAR *str).How can i convert it into ascii.
wcstomcs
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and you
|
|
|
|
|
I've created a menu called Tools where in I have created a menu item called Preferences. If we click the Prefernces menu item Preferences Dialog Box will open. In that Dialog Box I have an edit box. The message entered in this edit box is displayed in the second panel of the status bar (i.e) panel no.1.
My Requirement is:
The second panel should be of a default size and it should grow according to the length of the message entered in the edit box.
How can I achieve this in MFC? Can any one help?
|
|
|
|
|
Use
CStatusBar::SetPaneInfo( int nIndex, UINT nID, UINT nStyle, int cxWidth );
|
|
|
|
|
you just need to do it as follows:
void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI)
{
CString strValue;
strValue.Format("%s", message.GetString());
pCmdUI->Enable(TRUE);
pCmdUI->SetText(strValue);
CDC* pDC = m_wndStatusBar.GetDC();
CSize mSize = pDC->GetTextExtent(strValue);
m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_NORMAL, mSize.cx);
}
freeman
|
|
|
|
|
void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI)
{
char str1[150];
CString strValue;
//strValue.SetLength(100);
strValue.Format("%s", message.GetString());
//sprintf(str1, "%s",message.GetString());
pCmdUI->Enable(TRUE);
pCmdUI->SetText(strValue);
CDC* pDC = m_wndStatusBar.GetDC();
CSize mSize = pDC->GetTextExtent(strValue);
m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_NORMAL, mSize.cx);
//m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len);
}
When I add this code I got an exception stating ,
'Unhandled exception at 0x7c1d71bb (MFC71.dll) in Perspective.exe: 0xC0000005: Access violation writing location 0x00000014.'
When I break this exception, it ends in a class barstat.cpp which is not created by me.
Also this exception occurs only when we add the status bar variable(m_wndStatusBar) to this class CPerspectiveDoc.
The Status Bar Pane is created in some other class.
How to resolve this?
Pls help
-- modified at 4:01 Tuesday 6th February, 2007
|
|
|
|
|
Oh, dear friend, I think u've made a mistake! In my opinion, the CDoc class in your project is constructed before the CMainFrame class, and the status bar is created in Oncreate() function of the CMainFrame class. So, you'd used a status object before you created it. Am I right?
OK, U can resolve this by many methods.there r 2 simple resolutions follow:
1. U can do this in the CMainFrame class after the status bar object is created.
2. U can do it in the CView class as the same.
-- modified at 4:36 Tuesday 6th February, 2007
freeman
|
|
|
|
|
Hello,everyone! I want to ask a question about my practice. I created some string entries in the string table such as IDS_STRING1,IDS_STRING2,IDS_STRING3... .Now, I want to load one of them for the CString object by a string I specified. for example, the string I specified was "IDS_STRING1" , how can I convert "IDS_STRING1" to the right Resource ID? Thank u so much!
freeman
|
|
|
|
|
i'm not sure at all to understand what you want.
if i'm right, you want to get the actual string behing the string ID in the resource string table.
for this, 2 solutions :
CString::LoadString()
or
CString::Format()
|
|
|
|
|
Thank u for your reply, I wish u a good day!
freeman
|
|
|
|
|
See if this answers your question....
Answer 1:
CString Str;
Str.Format(IDS_STRING1);
Answer 2:
CString str;
if (! str.LoadString( IDS_STRING1 ))
{
AfxMessageBox("Error Loading String: IDS_STRING1");
...
}
|
|
|
|
|
Thank u all the same!
freeman
|
|
|
|
|
In additional with other members after reads Resource with CString::Load on the loop you can read all strings for example
IDS_STRING1 has "one,two,three,four,"
now on a loop set for find , in this string and reads all strings
|
|
|
|
|
Thanks! God will bless u.
freeman
|
|
|
|
|
You're welcome
|
|
|
|
|
There's no automatic way to do that. You'll basically need a lookup table to know that "IDS_STRING1" should be mapped to 101 or whatever the numeric value is.
|
|
|
|
|
Thank u, u get my idear!I know how to resolve it now.
freeman
|
|
|
|
|
Hi
friends
can any one please tell me how to convert string data from
utf-8 to unicode 16 bit format?
i need it ,its very urgent.
Thanx
tunu
|
|
|
|
|
use WideCharToMultiByte()
nave
|
|
|
|
|
|
Actually, MultiByteToWideChar() is the right API. WideCharToMultiByte() goes the other way.
|
|
|
|